共计 2767 个字符,预计需要花费 7 分钟才能阅读完成。
作者:李凯 蓝深远望
小 T 导读:蓝深远望致力于服务政府及大型国有企事业单位的数字化转型,联合大数据、数字孪生、区块链、网络安全等核心技术,为政府运行、社会服务、城市治理、公共安全、基层治理等畛域,提供智能场景利用、平安治理、数据经营与产品服务,赋能数字政府翻新建设,为各行业利用场景提供撑持服务。
随着科技的倒退与人民生存程度的进步,电机在工业生产和人民生存中利用越来越宽泛,如工业机器、空调、电梯等。电机的保护成为影响生产效率和生产平安的一项重要事宜。而且在一些环境恶劣的场合,用户更偏差于近程保护。
为了满足这些需要,咱们研发了电机物联网监测预警与预测性保护平台。该平台通过传感器、物联网关,采集各电机设施的运行数据以及频谱波形数据,联合大数据建模剖析,可能及时发现潜在隐患,实现预测性保护。
一、现状与痛点
电机物联网监测数据类型多、采集频率高,在我的项目总体设计的初期,咱们打算采纳传统关系型数据库进行存储。当设施数量较少时(低于 100 台),基于传统关系型数据库的计算函数、多表关联等解决形式,可能满足业务要求。然而思考到将来接入的电机数量会越来越多(5000 台以上),设施的测点也会越来越多,平台问题也就会越发严厉。具体能够演绎为如下两个方面。
- 扩容施行难
采纳传统的关系型数据库,局限于传统的库表设计模式,每新增一个电机设施接入,必须针对这个电机设施建设一张新的数据表,这个大大增加了接入设施时的工作量;同时,随着平台接入的电机设施越来越多,数据库表一直减少,传统数据库的治理和备份老本一直进步,无奈做到程度扩容。 - 业务开发难
随同着业务的一直倒退,大量的电机设施接入平台,各种聚合剖析统计需要继续减少,因为传统关系型数据库的特点,导致各种跨库跨表的查问操作激增,业务数据耦合度增大,零碎开发的难度也随之晋升,同时对平台整个的响应速度和稳定性也会造成很大隐患。
二、为什么抉择 TDengine
为了适应将来业务倒退需要,防止上述难点与窘境,咱们决定抉择一款时序数据库产品。在调研了多款产品之后,TDengine 引起了咱们的留神,它的如下几个特点非常适合咱们的场景:
- 高性能:数据读写速度十分高;
- 集群化:能够集群化部署,反对多正本,反对程度扩大;
- 装置便捷: 官网文档齐全,依照文档很容易就能实现装置部署;
- 开源:开源,而且社区十分沉闷,很多问题都能够在社区找到答案;
- 应用简略:反对应用类 SQL 查询语言来插入或查问数据。
于是咱们马上做了各种验证,结果表明,TDengine 完全符合咱们的业务需要。
引入 TDengine 之后,平台整体的数据架构如下图所示。
三、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 还有另外一个概念:子表。每台电机设施的数据对应一张子表,它能够在插入数据时动态创建。这种操作模式能够省去创立子表的业务环节,大大降低了业务复杂度。
四、用到的 TDengine 个性
- 数据订阅 (Publisher/Subscriber)
在咱们的业务场景中有一类数据叫预警、报警事件告警数据,间接应用 TDengine 的数据订阅性能,能够优雅疾速地实现这一性能。
- 缓存(Cache)
在咱们的业务场景中,须要显示每台电机设施的最新测量数据(如幅值、频谱等),间接应用 TDengine 提供的缓存(Cache)性能,创立数据库时设置参数 cachelast=1,将每张表的最初一条记录缓存,应用程序能够通过 last_row 函数疾速获取以后的实时数据,进行动态数据刷新显示。
- 其它有用性能
比方采样查问、多表聚合查问、流式计算等,能够满足咱们多种业务场景的需要。
时域波形采样查问
包络图采样查问
波形多表聚合查问
幅值流式计算
原来我的项目中有很多须要在程序中解决的计算工作,当初全副由 TDengine 承当,在分担程序的计算压力的同时,还能够实现聚合后果的长久化存储,反对历史数据疾速查问。
五、总结
TDengine 作为一款新的产品,咱们在应用过程中遇到了一些艰难和挑战。不过在共事们的反对下,在涛思数据工程师们的热心反对下,咱们还是绝对顺利地实现了我的项目的上线。
目前平台的状态是,以后设施接入 300 台,每台设施 19 个测点,数据采集频率达到 1 秒钟,存储的数据维度更精密了,能为平台的智能诊断、智能剖析服务提供更精确的数据反对,同时各业务场景下的计算查问性能也十分优良,满足了我的项目的理论需要。
作者介绍:
李凯,蓝深远望大数据研发组负责人,2015 年起从事大数据研发,2020 起从事电机大数据平台运维研发。