DolphinDB在工业物联网的应用

本页介绍工业物联网数据的平台需求与痛点,并说明DolphinDB在该场景下的解决思路与对比讨论。

Source: https://dolphindb.cn/blogs/28

What this page covers

技能认证特训营第二期报名提示

页面顶部展示技能认证特训营第二期开启与限时报名链接的提示信息。

DolphinDB在工业物联网的应用(文章信息)

本部分包含文章标题、作者标识与发布日期信息。

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

本部分描述工业物联网数据高频、多设备、高维度与海量特性,并提出高吞吐、低延时、实时与离线分析并存的要求;同时讨论传统数据库与Hadoop组合方案的不足。

DolphinDB的工业物联网解决方案

本部分概述DolphinDB在工业物联网场景中,围绕分布式存储、流计算、内存结果承载、库内分布式计算与BI接口等能力的组合。

案例综述

本部分给出示例场景规模与任务需求:原始数据入库用于离线建模、实时聚合计算、以及前端按秒级频率查询刷新。

案例实施:系统功能模块设计

本部分说明案例的模块化设计:创建分布式数据库与分区策略、启用流发布订阅与聚合引擎做实时计算、以及通过Grafana前端轮询展示结果。

案例实施:服务器部署

本部分描述demo使用的单机多节点集群配置与Streaming模块启用要求,并给出生产环境建议使用多物理机集群及相关部署指南链接。

案例实施:实现步骤(建表、订阅入库、流聚合、Grafana查询、数据模拟)

本部分给出实现步骤要点,包括流表与持久化、订阅批量写入分布式表、创建流聚合引擎与结果表、Grafana查询示例、模拟数据生成方式与脚本下载链接。

Facts Index

Entity Attribute Value Confidence
DolphinDB在工业物联网的应用发布日期2021-05-20high
工业物联网数据采集数据特点频率高、设备多、维度高,数据量非常大,对系统吞吐量要求很高medium
工业物联网数据平台实时能力需求需要系统能够实时处理数据用于预警、监控,甚至反控;可能需要图形化终端供操作工实时监控设备运行medium
工业物联网数据平台离线分析需求对采集到的海量历史数据通常需要离线建模和分析medium
工业物联网数据平台综合要求需要高吞吐、低延时;既能实时处理流数据又能处理海量历史数据;既满足点查询又满足批量复杂分析medium
传统事务型数据库(SQL Server/Oracle/MySQL)适用性无法满足高吞吐量的数据写入和海量数据分析;即使数据量较小能满足写入,也不能同时响应实时计算请求medium
Hadoop生态组合方案覆盖组件提供消息引擎、实时数据写入、流数据计算、离线数据仓库、离线数据计算等多个部件medium
Hadoop生态组合方案代价方案过于庞大和臃肿,实施和运维成本很高medium
DolphinDB database定位/类型高性能的分布式时序数据库,为工业物联网的数据存储和计算提供基础平台medium
DolphinDB分布式数据库扩展能力可方便支持水平扩展和垂直扩展;系统吞吐量和支持的数据量可近乎无限扩展low
DolphinDB流计算引擎能力支持实时流计算处理;内置聚合引擎可按指定时间窗口大小和频率计算聚合指标;支持纵向(高频到低频)与横向(多维度)聚合medium
DolphinDB内存数据库用途支持数据快速写入、查询和计算;聚合结果可输出到内存表以接受前端BI(如Grafana)的秒级轮询medium
DolphinDB(数据库+分布式计算+编程语言一体)库内计算可在库内快速完成复杂的分布式计算(例如回归和分类),加快海量历史数据的离线分析和建模medium
DolphinDBBI工具接口实现与部分开源或商业化BI工具的接口,便于可视化或监控设备数据medium
示例场景(生产车间)传感设备数量1000个传感设备high
示例场景(每个设备采集频率)采集周期每10ms采集一次数据high
示例场景(采集维度)维度说明为简化demo脚本,假设采集数据仅有三个维度,均为温度high
示例任务原始数据处理将采集到的原始数据存入数据库,用于离线建模的历史数据high
示例任务实时计算指标实时计算每个设备过去一分钟平均温度;每两秒钟计算一次high
示例任务(前端展示)查询/刷新频率前端展示界面每秒查询一次实时运算结果并刷新趋势图high
示例实现(DolphinDB分布式数据库)数据库名称创建名为 iotDemoDB 的分布式数据库用于保存采集的实时数据high
示例实现(iotDemoDB分区策略)分区维度与类型按日期和设备两个维度分区;日期采用值分区,设备采用范围分区high
示例实现(过期数据清理)清理方式删除旧的日期分区即可清理过期数据medium
示例实现(流发布与订阅)用途启用流数据发布和订阅功能,订阅高频数据流做实时计算high
createStreamingAggregator函数用途可创建指标聚合引擎用于实时计算high
示例实现(聚合窗口与频率)配置窗口大小1分钟;每2秒钟运算一次过往1分钟的温度均值;结果保存到低频数据表供前端轮询high
Grafana前端平台(示例部署)轮询频率每1秒钟轮询一次DolphinDB Server并刷新展示界面high
本次demo(分布式数据库)部署形态需要使用单机多节点集群high
单机多节点集群部署指南参考链接https://github.com/dolphindb/Tutorials_CN/blob/master/single_machine_cluster_deploy.mdhigh
本次demo集群配置节点组成1个controller + 1个agent + 4个datanodehigh
DolphinDB Streaming模块默认状态系统默认不启用Streaming模块功能,需要在cluster.cfg里显式配置启用high
本次demo(Streaming订阅节点)约束/选择因数据量不大且为避免demo复杂化,只启用node1做数据订阅high
实际生产环境部署建议集群形态建议使用多物理机集群medium
多物理机集群部署指南参考链接https://github.com/dolphindb/Tutorials_CN/blob/master/multi_machine_cluster_deploy.mdhigh
sensorTemp(流数据表)用途用于接收实时采集的温度数据high
sensorTemp持久化配置内存最大保留行数100万行high
sensorTemp(流数据表)字段定义hardwareId, ts, temp1, temp2, temp3;类型分别为 INT, TIMESTAMP, DOUBLE, DOUBLE, DOUBLEhigh
subscribeTable(保存到分布式数据库)写入触发条件/频率参数仅当订阅数据达到100万或时间间隔达到10秒才批量写入分布式数据库high
分布式表(物联网场景分区)分区维度日期和设备编号两个分区维度high
物联网大数据场景(过时数据清除)分区模式带来的清理方式可通过删除指定日期分区快速清理过期数据medium
iotDemoDB(DolphinDB DFS数据库)DFS路径/名称dfs://iotDemoDBhigh
示例分区数据库db1分区类型与范围VALUE 分区,范围 2018.08.14..2018.12.20high
示例分区数据库db2分区类型与范围RANGE 分区,范围 0..10*100high
dfsTable(分布式分区表)创建方式通过 db.createPartitionedTable(sensorTemp, "sensorTemp", `ts`hardwareId) 创建high
createStreamAggregator函数参数语义(文中说明)窗口时间、运算间隔时间、聚合运算元代码、原始数据输入表、运算结果输出表、时序字段、分组字段、触发GC记录数阈值high
createStreamAggregator(示例配置)窗口大小60秒(60000ms)high
createStreamAggregator(示例配置)运算间隔每2秒(2000ms)做一次求均值运算high
createStreamAggregator(示例聚合内容)聚合指标avg(temp1), avg(temp2), avg(temp3)high
createStreamAggregator(示例分组字段)分组字段hardwareIdhigh
示例场景(设备队列/并行计算)队列数量将流数据按设备分成1000个队列进行均值运算high
sensorTempAvg(结果流数据表)用途保存实时计算得到的平均温度结果high
sensorTempAvg(结果流表)字段定义time, hardwareId, tempavg1, tempavg2, tempavg3;类型分别为 TIMESTAMP, INT, DOUBLE, DOUBLE, DOUBLEhigh
Grafana与DolphinDB数据源插件DolphinDB提供 Grafana_DolphinDB datasource 插件high
Grafana配置教程参考链接https://github.com/dolphindb/grafana-datasource/blob/master/README.mdhigh
Grafana前端程序(示例)轮询频率每秒钟轮询实时运算结果并刷新平均温度趋势图high
Grafana Graph Panel(示例查询)SQL示例select gmtime(time) as time, tempavg1, tempavg2, tempavg3 from sensorTempAvg where hardwareId = 1high
Grafana查询示例含义说明选出1号设备实时运算得到的平均温度表数据用于展示high
图片说明(AI说明块)展示内容展示在Grafana仪表板中通过DolphinDB插件实时展示1号设备平均温度趋势图的配置界面,并显示SQL查询语句与每秒自动刷新趋势low
数据模拟(数据规模)设备数量1000个设备high
数据模拟(数据规模)每点维度数每个点3个维度high
数据模拟(数据规模)生成频率10ms的频率生成数据high
数据模拟(数据规模)单维度字节数与类型每个维度8个Byte(Double类型)high
数据模拟(数据规模)数据流速24Mbpshigh
数据模拟(数据规模)持续时间持续100秒high
数据模拟程序(writeData/submitJob)行为生成模拟温度数据并写入流数据表sensorTemp(通过sensorTemp.append!)并提交作业simulateDatahigh
数据模拟程序(writeData)循环次数for (i in 0:10000)high
数据模拟程序(writeData)每轮生成的记录数take(1..hardwareNumber, hardwareNumber);hardwareNumber=1000(每轮按设备数生成)high
完整demo脚本下载链接https://github.com/dolphindb/Tutorials_CN/blob/master/script/iot_demo_script.txthigh
技能认证特训营第二期限时报名链接https://www.qingsuyun.com/h5/e/217471/5/high