实时数据处理
解决实时分析问题,通常有两种方法。一种是提前计算可能需要的各种指标,并在内存中缓存。当用户需要的时候快速查询返回。另一种是当用户需要的时候在线计算。DolphinDB采用第二种方法。根据需要的数据量大小以及对低延时的要求,DolphinDB提供了三个实时分析的解决方案:
(1) 数据仓库:利用内置的分布式文件系统,可将数据按多个字段分区,使其均匀的分布到多个节点上,经常引用的热点数据自动缓存在内存。因此,即便数据量级达到TB甚至PB级,选择一小部分数据进行简单的分析,可在毫秒级完成任务。数据仓库采用尾部扩展的列式存储方法,支持秒级批量数据入库。
(2) 内存数据库:与数据仓库不同,所有数据均在内存中,速度更快,一般只存储热点数据或近期数据。
(2) 流计算:根据输入的每个事件(每条记录)实时更新分析结果。流计算在内存中保留最少的数据量,具有最快的分析速度。
这三个实时分析解决方案在DolphinDB中可以配合使用。譬如通过流计算更新指标,这些指标一方面存储在内存数据库中,供前端业务系统快速查询,另一方面批量输出到数据仓库保存满足更为低频和更为复杂的分析。