DolphinDB流数据教程

2022-04-28 00:00:00 数据 订阅 发布 持久 数据表

实时流处理一般是将业务系统产生的数据进行实时收集,交由流处理框架进行数据清洗,统计,入库,并可以通过可视化的方式对统计结果进行实时的展示。传统的面向静态数据表的计算引擎无法胜任流数据领域的分析和计算任务。在金融交易、物联网、互联网/移动互联网等应用场景中,复杂的业务需求对大数据处理的实时性提出了更高的要求。对于这一类高实时性需求的场景,需要一个快速、高效、灵活可控的流式大数据处理平台来支撑。

DolphinDB内置的流数据框架支持流数据发布、订阅、流数据预处理、实时内存计算、复杂指标的滚动窗口计算等,是一个运行高效,使用便捷的流数据处理框架。

与其它流数据系统相比,DolphinDB database 流数据处理系统的优点在于:

  • 吞吐量大,低延迟
  • 与时序数据库及数据仓库集成,一站式解决方案
  • 天然具备流表对偶性,支持SQL语句数据注入和查询分析

本教程包含以下内容:

  • DolphinDB流数据框架及概念
  • 使用DolphinDB流数据
  • 使用Java API来订阅DolphinDB流数据
  • 监控流数据运行状态
  • 流数据性能调优
  • 与开源系统Grafana结合使用

1. DolphinDB流数据框架及概念

流数据框架对流数据的管理和应用是基于发布-订阅-消费的模式,通过流数据表来发布数据,数据节点或者第三方的应用可以通过DolphinDB脚本或者 API来订阅消费流数据。

上图展示了DolphinDB的流数据处理框架。把实时数据注入到发布节点流数据表后,发布的数据可以同时供多方订阅消费:

  • 可由数据仓库订阅并保存,作为分析系统与报表系统的数据源。
  • 可以由聚合引擎订阅,进行聚合计算,并将聚合结果输出到流数据表。聚合结果既可以由Grafana等流数据展示平台展示,也可以作为数据源再次发布出去,供二次订阅做事件处理。
  • 也可由API订阅,例如第三方的Java应用程序可以通过Java API订阅流数据,应用到业务系统中。

1.1 实时流数据表

DolphinDB实时流数据表可以作为发布和订阅流数据的载体,发布一条消息等价于往流数据表插入一条记录,同时它也可以通过SQL来进行查询和分析。

1.2 发布和订阅

DolphinDB的流数据框架使用了经典的订阅发布模式。每当有新的流数据写入时,发布方会通知所有的订阅方去处理新的流数据。数据节点通过subscribeTable函数来订阅发布的流数据。

1.3 实时聚合引擎

实时聚合引擎指的是专门用于处理流数据实时计算和分析的模块。DolphinDB提供createStreamAggregator函数用于持续地对流数据做实时聚合计算,并且将计算结果持续输出到指定的数据表中,具体如何使用聚合引擎可以参考流数据聚合引擎教程。

2. 使用DolphinDB流数据

要开启DolphinDB支持流数据功能的模块,需要对DolphinDB数据节点增加配置项。

对于发布节点需要的配置项:

maxPubConnections:发布信息节点能够连接的大节点数。如果maxPubConnections>0,节点可以作为信息发布节点。默认值为0。
persisitenceDir:共享的流数据表保存的路径。如果需要保存流数据表,必须指定该参数。
persistenceWorkerNum:负责以异步模式保存流数据表的工作线程数。默认值为0。
maxPersistenceQueueDepth:异步保存流数据表时,允许的大消息队列深度。
maxMsgNumPerBlock:当服务器发布或组合消息时,消息块中的大记录数。
maxPubQueueDepthPerSite:发布节点可容许的大消息队列深度。

相关文章