KDB/Q是啥语言( 二 )


? 原生64位元架构 - - - 这是管理今时今日数据量的必要条件。旧日的32位元系统根本无法跟上。
? 内置多核心处理和多线程。效能是跟中央处理器(CPU)的数目成正比,应用程序能利用多核心处理器的优势,而无需编写特殊的多线程程序。
? 支持并行访问庞大的分割式历史数据库,所以能将查询分配至多个内核或多台机器。
? 列式结构数据库简化了索引与连接,显着提高搜索速度。
? 发布和订阅机制把操作从主服务器卸载到一连串的服务器上,并能够提供数据服务给几乎无限量的用户端。
? 一个单一的解决方案就可应用于实时及历史数据和分析。尽量减少数据从接收至完成分析的所需时间是极为重要的---而这是取决于能否把由一个进程到另一个进程之间的所需步骤减至最小。kdb+能处理一切事务---数据采集、存储、日志、事件处理、分析、实时和历史数据库。
? 基本数据类型有日期、时间和时间戳(至纳秒),这使得时间序列分析极其快速。
? 每秒钟能处理数以百万计的记录,而每天则以十亿计。历史数据库的记录则以万亿计。它的速度能应付最高的数据流量,更可以配合硬件加速器以获得最高速度和最大的灵活性。
? 批量插入与更新优化(不是简单的每次一笔交易)。交易数据通常是整块地到达,又无需逐笔逐笔地写入。此外,数据库不必离线,就可以进行批量交易。
? 动态索引让kdb+能有效地利用实时数据。
二、
kdb+ 的发展是由客户的需求所推动的,它在市场上保持着显著的领先地位。最新的3.0版本,包括增强在运行英特尔最新的处理器时处理速度有相当大的改进,GUID/UUID(唯一标识符,促进了分布式系统的设计)和简化了对数十亿条记录的存储以及支持WebSocket。
? 在执行时, kdb+ 的优化代码使用了处理器提供的特殊指令: 当使用英特尔最新一代的 Sandy Bridge 系列处理器时,利用英特尔的高级矢量扩展(AVX)和SSE指令集执行计算时,测试中会发现速度有非常显着的提升。
? 新增的UUID作为一种基本数据类型,对分布式系统是特别有用的。UUID可独特标识不同的记录,例如订单交易标识和确认标识等,让分布式处理更加有效,也让系统的设计更简单直截。
? 在外汇和股票市场上,金融衍生工具、交易量、以及监管要求的不断增加,要求机构需要存储和分析大量的数据。这存储的改进简化了每天需要处理数十亿条记录之大型系统的设计和实施。
? 支持Websocket 允许浏览器和应用程序之间作出直接,双向和全双工之连接。这提供了比HTTP/AJAX更大的扩展性和更快的处理速度。这对基于浏览器的高性能应用程序特别有用,例如实时数据可视化应用程序。
三、分析引擎
kdb+包含一个可直接支持数据库的通用编程语言q。对比那些必须使用传统SQ L 数据库语言或须依赖供应商所预先编写的查询程式之用户来说,这有莫大的优势。有了q,用户可以对急切的需要作出快速的反应。
? q可以直接对数据作出运算,最大限度的减少通信流量。它毋需先读取数据,然后再送到外部的程式进行分析。当接收数到据时,就能马上进行事件处理。
? 列表、字典和资料表都是原始数据类型,而其核心原语是专为此类数据而设计,例如对资料表作算术运算。单一操作就能作用于100万笔记录上,就像操作一笔记录那么容易。
? 该语言内置的时间数据类型,高度优化了对时间序列数据的查询。
? 数据属性,例如“已排序”可作用于列以优化其性能。
? q 有类似SQL的数据库查询,而且其功能更超越传统的SQL。
? q 的互动环境提供对“快速开发”所必须的“即时反馈”。
四、实时数据处理kdb+tick
kdb+有一个kdb+tick模块以能最佳地利用 kdb+与tick数据(实时数据流)。
? kdb+ tick 每秒能采集、管理和分析数百万笔记录——从容地应付任何交换所的高峰时期---及万亿字节(TB)计的历史数据。


推荐阅读