TDengine助力蓝深远望电机物联网监测预警与预测性维护
现状与痛点
扩容实施难
业务开发难
为什么选择TDengine
为了适应未来业务发展需求,避免上述难点与困境,我们决定选择一款时序数据库产品。在调研了多款产品之后,TDengine引起了我们的注意,它的如下几个特点非常适合我们的场景:
高性能:数据读写速度非常高;
集群化:可以集群化部署,支持多副本,支持水平扩展;
安装便捷: 官网文档齐全,按照文档很容易就能完成安装部署;
开源:开源,而且社区非常活跃,很多问题都可以在社区找到答案;
使用简单:支持使用类SQL查询语言来插入或查询数据。
TDengine存储模型设计
TDengine里有一个特殊的概念:超级表,每种数据采集类型对应一个超级表。超级表只负责存储这种类型的数据,同时数据存储采用横表存储。
CREATE STABLE IF NOT EXISTS general_view_escalator (ts TIMESTAMP, elect_machine_one FLOAT, reducer_machine_one FLOAT, bottom_bolt_one FLOAT, elect_machine_two FLOAT, reducer_machine_two FLOAT, bottom_bolt_two FLOAT, left_main_drive FLOAT, right_main_drive FLOAT, left_step_chain FLOAT, right_step_chain FLOAT, up_main_drive_noise FLOAT, down_step_chain_work_noise FLOAT, left_step_chain_extend FLOAT, right_step_chain_extend FLOAT, left_handrail_temperature FLOAT, right_handrail_temperature FLOAT, env_temperature FLOAT, elect_machine_temperature FLOAT, reduction_gearbox_one_oil FLOAT, reduction_gearbox_two_oil FLOAT, rmd FLOAT) TAGS (line_id BINARY(20), site_id BINARY(20), elevator_code BINARY(20));
CREATE STABLE IF NOT EXISTS waveform_view_escalator (ts TIMESTAMP, vals BINARY(16000), samplehz INT, len INT, ratio INT) TAGS (line_id BINARY(20), site_id BINARY(20), elevator_code BINARY(20), measuring_id BINARY(20));
用到的TDengine特性
1.
数据订阅(Publisher/Subscriber)
在我们的业务场景中有一类数据叫预警、报警事件告警数据,直接使用TDengine的数据订阅功能,可以优雅快速地实现这一功能。
2.
缓存(Cache)
在我们的业务场景中,需要显示每台电机设备的新测量数据(如幅值、频谱等),直接使用TDengine提供的缓存(Cache)功能,创建数据库时设置参数cachelast=1,将每张表的后一条记录缓存,应用程序可以通过last_row函数快速获取当前的实时数据,进行动态数据刷新显示。
3.
其它有用功能
比如采样查询、多表聚合查询、流式计算等,可以满足我们多种业务场景的需求。
时域波形采样查询
包络图采样查询
波形多表聚合查询
幅值流式计算
原来项目中有很多需要在程序中处理的计算工作,现在全部由TDengine承担,在分担程序的计算压力的同时,还可以实现聚合结果的持久化存储,支持历史数据快速查询。
总结
作者介绍:
李凯,蓝深远望大数据研发组负责人,2015年起从事大数据研发,2020起从事电机大数据平台运维研发。
相关文章