风电行业作为新能源的代表,有海量的风电设备数据可以被采集使用。大数据技术的发展和成熟,已不局限于集控这样的数据应用场景。除了集控,风机的设备数据,以及SCADA系统产生的数据可以有更多直接产生价值的场景:
发电量统计、能效分析等BI场景
设备健康状况监控和监测
故障关联分析
设备故障预测
业务管理优化
为了支撑这些数据驱动的应用场景,需要整合多维度的生产经营数据以及更细粒度的秒级、甚至毫米级数据。在风电这种典型的工业大数据场景,数据平台架构可以基于数据特征进行优化,更加友好的支持实时、并发读写,以及横向扩展。
对于风机数据的存储,数据主要来源于SCADA系统和从传感器得到的数据是连续的、带有时间戳的变量。在算法分析领域,这类数据作为时间序列数据来处理,在数据库领域,时间序列数据有在监控领域广泛使用。时间序列数据库的应用场景可以从监控领域实践到到工业领域。基于时间序列数据库,设计实时收集、存储、分析的服务架构。本文主要介绍风电SCADA数据的实时采集和存储。
时间序列数据和SCADA数据
我们一般把符合下述特征的数据归纳为时间序列数据:
随时间连续度量,每个时间点都有值
度量值等时间隔变化(如秒,毫秒等)?
有明确意义的度量变量(如温度,风速等)
在金融股票、IoT设备、车辆驾驶、医疗诊断等场景,遍布时间序列数据的场景。风电的SCADA系统收集的数据,就是符合时间序列数据定义的数据,而且数据特征更具体:
a.低频的秒级数据和高频的毫秒级数据都具备
b.设备数据、环境数据、发电量数据等都有真实意义和利用价值
c.以数值型为主,并且在一定范围内波动变化
d.数据每时每刻产生,但是系统采集会时有时无
.数据质量时好时坏
基于这样的特征,我们定义为时间序列数据模型来处理,选型合适的数据库组件,达到更高效的数据写入、压缩存储,和弹性的数据标识、管理。
时间序列数据库和OpnTSDB
时间序列数据库是基于时间戳作为索引优化存储的数据集合。相比于传统的关系型数据库,时间序列数据库的处理场景主要体现在以下几个方面:
相比于读,写是系统的主要任务
appnd方式处理数据
单点的读写少,往往是一段时间范围的批量写和读
更新和删除场景少
传统的做法是关系型数据库通过调优,优化时间序列数据的存储管理。关系型数据库如Oracl、MySQL、PostgrSQL是处理通用场景而设计的,开销比较重。我们知道NoSQL类的数据库往往是专门来处理具体场景的轻量数据库,时序数据库的产生是为了重新设计数据库适应上面的技术需求,以NoSQL形态为主。
时间序列数据库是比较年轻的数据库,设计实现上更加新颖,如列式存储、RESTAPI接口、异步通信、分布式存储等都有广泛使用。
数据模型上,时序数据的字段往往如下定义:
mtric:具体的变量名。每个mtric代表一类度量值,如偏航功率、环境温度、机舱温度等;
timstamp:时间戳,标识时间维度,可能是秒,也可能是毫秒,作为KV数据对中的ky;
Valu:变量值。跟时间戳一起组成KV数据对,Valu标识具体时间点的变量值;
TagKy/TagValu:TagKy和TagValu组成一对描述数据的标签,比如数据是属于哪个风机的,是哪个系统采集的等,通过tag补充标注。一个KV数据对,可以有无数个TagKy/TagValu描述,根据需要扩展完整的数据画像。
具体到每个时序数据库产品,设计理念不完全相同。当前流行的时序数据库有InfluxDB、OpnTSDB、Promthus、Druid等,有些数据库如Kdb+、RRDTool虽然在db-ngins中排名靠前,但是当前流行的技术方案中提及的较少。
图1:db-ngins.治疗白癜风北京哪家医院好白癜风初期能治好么