暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Kx Systems:对速度的不懈追求

kdb中文教程 2021-01-23
773
翻译一篇文章,作者为Alex Woodie,原文链接:https://www.datanami.com/2020/10/29/kx-systems-a-historical-need-for-speed/
Kx Systems既不是一家新公司,也不是开源技术的大力支持者。但是,如果可以用一句话来描述Kx Systems及其成功帮助客户开发大数据分析和机器学习系统的方法,那就是它对速度的不懈追求。
速度”是Kx Systems的座右铭,也是它与其他高级分析软件提供商的差异所在。速度是华尔街投资银行和欧洲一级方程式赛车队都使用该公司平台的原因,该平台结合了数据库、编程语言以及一系列支持机器学习、实时分析和其他有趣功能的组件。
Kx系统的悠久历史可以追溯到20世纪60年代,当时年轻的Arthur Whitney首次接触编程。Whitney的父亲是Kenneth Iverson的朋友,Kenneth Iverson是APL(一种面向数组编程语言)的创建者。Iverson在IBM时,基于他在哈佛读书时对数组操作数学模型的研究,开发了APL。
从计算机协会(Association of Computing Machinery,ACM)2009年4月发布的一段对Whitney的采访中可以了解到,Whitney早在1969年,11岁时就很幸运地从Iverson那里拿到了用APL进行互动编程的演示代码。在20世纪80年代,Whitney继续与Iverson在APL方面合作,Iverson因其在APL上的工作获得了图灵奖。但是Whitney认为他的真正的爱好是纯粹的数学,因此他进入多伦多大学并参加了该校的数学研究生项目。
直到1988年Whitney离开学校加入摩根士丹利,他才再次从事APL相关的工作,并最终使他踏上了基于APL开发A+、k和q三种新语言的历程。
根据ACM的采访,摩根士丹利拥有全球最大的交易业务,并拥有1TB的交易数据,在当时,这是一个相当大的数据集。Whitney曾尝试使用其他语言,但最终选择了用APL编写一个分析逐笔数据的程序,为摩根士丹利及其十亿美元投资组合寻找交易机会。
在摩根士丹利,Whitney继续开发基于APL的其他几种语言,包括A+,该语言用于将APL应用程序从IBM大型机迁移到Sun工作站。他还创建了一种名为k的语言,与A+一样,非常简洁,旨在以闪电般速度处理时间序列数据。
Whitney在ACM采访中说:“我的目标始终是创造一种通用的编程语言,它可以解决所有问题,属于解释型语言,但速度很快。”

始于速度
1993年,Whitney离开摩根士丹利,与他人一起创立了Kx Systems,目标是将k语言商业化。该公司与瑞士银行UBS签订了独家合同,开发基于k的交易系统。合同结束一年后,也就是1998年,Kx Systems发布了基于k的专有数据库kdb。
在2003年,Kx Systems发布q语言,q被设计用于kdb+数据库,是k语言的后续版本。相较于k的紧凑、简洁,q稍为冗长一些,因此更具可读性,但速度一样快。
该公司的主要客户仍然是需要快速分析大量数据的华尔街银行。随着交易量和可用数据的增长,银行转向Kx Systems这类公司来帮助他们开发算法交易策略。
Kx Systems首席产品官Dan Seal说,早在“大数据”一词流行前20年,Kx Systems一直在帮助其客户解决“大数据”问题。
“当我第一次看到‘大数据’进入市场时,我真的很困惑,因为我看到这些人谈论的数据集对我来说并没有那么大,而且他们的能力似乎很有限”,Seal在最近一次与Datanami访谈中说道。
早在2000年Seal还在读大学时,Kx Systems就在销售分布式系统,这些系统可以实时处理流数据,同时保留历史数据。
Seal说,这是许多公司至今仍在努力解决的问题。他们之所以艰难,是因为他们不得不拼凑多个系统来获得这种能力。然而Kx Systems通过集成的一套软件(stack)提供了所有能力——当然是专有的、管用的软件。

Kx Systems的联合创始人Arthur Whitney受Kenneth Iverson的APL影响很大。

 
效率与规模
许多交易公司仍在使用Kx Systems的软件,但数据规模已远远超过Whitney早期在摩根士丹利工作时处理的数据。如今,交易者必须每秒处理数百万个事件,交易引擎的决策时间窗口以微秒计算。交易模型在GPU和FPGA上实现,以最大化性能。

Kx Systems的软件最初用于在华尔街投资银行实施算法交易策略。
 
当大数据之战在华尔街上继续进行的时候,其他行业也开始找到Kx Systems来帮助他们开发高度定制的应用程序,以处理大量输入数据和大型历史数据集。今天,Kx Systems正在帮助各行各业的客户处理时间序列数据。其中包括日志捕获、网络分析、网络安全、航天和物联网(包括智能互联汽车/车联网)。

阿斯顿·马丁红牛车队使用kx软件分析每场比赛每辆车上600个传感器产生的180亿条数据。
 
Seal说,这些不同行业的共同点是数据的性质。“这是很有趣的事情。从‘时间序列是金融市场的小众事物’到人们突然意识到,实际上整个世界都是以时间为导向的。”Seal说,“时间序列是我们整个世界的数字化。无论是来自网站的点击流数据,还是来自Splunk的日志存储,一切都是基于时间的分析。”
从数据仓库和NoSQL数据库供应商到流分析平台和内存数据网格,许多供应商都在尝试解决这个问题。但是他们倾向于从历史或实时的角度解决问题。而Kx Systems选择中间的道路,从构建基于自有快速语言的快速数据库平台的角度出发,来同时解决这两个问题。
“分析和聚合实际上是kdb+和Kx的核心,尤其是在基于时间的操作上。”Seal说,“当Arthur Whitney构建一门编程语言时,他试图做的事情的核心就是:为数据科学和数据分析构建快速的聚合和分析语言。”
例如,如果你想查看某只股票某一笔成交(trade)发生时的委托报价(quote),需要对trade和quote两个数据集进行基于时间的关联,每个数据集可能都有数千万或数亿行。
Seal说:“如果你尝试在传统的SQL数据库中进行操作,你需要对两个数据集进行排序,从而可以看到成交时的报价,这需要写许多代码。而在kdb+中,用一个内置函数就可以实现(“aj/asof join”函数可以查询截止至某个特定时间点的状态)。”
物联网可能是Kx Systems的下一个重大机遇。例如,无人驾驶汽车和互联汽车需要这样一个数据平台:既能够基于输入数据进行快速决策,又能时刻关注于训练机器学习模型数据。许多供应商正在开发新产品或重新定位旧产品,以应对新机遇。

又快又小
Seal对于Microsoft夸其Sql Server Edge版占用内存小于500MB感到惊讶。他说:“我们核心数据库和编程语言占用空间为500KB而已,即0.5MB。”
Seal提醒,这不是指为你提供完整kx分析套件。这是你完成连接传感器、收集数据并进行即时分析等核心功能所需的所有空间,其他繁重的工作则是在云或客户数据中心等完整环境中运行。

Kx实时分析系统是一套完整、专有的软件(但你仍然可以在其中使用你的Python模型)
 
简而言之,这就是Kx Systems的主要价值。为了获得高性能,你需要从一开始就考虑速度,并围绕该原则进行所有的设计。Seal说,如果仅解决其中的某一个难题,就不能从整体的角度解决所有问题。
“数据科学和定量研究的主要成果是可供企业应用的新的分析模型和机器学习模型。”Seal说,“我们的一体化流分析平台不仅涵盖了数PB的历史数据集和数据科学沙箱,而且还具有足够快、可扩展和可靠的特性,可直接供开发人员使用,作为其应用程序的一个集成部分。除非你能覆盖全部工作负载,否则你只能解决部分问题,而不能解决所有的分析问题。”

文章转载自kdb中文教程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论