作者:深圳双合电机监测和故障预测产品研发团队
小 T 导读:深圳双合电气股份有限公司成立于 1993 年,是国家级高新技术企业和广东省专精特新企业。公司致力于电力及工企业零碎利用解决方案及相干智能监测设施的钻研、开发、生产与施行,领有面向电力系统、发电、石化、冶金、钢铁等行业的故障诊断及预警系统系列解决方案。
一、我的项目背景
水电厂对重要主机设施已装备基于生产运行管制的计算机监控零碎和机组稳定性监测剖析零碎,次要从振动、气隙等状态量对主机设施的运行状态进行监测和评估;同时水电厂对水轮发电机组装设了故障录波器,用于记录机组异样和故障时的波形及动作状况,但这些监测伎俩仅从局部角度对机组状态进行评估,未能从多维综合的角度评估机组的平安运行状况。此外,对故障录波器记录的大量机组的电气及爱护开关动作信息,未能开掘数据的深刻价值。
基于现有零碎的有余,用户提出了本我的项目建设需要,并基于深圳双合丰盛的零碎计划解决能力,将本我的项目交给我司建设。
二、次要挑战
本我的项目中,用户提出的最根本,也最外围的需要是将全厂的电力系统各元件纳入零碎的监测,并存储高采样率的原始信号数据。有了原始数据,就能够进行各种高级利用剖析。
在这个需要中,信号采样率是 10K,即每秒钟产生 1 万个浮点数据。全厂电力系统元件,初步估算有 500 个信号通道。这样 1 天即可产生 1.7T 字节数据量(10000 4 byte 500 24 60 * 60)。
巨量的数据,给咱们造成两个难题:一是从监测安装到零碎服务器的数据传输问题;另一个就是数据存储问题。
第一个难题,基于深圳双合丰盛的设施研发能力,间接通过硬件发送链路数据很快就解决了。
第二个难题,解决方案就两个:抉择数据库存储或文件存储。对于数据库存储计划,如此巨量的数据,依据教训能够晓得,常见的支流数据库很难撑持。而文件存储是电力系统这种类型数据通常的存储计划,于是咱们将此计划报给了用户,不过他们并没有抉择。一方面是间断、巨量的原始采样数据存储成文件,的确会对后续的数据利用产生诸多不便;一方面是心愿零碎有肯定的创新性。
三、数据库选型和验证
用户拥护文件存储计划,逼咱们又回到数据库存储计划上。咱们就把眼光转向了新兴的数据库。
通过重复比照,涛思数据开发的 TDengine 时序数据库优异的性能指标吸引了咱们。咱们对数据库有三个最关怀的外围性能指标(写入能力、查问效率、存储能力)。在正式引入 TDengine 之前,咱们对这三个指标进行了测试验证。
咱们建了 10 个数据表,每个表 50 个数据列,数据库采纳单机模式。而后编写模拟程序每张表每秒产生 1 万行记录插入到这 10 张表中,并通过 SQL 语句 select count(*) from tablename where ts>now -1s
来验证以后(1 秒以内)产生的数据是否及时被写入了数据库。
如果数据来不及写入数据库,数据就会缓缓堆积起来。这样最新的数据也就无奈在数据库中查到。为了查看是否存在沉积景象,咱们也测试了程序运行多天之后执行该 SQL,后果是以后最新 1 秒内的数据也能在数据库里查到,这阐明沉积的数据不超过 1 秒。也就表明,数据库及时写入了数据,没有任何提早。
起初咱们又将产生的数据量翻倍,测试后果一样,阐明 TDengine 数据库的写入能力十分强悍。
而查问效率的验证则绝对简略。咱们在曾经有了几十亿条记录的表中随便查问几十万条记录,查问工夫均没超过 1 秒,阐明 TDengine 数据库查问效率也极其强悍。
再就是对数据库存储能力的验证。依据推算,咱们 1 天产生 1.7T 的数据。而咱们用 du –sh * 命令去查看 TDengine 数据库的数据目录,24 小时之后再去查看,发现数据增量约是 1.7T 的 30% 左右。这阐明 TDengine 的压缩能力也是比拟优异的。
基于上述三个性能指标的优异体现,咱们很快决定将 TDengine 数据库正式引入我的项目。
四、TDengine 应用体验
正式应用 TDengine 数据库后,咱们发现 TDengine 的 C++ 和 Java 接口都简略清晰,SQL 语法与规范 SQL 根本一样,学习老本简直为 0,应用 TDengine 数据库没有给我的项目带来额定的工作量和难度。
最终,TDengine 数据库在该我的项目中顺利投入使用,在现场运行环境的体现,如同咱们的验证测试一样,领有优异的写入能力和疾速的查问能力,能够无力地撑持系统对原始信号数据进行进一步的剖析与利用。
在该我的项目中,咱们只把高采样的间断采样数据存入 TDengine 数据库中,其它离散型时序数据没有存到 TDengine 数据库,还是放在 MySQL 这样的传统数据库中。这种离散型的时序数据,尽管它的工夫距离很大(比方 3 分钟才产生一个数据),然而因为工业畛域数据的特殊性,使得传统的行式数据库特地不适应工业数据,数据库模型特地难设计。
比方工业生产零碎中,有的设施产生电压、频率数据;有的产生电流、功率数据;有的产生压力、温度数据。这些数据类型各占一列放在同一张表中,必然造成每一行都有大量的空列,对数据库的性能影响很大。
另一个计划就是各个数据独立占一行,咱们理论零碎中就是这么设计的,每一行只有两个无效外围列:工夫、值。这种设计会造成大量反复的工夫数据,数据行数成百、成千倍的减少,同样对数据库的性能影响也很大,它惟一给零碎带来的益处是扩大灵便。
因而,传统行式数据库在工业畛域是很难设计出完满计划的。
而像 TDengine 数据库这样的列式数据库则能够完满解决工业畛域外面的这些问题。咱们能够应用宽表把所有的数据放入同一个表中,因为是列式数据库,行中的空列对数据库性能没有丝毫影响。也能够把不同的分类数据放在同一个模型中(但理论表可能有多个),而后用 BigTable 技术将多个表的数据汇聚到一个大表中,晋升查问效率。
五、将来布局
TDengine 数据库是为时序数据而生的,因而,将来咱们的零碎,离散的时序数据也将逐渐放入 TDengine 数据库。咱们筹备利用 TDengine 的技术个性,从新设计数据库模型,使这部分数据的写入和查问效率产生天翻地覆的变动。
⬇️点击下方图片查看流动详情,iPhone 13 Pro 等你带回家!