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

kdb+ 十大迷思揭秘

kdb中文教程 2021-01-18
1526

注:编译自https://blog.neueda.com/kdb/kdb-10-myths-debunked,作者Patrick Dooher


如果您不熟悉kdb+,则可能会出于多种不同的原因而怀疑它。也许您认为,它仅用于金融行业,其处理能力被过分夸大,或者只是不喜欢它的外观。本文将回答这类常见问题:


1. 没有支持服务

Kx在网站https://code.kx.com上发布了各类文档,从kdb+入门指南到综合应用,应有尽有。多年来,kdb+开发人员发表许多技术博客和白皮书,以支持kdb+的各种可能应用。同时,大量用户在StackOverflow、Quora、Google论坛等分享他们的kdb+使用经验。另外,kx推荐了5本kdb+书籍(详见https://code.kx.com/q/learn/#books):

  1. 《kdb+中文教程》

  2. Fun Q

  3. Machine Learning and Big Data with kdb+/q

  4. Q for Mortals

  5. Q Tips


2. 没有IDE?


由于大多数kdb+例子是使用控制台演示的,您可能会因此认为kdb+代码只能在控制台上执行,事实并非如此,在哪里执行kdb+代码是个人喜好,对于希望使用IDE的开发人员来说,有多种选择。免费的常见IDE有:

Studio for kdb+ : https://github.com/CharlesSkelton/studio

qPad : http://www.qinsightpad.com/

Kx Developer : https://code.kx.com/developer/

JupyterQ : https://github.com/KxSystems/jupyterq/ 

IntelliJ IDE : https://plugins.jetbrains.com/plugin/7925-q

……

3. 实施难度大


kdb+广泛应用于金融行业,解决了一些大数据处理和分析中遇到的最复杂的问题。大量现最佳实践系统被开发出来,同时线上有许多内容可以指导kdb+开发人员解决问题和发现新想法。


对于熟悉其他技术的开发人员来说,最难的地方是,kdb+处理事情的方式略有不同。例如,kdb+放弃循环思路而改用功能强大的副词(迭代操作),从右向左写代码和执行,q的简洁性等,这些一开始都是令人生畏的,但是一旦掌握了这些概念,便会发现kdb+的功能无与伦比。


4. 调试困难?


自kdb+v3.5发布以来,kdb+代码调试十分简单,该版本包含了可视调试器等。Kx Developer IDE也具有方便的调试器。


5. 难以与其他软件交互?


kdb+有各种开放接口可以与其他软件进行交互,其中大多数都带有详尽的使用白皮书,例如:

  • Python (PyQ/embedPy)

  • Java/JDBC

  • ODBC

  • R

  • Kafka

  • JavaScript (WebSockets)

  • C#/C/C++

  • ……

详见https://code.kx.com/q/interfaces/


6. 不能与其他统计软件包一起使用?


上面接口允许将kdb+与大量统计软件包结合起来使用。许多开发人员将kdb+与MATLAB或Python的机器学习工具套件结合在一起,或者与R的quantmod软件包结合起来。详见:https://code.kx.com/q/wp/#interfaces 和 https://code.kx.com/q/interfaces/fusion。


7. 硬件消耗大?


kdb+的独特魅力之一是它可以高效、高频地处理大数据,这可能会令人误解为kdb+需要消耗大量硬件,其实,这完全取决于要处理的数据量。kdb+本身消耗内存非常少,大多数客户都是从4核或8核系统开始使用kdb+的。随着历史数据库的建立,可能需要数TB的存储,但是kdb+十分灵活,它可以使用本地存储、SAN或任何组合,可以使用户在最佳成本和性能收益之间找到平衡。


8. 没有多线程?


自v2.4(2012)起,kdb+已支持多线程。最近,v4.0(2020)原生增加了一个额外级别的多线程,并且用户无需更改代码即可利用它。在高频应用程序中,多线程应用很多,对于在多CPU处理环境中的kdb+架构师来说,多线程是一个重要的工具。如果将多线程应用于低延迟的应用程序将是一个障碍,因为多线程处理的开销将超过收益。


9. 仅用于金融业?


金融业以外的行业也正在寻找解决方案,以满足其大数据需求,而kdb+的占用空间小和灵活性正好可以满足这一需求。如今,kdb+已在从太空探索到世界一级方程式锦标赛,从制药到制造以及从电信到公用事业等广泛的领域中使用。在2019年,阿斯顿·马丁红牛车队宣布了他们的新方案,开始使用kdb+来获取和分析传感器数据(更多信息请参见https://kx.com/news/kx-appointed-innovation-partner-to-aston-martin-red -bull-racing /),甚至美国国家航空航天局(NASA)的Frontier Development Lab也一直在利用kdb+中的机器学习功能(有关更多信息,请访问https://kx.com/news/kx-leverages-ai-to-solve-new-space-challenges /)。


10. 不可能那么快?


kdb+处理大数据的速度非常快,有许多测试可以证明这一点。证券技术分析中心(The Securities Technology Analysis Center ,STAC)研究证券行业的技术挑战和解决方案,并制定技术基准标准。世界上最大的金融机构使用这些工具来决定采用哪种技术来解决其问题。在STAC进行的真实金融数据分析基准测试中,kdb+不断创造记录,特别是它的速度,详细情况见https://stacresearch.com/news/2019/06/16/KDB190430。


我们希望这能解决您关于kdb+的所有紧迫问题,如果还有其他问题无法解决,请与Neueda的kdb+专家团队联系,他们将竭诚为您服务!


学习kdb+,可以从《kdb+中文教程》入手:


《kdb+中文教程》

  全文链接

前言及目录
第一章  简介

第二章  数据类型

第三章  数组

第四章  字典

第五章  函数

第六章  表与qSQL

第七章  I/O操作

第八章  数据库

第九章  应用例子

第十章  问答(含参考文献)

《kdb+中文教程》

主要内容

kdb+号称是世界上最快的内存数据库,q是kdb+的内置语言。事实上kdb+/q不只是内存数据库,更是一款高性能大数据平台,它使用统一的数据库处理实时数据和历史数据,同时具备CEP(复杂事件处理)引擎、内存数据库、磁盘数据库等功能。与传统关系数据库及现代大数据平台相比,kdb+/q具有更快的速度和更低的总拥有成本,非常适合海量数据的快速采集、存储、分析、处理和检索等。kdb+/q最初主要被用于金融机构海量数据分析和高频交易,目前被广泛用于人工智能、机器学习、物联网、智能电网、航天等领域。


《kdb+中文教程》是一本关于kdb+/q的中文入门书籍,内容分为三大部分:


第一部分(第一章)为kdb+/q简介,主要介绍kdb+/q的优势及不同许可类型,同时介绍了kdb+/q的下载、安装、基本操作及数据表操作等。通过学习本章,读者可以快速了解kdb+/q的特性,同时对kdb+/q的独特、简洁等有一个初步直观感受。


第二章至第八章为第二部分,是本书的核心内容,分别为数据类型、数组、函数、字典、表与qSQL、I/O操作及数据库。首先介绍了kdb+/q的基本数据类型,然后介绍了kdb+/q的数组(列表)、函数、字典、表,最后介绍了文件I/O操作、进程间通讯、数据库构建等。通过这部分内容的学习,读者可以掌握kdb+/q的基础知识,为kdb+/q的运用打下坚实基础,逐步将kdb+应用于实际场景,同时能进一步感受kdb+/q的简洁、灵活与强大等。


第三部分包括第九章和第十章。第九章通过实例介绍kdb+在股票期货数据处理方面的常见应用,包括历史行情数据库构建、策略回测与优化、实时行情处理等,并简单介绍了企业级开源证券期货交易平台Tx。第十章把一些可能有用的知识点以问答形式列出来,方便读者需要时查找。通过这部分内容的学习,读者可以参考常见应用实例,举一反三。






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

评论