DolphinDB在工业物联网的应用

2022-04-28 00:00:00 数据 分布式 计算 运算 实时

1. 工业物联网的数据特点和痛点

工业物联网的数据采集有着频率高、设备多、维度高的特点,数据量非常大,对系统的吞吐量有很高的要求。同时工业物联网往往需要系统能够实时处理数据,对系统预警,监控,甚至反控。不少系统还需要提供图形化终端供操作工人实时监控设备的运行,这给整个系统带来了更大的压力。对于采集到的海量历史数据,通常还需要进行离线的建模和分析。因此,工业物联网的数据平台有着非常苛刻的要求,既要有非常高的吞吐量,又要有较低的延时;既要能够实时处理流数据,又要能够处理海量的历史数据;既要满足简单的点查询的要求,又要满足批量数据复杂分析的要求。

传统的事务型数据库,比如SQL Server、Oracle和MySQL,无法满足高吞吐量的数据写入和海量数据的分析。即使数据量较小,能满足数据写入的要求,也不能同时响应实时计算的请求。

Hadoop生态提供了消息引擎、实时数据写入、流数据计算、离线数据仓库、离线数据计算等多个部件。这些大数据系统组合起来,可以解决工业物联网的数据平台问题。但这样的方案过于庞大和臃肿,实施和运维的成本很高。

2.DolphinDB的工业物联网解决方案

DolphinDB database 作为一个高性能的分布式时序数据库,为工业物联网的数据存储和计算提供了一个强大的基础平台。

  • DolphinDB的分布式数据库可以方便的支持水平扩展和垂直扩展,系统的吞吐量和支持的数据量可以近乎无限的扩展。
  • DolphinDB的流计算引擎支持实时流计算处理。内置的聚合引擎可以按指定的时间窗口大小和频率来计算各种聚合指标。聚合既可以是时间轴上(从高频到低频)的纵向聚合,也可以是多个维度的横向聚合。
  • DolphinDB的内存数据库可以支持数据的快速写入,查询和计算。例如聚合引擎的结果可以输出到一个内存表,接受前端BI(如Grafana)的的秒级轮询指令。
  • DolphinDB集数据库、分布式计算和编程语言于一体,可以在库内快速的完成复杂的分布式计算,例如回归和分类。这大大加快了海量历史数据的离线分析和建模。
  • DolphinDB也实现了与部分开源或商业化的BI工具的接口。方便用户可视化或监控设备数据。

3.案例综述

企业的生产车间内总共有1000个传感设备,每个设备每10ms采集一次数据,为简化demo脚本,假设采集的数据仅有三个维度,均为温度。需要完成的任务包括:

  • 将采集到的原始数据存入数据库。离线的数据建模需要用到这些历史数据。
  • 实时计算每个设备过去一分钟的平均温度指标,计算的频率为每两秒钟要进行一次。
  • 因为设备的操作工需要在快的时间内掌握温度变化,所以前端展示界面每秒查询一次实时运算的结果并刷新温度变化趋势图。

4.案例实施

4.1 系统的功能模块设计

针对上述的案例,我们首先要启用DolphinDB的分布式数据库,创建一个命名为iotDemoDB的分布式数据库用于保存采集的实时数据。数据库按日期和设备两个维度进行数据分区。日期采用值分区,设备采用范围分区。日后清理过期数据,只要简单的删除旧的日期分区就可完成。

启用流数据发布和订阅功能。订阅高频数据流做实时计算。createStreamingAggregator函数能创建一个指标聚合引擎,用于实时计算。我们在案例里指定计算窗口大小是1分钟,每2秒钟运算一次过往1分钟的温度均值,然后将运算结果保存到低频数据表中,供前端轮询。

部署前端Grafana平台展示运算结果的趋势图,设置每1秒钟轮询一次DolphinDB Server,并刷新展示界面。

4.2 服务器部署

在本次demo里,为了使用分布式数据库,我们需要使用一个单机多节点集群,可以参考单机多节点集群部署指南。这里我们配置了1个controller+1个agent+4个datanode的集群,下面列出主要的配置文件内容供参考:

cluster.nodes:

localSite,mode
localhost:8701:agent1,agent
localhost:8081:node1,datanode
localhost:8083:node2,datanode
localhost:8082:node3,datanode
localhost:8084:node4,datanode

相关文章