TDengine在设备管理系统中应用

简介: 这篇文章介绍了TDengine时序数据库在设备管理系统中的应用,包括处理大规模数据插入、查询优化以及如何通过超级表管理多设备数据的具体实践。

背景:

公司之前接了一个关于设备管理的项目,设备是用来控制和记录加油站的油气回收设备状态,以往的设备故障需要加油站的工作人员主动联系人工到现场,根据当前温度天气以及其他异常对设备进行参数调整或者更换油膜,现在要通过系统远程控制调整设备的各种阈值,并实时记录设备运行状态以及各方面的数据。设备在全国大概有2000台,每30秒钟每个设备会产生13条数据要存到数据库,作为历史记录和展示看板,但是普通的SQL承受不了如此庞大的插入,即使可以支持插入,后期的查询庞大的数据也会变得非常慢,另一方面数据量的大小也是一个不可避免的问题,而TDengine数据库也可以支持海量数据的快速查询。且TDengie支持配置过期数据,这样就可以再数据有效期后自动删除不再使用的数据,然后就引入了TDengine时序数据库。

项目介绍:

TDengie的性能非常强悍,而且不像redis那样是非结构化的数据,TDengine是结构化数据,且支持标准的SQL语句进行插入和查询操作,另外TDengine自带时间戳非常适合设备类的数据采集场景,读写能力非常快,达到千万级,虽然修改能力差,但是刚好设备采集的场景本就不会用到修改的操作。因此引入TDengine作为数据采集的数据库就非常恰到好处了。最后,结合项目的其他应用场景,整个项目的大概的业务逻辑如图:

超级表介绍:

为了能更好的使用TDengine,发挥它的性能,然后又重新再学写了下TDengine的知:时序数据库最大的特点是默认就用时间作为唯一ID,也就是同一时间一个普通表只允许插入一条数据,如果插入同一个时间的数据,数据库只会保留一条,这样也同时避免了问题数据,但是那么多台设备会在同一时间插入数据怎么办呢,TDengine非常nice的就是加了超级表这个概念,超级表简直是为了这种情况而生的:创建超级表的时候会生成表的格式,然后通过Tag添加这个超级表下的子表,不同的设备就可以用不同的Tag表示,每个设备对应类型的数据会插入到超级表中的某个子表中,而子表与子表中间就通过Tag区别,Tag就可以设置为设备ID,举个例子就类似java程序中,超级表就代表Class,而子表就是通过Class创建出来的实例,那么每个实例是独立的却又都依赖于超级表,每个实例之间的数据也可以独立的插入和删除而不会互相影响。这样就完美的解决了三个问题:

  1. 多个设备大量插入数据,且时间相同,会是同时插入;
  2. 如果因为程序或者设备问题插入相同时间,相同内容的数据,导致统计结果有误;
  3. 后期的海量数据需要快速读取问题;

这样的设计好处是,同类型的数据会放在一个超级表中,却不是放在同一个子表中,不仅增加了查询效率,在针对某个设备进行查询的时候也会变得更加快速和便捷,且可以把同类数据一起管理,降低了后续的维护成本。

Springboot中,propities配置信息如下:

spring.datasource.tdengine-server.jdbc-url=jdbc:TAOS://110.110.110.110:6030/td?timezone=GMT%2b8
spring.datasource.tdengine-server.username=root
spring.datasource.tdengine-server.password=123456
spring.datasource.tdengine-server.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.tdengine-server.minimum-idle=10
spring.datasource.tdengine-server.maximum-pool-size=150
spring.datasource.tdengine-server.auto-commit=true
spring.datasource.tdengine-server.idle-timeout=30000
spring.datasource.tdengine-server.pool-name=TDengineDruidCP
spring.datasource.tdengine-server.max-lifetime=1800000
spring.datasource.tdengine-server.connection-timeout=30000
spring.datasource.tdengine-server.connection-test-query= show tables

创建超级表和子表示例:

-- 创建超级表
CREATE STABLE super_table_name (
    ts TIMESTAMP,
    sensor_id INT,
    value DOUBLE
) TAGS (location NCHAR(50));

--创建子表
CREATE TABLE child_table_name USING super_table_name TAGS ('location1');

--插入数据到子表
INSERT INTO child_table_name (ts, sensor_id, value) VALUES ('2024-09-11 10:30:00', 123, 45.6);

mybaits中,给超级表中子表插入数据的例子,需要传入子表的tag,

<insert id="insert" parameterType="com.ags.meper.examples.entity.tdengine.QiTing" >
    insert into ${tableName} USING twice_qiting TAGS(#{userid}) values (#{jksj},#{jyjid},#{jyqid},#{czlx},#{czlxsj},#{jssj},#{id})
</insert>

超级表与子表的示意图:

ps: 安装 TDengine的时候服务端可客户端的版本尽量一致,以避免出现不兼容问题。
避免出现不同设备往一个子表中写入数据的情况

相关文章
|
存储 域名解析 数据安全/隐私保护
离线云监测系统OCMS软件
OCMS 是什么? OCMS ( Offline Cloud Monitoring System)是利用人们熟知的稳定可靠的第三方电子邮件、FTP 服务商提供的数据永久存储服务作为中间环节,监测设备向服务器发送数据,监测软件从服务器获取数据的以非实时在线的方式工作的无线监测预警系统。 具有数据可靠、部署快捷、操作简单、无需在线等主要优势和特点。
离线云监测系统OCMS软件
|
3月前
|
监控 NoSQL 数据管理
电脑监控软件中的NoSQL数据库管理
这篇文章介绍了在电脑监控软件中使用NoSQL数据库管理非结构化数据。通过Python示例展示了如何使用MongoDB客户端连接数据库、插入单条或多条数据、查询数据(包括所有、特定用户和时间范围)、更新数据以及删除数据。此外,还提供了一个简单的数据监控和自动提交到网站的脚本,以每分钟检查一次新活动并发送到指定URL。这些示例有助于理解和优化监控软件中的数据处理。
82 3
|
11月前
|
存储 机器学习/深度学习 数据挖掘
时序数据库 TDengine 与高级分析软件 Seeq 集成,来看看操作手册
通过 TDengine Java connector,Seeq 可以轻松支持查询 TDengine 提供的时序数据,并提供数据展现、分析、预测等功能。本文将对此进行介绍。
337 2
|
运维 监控 安全
软件源码开发,网络中的“摄像头”:运维监控系统
总之,监控运维系统在软件源码开发平台中有着不可或缺的作用,通过以上分析,可以看出监控运维系统不只是监控着服务器、数据库、操作系统等,还可以为软件源码开发平台运维团队提供资源管理、容量规划、日志与事件记录等作用,确保着软件源码开发平台的系统和服务的正常运行。
软件源码开发,网络中的“摄像头”:运维监控系统
|
项目管理
WMWS工程仪器设备在线监测管理系统使用注意事项
WMWS(Wincom Monitoring Web System)是稳控科技专门为终端客户开发的在线监测管理系统,基于BS 架构。可在浏览端实现项目管理、数据查看与下载、曲线查看等操作。系统界面风格简约、布局统一、逻辑清晰,具有极佳的操控体验。三层监测要素架构,实现了多项目、多设备、多测点无限扩展,可满足小型、中型的单(多)项目管理。
WMWS工程仪器设备在线监测管理系统使用注意事项
|
数据采集 传感器 存储
工控系统 SCADA(监控和数据采集)系统简介
工控系统 SCADA(监控和数据采集)系统简介
|
存储 监控 安全
网络视频监控如何入门?如何安装和配置、设备选择和实时监控?
网络视频监控如何入门?如何安装和配置、设备选择和实时监控?
836 0
|
运维 开发者
设备管理系统厂商 设备管理系统定制开发
随着设备在企业中数量的增大,很多企业发现用传统的人工管理模式已经不能适应时代的需求,因此很多企业开始引进设备管理软件对企业的设备进行全方位的管理,这其中有一些企业使用了软件市场上可以买到的设备管理软件进行管理,另一些企业则觉得这样的软件不适用于自己的企业,那么本文笔者就来对定制设备管理软件以及非定制设备管理软件进行介绍。
设备管理系统厂商 设备管理系统定制开发
|
存储 SQL 消息中间件
规模设备管理与消息通信 | 学习笔记
快速学习规模设备管理与消息通信
规模设备管理与消息通信 | 学习笔记
|
存储 安全 数据挖掘
设备巡检系统的好处 设备点巡检管理系统方案
设备管理是企业生产经营活动的重要环节,企业生产过程环环相扣,设备运行状况好坏,不仅直接影响到企业的生产效率、产品质量和成本费用,而且危及到重大设备损坏、人员伤亡等隐患。所以,做好设备的高效管理、保障设备稳定运行至关重要,是企业做好降本增效的基础。
设备巡检系统的好处 设备点巡检管理系统方案