DolphinDB 1.30.3版本更新:流计算引擎再升级,助你轻松搞定实时计算
作者:互联网
在最近推出的1.30.3版本中,我们针对DolphinDB强大的流数据计算功能进行了改进和升级,让用户在复杂计算场景中(例如金融高频因子实时计算)可以拥有更好的体验。
本次版本更新中主要有4大亮点:
· 流批一体解决方案
· 多引擎流水线处理
· 流引擎快照功能
· 时间序列聚合引擎支持多个时间窗口
流批一体解决方案
量化金融的研究和实盘中,越来越多的机构需要根据高频的行情数据(L1/L2以及逐笔委托数据)来计算量价因子。这些因子通常是有状态的:不仅与当前的多个指标有关,而且与多个指标的历史状态相关。若研发环境(例如python)与生产环境(例如C++)不同,要维护两套代码,对用户是非常沉重的负担。
DolphinDB新引入的响应式状态引擎(reactive state engine),可以高效开发与计算带有状态的高频因子,实现流批统一计算。状态引擎接受在历史数据批量处理(研发阶段)中编写的表达式或函数作为输入,避免了在生产环境中重写代码的高额成本,以及维护研发和生产两套代码的负担。状态引擎确保流式计算的结果与批量计算完全一致,只要在历史数据的批量计算中验证正确,即可保证流数据的实时计算正确,这极大降低了实时计算调试的成本。
多引擎流水线处理
DolphinDB现有内置的流计算引擎包括响应式状态引擎、时间序列聚合引擎、横截面引擎和异常检测引擎。DolphinDB已经通过数据表接口实现了不同引擎间的连接,所以只需将后一个引擎作为前一个引擎的输出,即可方便快捷的实现流水线处理。以金融领域中常见的面板数据(panel data)为例,面板具有时间序列和横截面两个维度,在DolphinDB中我们只需将时间序列聚合引擎和横截面引擎串联起来,以横截面引擎作为时间序列引擎的输出,便可以通过一次操作完成复杂的计算;实现流水线处理后,一些复杂的因子计算也可以得到快速便捷的实现。
流水线处理和多个流表的级联处理有很大的区别。两者可以完成相同的任务,但是效率上有很大的区别:后者涉及多个流数据表与多次订阅;前者实际上只有一次订阅,所有的计算均在一个线程中依次顺序完成,因而有更好的性能。
流引擎快照功能
为了满足生产环境业务持续性的需要,DolphinDB内置的流式计算引擎包括响应式状态引擎均支持快照(snapshot)输出。快照包括已处理的最后一条消息的ID以及引擎当前的状态。当系统出现异常,重新初始化状态引擎时,可恢复到最后一个快照的状态,并且从已处理的消息的下一条开始订阅。
时间序列聚合引擎支持多个时间窗口
新版本允许在一个时间序列聚合引擎中使用包含不同时间窗口的聚合指标,实时的聚合计算更为便捷。例如,1分钟、5分钟和30分钟的聚合操作可以在单一引擎中完成。
标签:状态,聚合,DolphinDB,引擎,计算,1.30,快照 来源: https://blog.51cto.com/u_15022783/2704771