工业物联网的数据特点和痛点
工业物联网的数据采集有着频率高、设施多、维度高的特点,数据量十分大,对系统的吞吐量有很高的要求。同时工业物联网往往须要零碎可能实时处理数据,对系统预警,监控,甚至反控。不少零碎还须要提供图形化终端供操作工人实时监控设施的运行,这给整个零碎带来了更大的压力。对于采集到的海量历史数据,通常还须要进行离线的建模和剖析。因而,工业物联网的数据平台有着十分刻薄的要求,既要有十分高的吞吐量,又要有较低的延时;既要可能实时处理流数据,又要可能解决海量的历史数据;既要满足简略的点查问的要求,又要满足批量数据简单剖析的要求。
传统的事务型数据库,比方 SQL Server、Oracle 和 MySQL,无奈满足高吞吐量的数据写入和海量数据的剖析。即便数据量较小,能满足数据写入的要求,也不能同时响应实时计算的申请。
Hadoop 生态提供了音讯引擎、实时数据写入、流数据计算、离线数据仓库、离线数据计算等多个部件。这些大数据系统组合起来,能够解决工业物联网的数据平台问题。但这样的计划过于宏大和臃肿,施行和运维的老本很高。
数据是工业物联网的血液。然而国内绝大部分的 MES 零碎,以及所谓的智慧工厂,对生产过程中产生的海量的工艺数据,保留不会超过三个月,更不用说进一步对积攒的数据钻研利用了。数据的实时采集、计算和反控则对工业物联网背地的数据平台的实时计算能力提出了很高的要求。传统的关系型数据库,大部分开源的 NoSQL,以及新一代的 NewSQL 离工业物联网数据平台的这两个奢求要求还有较远的间隔。
因而,时序数据库应运而生。以 DolphinDB 为例,用时序数据库作为工业物联网数据后盾时具备以下 7 大人造劣势。
1. 一站式数据解决方案
工业物联网不仅要采集机器产生的工艺数据,还要进行实时计算和预警,并把后果展现给操作员或间接反馈给机器。同时须要将这些原始的工艺数据保留到数据库,供在线或离线查问。积攒大量历史数据后,又能够进行更为简单的大数据挖掘。而这所有都能够在 DolphinDB 一个零碎内实现。下图展现了 DolphinDB database 的数据处理流程。
对于零碎集成商或企业来说,在一套零碎上进行开发和保护,比起在多套零碎上集成、开发和保护,无论是开发成本,保护老本,还是硬件的洽购老本都会低得多。
2. 轻量级跨平台部署
工业物联网平台通常非常复杂。既有便宜的工控机(低配的 PC 或嵌入式零碎),也有服务器或服务器集群。既有边缘计算,也有本地平台部署和云端平台部署。波及的操作系统既有 Linux,也有 Windows。市场上不少开源或商用的时序数据库,以及相干的大数据生态,部件泛滥简单,体积宏大,对软硬件的要求较高。应用一套零碎进行跨平台部署,难度很大。
DolphinDB 是一个十分轻量级的零碎,用 GNU C++ 开发,零碎大小仅 20 余兆,无任何依赖,能够部署在上述任何平台上。这大大节约了零碎集成商的开发和保护老本。
3. 平安可控
工业物联网平台的数据及零碎的平安可控对一个企业,乃至对国家都至关重要。DolphinDB 是一个从零开始,齐全自主研发的分布式时序数据库。从底层的分布式文件系统和存储引擎,到数据库和外围类库,到分布式计算引擎,到脚本语言,到各种编程语言的开发接口,甚至外围的开发集成环境 GUI、集群管理工具都是百分百自主研发的,无任何内部依赖,平安可控。
DolphinDB 除了反对 x86 和 arm 的指令体系外,也在适配 MIPS 指令体系,以反对龙芯等国产 CPU。这样在工业物联网平台上,能够实现软硬件同时自主可控。
4. 海量历史数据存储和解决
工业物联网数据采集的维度高,频率高,设施数量多,数据量特地大,且都是高工夫精度数据。目前制造业应用的 MES 零碎大部分采纳关系型数据库,往往只能保留极短时间内的工艺数据,无奈保留全量高精度数据。数据库系统的限度,导致企业无奈施展历史数据的价值。
DolphinDB database 采纳列式存储,反对数据压缩(压缩率在 20% 左右),最高反对纳秒精度的工夫序列数据处理,单表反对百万级别分区。能够通过减少节点的形式程度扩大 DolphinDB 集群的存储能力和计算能力。DolphinDB 集群反对多正本分布式存储和分布式事务,当一个正本的数据谬误或失落时,启用另一个正本复原,保证数据的高可用和强统一。企业能够利用长年积攒的历史数据进行深度数据挖掘和数据分析,如设施的预测性保护,工艺流程的改良,产品质量的晋升,制作打算的优化等等。
简略的说,在同样的硬件设施上,关系型数据库(Oracle,SQL Server)能够反对亿级的时序数据,DolphinDB 能够反对万亿级的时序数据。
5. 实时流计算
物联网实时采集的数据,能够交给 DolphinDB 的流计算引擎荡涤、实时统计、即时入库,并通过可视化的形式实时展现。DolphinDB 人造具备流表对偶性,公布一条音讯相当于往流数据表中减少一条数据,能够间接应用 SQL 注入和查问剖析流数据,极为不便。DolphinDB 的流计算引擎是基于公布 - 订阅 - 生产的模式。通过流数据表公布数据,其余数据节点或第三方利用通过 DolphinDB 脚本或 API 来订阅生产流数据,把计算结果实时反馈给机器或操作员。流计算教程能够参考 DolphinDB 流数据教程和 DolphinDB 流数据聚合引擎教程。
6. 丰盛的计算性能
DolphinDB 的计算性能能够说是市场上的时序数据库中最丰盛的。DolphinDB 内置了脚本语言,可间接在数据库中进行简单的计算和交互剖析,防止了数据迁徙。大部分计算性能和函数都通过优化,性能远远超过其余数据库中的雷同性能。上面列举了 DolphinDB 中罕用的计算性能。
6.1 范畴查问
DolphinDB 应用数据对(pair)的模式示意范畴。例如,查问某个表某个工夫范畴内的数据:
select * from table where date between beginDate:endDate
6.2 多维查问
DolphinDB 能够针对不同列进行聚合,实现高维或低维的范畴查问性能。例如,对 field1,field2 列进行过滤并分组聚合:
select sum(prc) from table where field1 in (1..100) and field2 =‘A’group by field1, field2
6.3 抽样查问
DolphinDB 提供了以分区为单位的抽样查问机制,能够依照指定的比例或者数量对分区进行抽样,只须要在 where 后调用 sample 函数。例如,按设施 ID 进行范畴分区,抽取 10% 分区中的数据和 10 个分区中的数据
// 抽样 10% 分区
select * from trades where sample(equipmentId, 0.1)
// 抽样 10 个分区
select * from trades where sample(equipmentId, 10)
6.4 精度查问
DolphinDB 的工夫精度达到纳秒,反对海量高精度历史数据存储,也反对把高精度大数据集聚合转换成低精度小数据集存储。同时,DolphinDB 反对多种工夫精度分组抽样。例如,抉择某两个日期之间的数据,按分钟进行分组计算。
select avg(tint) from t1 where date(timestamp) between 2018.01.01:2018.10.11 group by minute(timestamp)
DolphinDB 也反对自定义精度分组。例如,每 5 秒一个分组:
select avg(tint) from t1 where date(timestamp) between 2018.01.01:2018.10.11 group by bar(timestamp,5000)
6.5 插值查问
在工业畛域常常会产生采集的数据缺失。DolphinDB 在查问计算时提供了 4 种插值形式补全数据,向前 / 向后取非空值填充(bfill/ffill), 线性填充(lfill)和指定值填充(nullFill)。用户也能够通过脚本或 C ++ 插件裁减新的插值函数。
6.6 聚合查问
DolphinDB 的函数库十分丰盛,反对以下聚合函数:atImax, atImin, avg, beta, contextCount, contextSum, contextSum2, count, corr, covar, derivative, difference, first, imax, last, lastNot, max, maxPositiveStreak, mean, med, min, mode, percentile, rank, stat, std,sum, sum2,var, wavg, wsum, zscore。
6.7 面板数据分组查问
解决面板数据时,有时候心愿为每个分组的每一行数据生成一个值。DolphinDB 提供了 context by 和滑动统计函数。
DolphinDB 反对以下滑动统计函数:deltas, mavg, mbeta, mcorr, mcount, mcovar, mimax, mimin, mmax, mmed, mmin, mpercentile, mrank, mstd, msum, mvar, ratios。
例如,计算每台设施过来 10 个采集点的挪动平均温度:
select equipmentId, mavg(temperature,10) as mavg_temperature context by equipmentId
DolphinDB 对局部滑动统计函数进行了优化,每次计算时,充分利用上一个窗口的计算结果,最大水平地升高了反复计算。
6.8 比照查问
DolphinDB 的 pivot by 可用于数据透视,特地是同一时间不同列的指标比照。例如,想要比照同一时间段不同设施的平均温度,能够应用以下代码:
equipmentId = `A`B`B`B`C`C`A`A`A$symbol;
temperature= 49.6 29.46 29.52 30.02 174.97 175.23 50.76 50.32 51.29;
timestamp = [09:34:07,09:35:42,09:36:51,09:36:59,09:35:47,09:36:26,09:34:16,09:35:26,09:36:12];
t = table(timestamp, equipmentId, temperature)
select avg(temperature) from t pivot by timestamp.minute() as minute, equipmentId
返回的后果为:
minute A B C
09:34m 50.18
09:35m 50.32 29.46 174.97
09:36m 51.29 29.77 175.23
6.9 关联查问
DolphinDB 反对的关联查问品种十分多,包含等值连贯、齐全连贯、穿插连贯、左连贯、asof join 和窗口连贯。其中 asof join 和窗口连贯 (window join) 是专门为工夫序列数据设计的连贯形式,可能满足更多场景的需要。
当两个表中的工夫字段不齐全对应时,能够应用 asof join,如果左表中的工夫为 t,它会主动抉择右表中不超过 t 的最近工夫。窗口连贯是 asof join 的扩大,如果窗口为 w1:w2,它会在右表中抉择 (t+w1) 到(t+w2)之间的数据,并对这些数据应用聚合函数。例如:
select equipmentId,t1.temperature,t2.humidity from aj(t1,t2,`timestamp)
select * from wj(t1,t2,-5:0,<avg(temperature)>,`equipmentId`timestamp)
6.10 机器学习和分布式计算
DolphinDB 提供了 map-reduce,iterative map-reduce 等分布式计算框架。用户只须要指定数据源、map 函数、reduce 函数和 final 函数,无需编译、部署,能够间接在线应用。为不便用户,DolphinDB 内置了罕用的拟合和分类算法,可在本地数据源和分布式数据源上应用,这些算法包含线性回归、狭义线性模型(GLM)、随机森林(Random Forest)、逻辑回归等。后续将会推出更多机器学习算法。
除了已有的性能外,DolphinDB 提供了几种路径扩大零碎性能。DolphinDB 内置弱小的类 SQL 和 Python 的脚本语言。用户能够用脚本语言自定义函数来扩大零碎性能。DolphinDB 反对应用 C ++ 开发插件来扩大零碎性能。除此以外,DolphinDB 提供了 C ++、C#、Java、Python、R、JS、Excel 等语言和零碎的 API,不便与其它系统集成。
7. 综合应用成本低
工业企业的利润率不高,如果数据平台老本(软硬件的洽购老本,系统集成费用,维护费用,利用开发成本等)过高,会重大限度工业物联网的倒退。DolphinDB 一站式的解决方案、跨平台部署能力、弱小的实时数据和海量历史数据处理能力、丰盛的计算性能及扩大能力极大的升高了零碎的综合领有老本。