欢迎您访问无忧自考网!

格创东智选择TDengine,实现海量数据实时全生命周期管理

更新时间:2023-01-12 20:51:02作者:51data

作者:唐世涛

格创东智选择TDengine,实现海量数据实时全生命周期管理

t简介:格创东智科技有限公司成立于2018年,孵化于中国500强企业TCL,是国内知名的工业互联网平台服务商。依托TCL集团40年的工业场景和制造基因沉淀,基于“面向工业场景”的R&D方向和“连接、协作、共享”的发展理念,深度融合人工智能、大数据、云计算、物联网等前沿技术,构建了具有自主知识产权的新一代工业互联网平台3354‘东智工业应用智能平台’。

https://github.com/taosdata/TDengine

G-Things作为东智工业应用智能平台产品家族的物联网平台,为工业设备提供了安全可靠的连接和通信能力。它支持数据采集、规则引擎、数据转发、指令发布和数据可视化,同时提供开放的API快速与第三方系统对接,为工业企业提供高效率、低成本、高可靠性的工业物联网解决方案。从采集的数据类型来看,平台采集的设备数据和系统业务主要有以下时间序列数据特征:

设备采集的所有数据都是顺序的、结构化的,设备采集点的数据源是唯一的。数据存在的时效性主要是写操作,读操作为辅。运行数据的实时计算需要统计汇总:一般指定查询时间区间支持高频数据访问。为了让用户实现最大程度的降本增效,G-Things会从用户类型中进行选择(轻量化,重量

一、时间序列数据库的选取研究2019年以来,我们一直在关注国内的一些数据库。通过研究,我们发现TDengine非常适合我们的业务场景,它具有读写性能强、部署简单、数据压缩比超强等特点。同时,超表和子表的标签设计也很好地契合了平台模型中的设备模型和设备概念。验证TDengine在读、写、存储等方面的性能。我们与Cassandra和OpenTSDB在相同条件下进行了相关的读写性能对比测试,测试结果如下:

在相同数据集和硬件环境下,对比表明,TDengine的性能远优于Cassandra和OpenTSDB,其写性能分别接近20次和25次,读性能约为17次和32次,聚合函数性能分别约为4000次和1000次。按标签分组查询的性能约为2500倍和1000倍,按时间分组查询的性能约为119倍和40倍,其压缩比约为26倍和5倍。基于此,TDengine在评选中脱颖而出。

二。技术架构和具体做法具体到实际业务,我们主要使用TDengine来存储以下三类数据:

租户在设备上抛出的原始数据。经过实时计算处理后保存,租户之间的数据被隔离。一个租户和一个TDengine库系统计算设备状态变化的日志数据。与系统中设备相关联的相关控制台的操作日志数据。平台中TDengine的整体架构图如下所示:

与原始架构相比,使用TDengine后发生了以下变化:

通过监控Kafka中的binlog日志,自动初始化平台被访问的租户相关库和表,每个设备点都有一个独立的表。清晰的数据分层用TDengine替换Cassandra,KairosDB,OpenTSDB。可以使用API或SDK读写TDengine,减少了服务之间的数据流、处理和消息通信的步骤。TDengine提供的丰富功能减少了实时处理的数据计算。TDengine提高读写速度,减少数据流处理时间

2.1 TDengine表结构设计具体到表结构设计。在我们的实际场景中,使用一个租户和一个数据库来创建它,这有三个优点:

它可以为不同的租户提供独立的数据库。用户数据的隔离级别很高,安全性很好,有助于简化的扩展设计

2.2设备运行数据设备运行数据以设备型号为超表,这个超表的命名规则是pd_ model标志,例如pd_devicemodel001,以设备参数为子表名。具体的建表语句如下:

创建表pd_devicemodel001(ts timestamp,smallint_value smallint,int_value int,bigint_value bigint,double_value double,boolean _ value bool,string_value nchar(200))标签(device_model_mark nchar(25),device_mark nchar(25),param _ mark nchar(25));如果需要创建单参数的数据表,子表的命名规则是pd_ model flag _ parameter flag,例如:pd_devicemodel001_param01。具体的建表语句如下:

使用pd_devicemodel001标记(' device01 '' did01 '' di0001 ')创建表pd _ devicemodel001 _ param01

2.3设备状态变更日志设备状态变更日志时,超表命名为device_state_change_log,代码如下:

如果不存在则创建表device_state_change_log (ts时间戳,change_type nchar(10),status_before nchar(10),status_after nchar(10))标签(device_model_mark nchar(25),device _ mark nchar(25));如果是单个设备一个子表的模式,子表的命名规则是dsl_ model flag _ device flag,例如:al_model01_device01。

如果不存在,则使用device_state_change_log标记创建表% s(' devicemodlemark 001 '' device 01 ');

2.4设备信息变更日志设备信息变更日志时,超级表命名为device_info_change_log,代码如下:

如果不存在则创建表device_info_change_log (ts时间戳,opera_user nchar(50),change_type nchar(10),change_info nchar(50),info_before nchar(200),info_after nchar(200))标签(device_model_mark nchar(25),device _ mark nchar(25));在单个设备有子表的情况下,子表的命名规则是dil_ model flag _ device flag,例如:al_model01_device01。

如果不存在,则使用device_info_change_log标记创建表% s(' devicemodlemark 001 '' device01 ')

2.5问题及解决方案我们刚开始使用TDengine 2.0.13.0的版本,在建表和使用的过程中遇到了一些问题,主要包括以下三点:

需要预先创建TDengine数据列,并且不能修改TDengine数据列的长度。新建设备运行日志表时,会提示dberror:无效SQL:行长度超过最大长度(0.000505s)。经过我们与淘思数据的技术专家的相关沟通,他们建议将TDengine升级到最新的2.2.0稳定版本,支持数据列的动态添加和修改。在沟通过程中还发现,上面问题中的“建表错误”这一项是因为单条记录数据太长,所以总长度不能超过16KB。后来我们调整了场长,问题马上就解决了。

三、具体效果展示接下来给大家展示一下TDengine在压缩率(存储)、写法、查询等方面的各种数据。

3.1单机写性能1)模拟10个厂区,每个厂区10000个监测点的数据。每个监测点写入2020-01-01 00: 00.000的模拟数据,记录时间盖章5秒,每个监测点写入1 00万条记录。2)书写的数据要一致。生成方法是:10000份真实采集的数据,每隔5秒自动生成时间戳记,作为不同测点的数据写入数据库。3)记录以下内容,观察写入过程中的客户端线程数、CPU和内存资源利用率:

确认1000亿条记录全部正确写入数据库,平均每秒写入次数,所有写入请求的总延迟为每秒33,354条记录:2,348,220。总延迟(秒):4585.4531。

3.2时间序列数据库压缩比1)确认1000亿条记录的原始数据文件大小,不计标签为1117.59GB,67.666TB清点标签后;2)下载后数据文件的大小(有缓存的时序库需要重启服务才能保证数据文件的下载);3)计算压缩比=磁盘丢失后数据文件大小/原始数据文件的大小;所有文件大小为113GB,压缩率为10.11%

3.3时间序列数据库中单个测点的原始历史数据的投影查询性能1)随机选取任意一个测点,查询该测点在某个时间段的历史数据,如2020-01-10 00:00:00.000至2020-01-01。数据库中的对应关系查询语句是:

Select * from pt123其中ts=' 2020-01-10 00: 00: 00.000 '和ts=' 2020-01-11 00:00:00.000 '/dev/null 2)记录以下内容:

确认查询,结果和记录数正确查询,总花费时间;3)重复上面查询 3次,具体结果是33543次,平均延时(秒)是0.13785。

3.4时间序列数据库中单个测点原始历史数据的聚合查询性能1)随机选择任意一个测点,查询。测点在时间中某个测点的count,max,min,avg,比如从2020-01-01 00: 00。数据库中的对应关系查询语句是:

从pt1231中选择(*)、最大值(列1)、最小值(列1)、平均值(列1),其中ts=' 2020-01-10 00: 00.000 '和ts' 2020-01-11 00: 00: 00.000 '

确认查询结果正确查询总耗时3)重复上述三次查询,记录平均耗时。具体结果是——3次平均时延(秒):0.010504。

目前,我们已经在数据采集、数据处理、数据边缘计算、数据存储等多个方面应用了TDengine。在实际业务中,也表现出如上图所示的优越性能,尤其是在处理UHF数据采集、边缘智能计算框架、数据流引擎和数据模型等方面。面对海量数据,很容易实现实时的生命周期管理。

四。写到最后。在这个项目中,TDengine展示了强大的读写性能和数据压缩能力。聚合类查询速度很快,也帮助我们有效降低了机器使用成本。超表、子表、标签等概念非常适合物联网大数据应用场景,潜力无限。希望以后TDengine发展的越来越好,周边的生态工具更加完善。

查博客:你写,我“奖”| |TDengine用户故事集|淘思数据活动详情,

IPhone 13 Pro等你带回家!

为您推荐

初级会计2021年题库(2021年会计专业技术资格考试《初级会计实务》)

2021年初级会计职称考试《初级会计实务》试题及答案解析一、单项选择题1.甲公司为增值税一般纳税人,购入乙上市公司股票并通过“交易性金融资产”科目核算。购入时支付价款800万元,另支付交易费用2万元、增值税0.12万元。不考虑其他因素,甲公

2023-01-12 20:32

2021年初级会计实务真题答案(2021年初级会计实务真题)

不定项选择题:(一)甲有限责任公司(简称"甲公司”)由两位投资者各出资750万元设立。2020年1月初甲公司资产负债表所有者权益项目金额如下:实收资本1500万元,资本公积500万元,盈余公积300万元,未分配利润100万元,2020年甲公

2023-01-12 20:30

2022年会计补考真题答案及解析(9.23-9.25)

2022年注会《会计》延考考试真题及答案(9.23)1.下列各项资源和权利,属于企业无形资产的是()。A.购买的网络小说电影改编权B企业合并形成的商誉C.出租的土地使用权D.企业经营自创的品牌.[答案]A[解析]出租的土地使用权属于投资性房

2023-01-12 20:27

中签率新低!河西这些盘有钱也买不到...

即使在过年期间,安家河西也坚持每天给各位网友带来楼市讯息,相信网友们对于自己想要入手的楼盘已经非常了解了。但是在河西,即使八成的首付也挡不住买房人激动的心,光有钱不行,摇号能不能中才是关键。此图来自网络▲2019年的河西除了不少全新盘上市,

2023-01-12 20:23

银行知识题库及答案(银行考试行测题库及答案)

题库来源:银行理论考试题库——试题通小程序如需完整的题库资料,请到试题通小程序内搜索关键词查看,谢谢!1、 ()是指客户在同一单位银行结算账户下开设的分类明细核算登记簿(也称辅助账簿),主要记载一定时期内资金收付的详细信息。一级账簿多级账簿

2023-01-12 20:20

2022年初级会计职称考试真题及答案解析免费(8月1日上午场)

环球网校老师根据考生回忆特地整理2022年初级会计职称考试真题及答案解析,供考生对答案,预计分数,具体真题如下:经济法基础考试真题及答案:单选题1-企业自销应税矿产品应交的资源税,应计入( )A.税金及附加B.生产成本C.主营业务成本D.销

2023-01-12 20:17

加载中...