“天工云中控”助力传统工业转型,TDengine 帮了我们大忙

小 T 导读:在中科云创的“天工云中控”项目中,TDengine 作为基础数据库的角色,承担着实时数据存储、高效压缩、快速聚合查询等任务。不仅在分析业务模块上带来了性能上的巨大提升,更是在成本上达到了几乎对半的下调,极大地节省了中科云创在基础数据库建设上的投入。

公司简介

中科云创致力于通过工业互联网助力装备制造企业转型为装备服务企业,是中国云体系产业创新战略联盟、中国智能制造系统解决方案供应商联盟的理事单位。公司创始人、核心团队成员均来自于微软、巴鲁夫、思科、索尼等知名软硬件公司,并拥有一批技术过硬的产品开发人员,具有大量工业互联网经验与资源,对于工业领域的痛点把握极其精准敏锐。

TDengine支持的场景

“天工云中控”项目是中科云创综合运用物联网、语音识别、图像识别、机器学习、AR、设备远程维修等多项最新科技搭建的工业物联网设备健康管理 SaaS 服务平台。定位是为工业设备全生命周期管理提供技术支持,提高企业生产效率,降低运维、融资和备件的采购成本。

在这个项目中,TDengine 作为基础数据库的角色,承担着实时数据存储、高效压缩、快速聚合查询等任务,在“天工云中控”的工业物联网、智慧城市、传统工业、能源行业、化工行业和消防安全等领域发挥了十分重要的作用。

天工云中控项目展示

当前,“天工云中控”已经帮助多地政府,建立针对当地生产企业集群的通用化工业设备上云公共服务平台,助力政府和企业快速实现行业数据分析、订单透明化生产、设备和环境安全监控和预警等功能。在智慧城市领域,“天工云中控”提供的物联网数据中台、智慧消安防、智慧配电等多个垂直应用,也已经应用在北京、重庆、成都、贵阳、武汉等多个城市甚至包括新加坡等海外国家。

与 TDengine 初相识

2020 年中旬,我们开始对时序数据库(Time-Series Database)做技术选型。由于之前公司采用的是某公有云的数据库,所以一开始依然是基于公有云开始评估的。但出于对公司数据安全性的考量,我们发现数据库服务包括数据存储、备份等需求在公有云上都存在很多不可控的因素。所以我们开始转变思路,对可以私有化部署的时序数据库进行选型。

我们决定在 TDengine 和 InfluxDB 之间进行抉择,各种评估工作也随之展开。由于 InfluxDB 只是单机开源,且在单机规模下的性能、存储、数据压缩比等各方面的指标也不如 TDengine;此外,从多方资料以及官方人员的科普得知,TDengine 更大的亮点在于集群横向扩展处理海量数据且功能开源,再加上有国产时序数据库的加成,因此我们最终确定采用 TDengine 作为本项目的数据库解决方案。

二、搭建与效果

在测试阶段,我们使用了三台 4 核 8 GB、数据磁盘 1 TB(支持无限扩容),搭建起了一套三节点三副本的 TDengine 集群服务。在测试完成之后,TDengine 于 2021 年 7 月正式投入使用。2021 年 12 月,天工云中控项目正式全面地切入 TDengine 服务。

目前根据业务类型,我们已经创建了 8 张超级表以及数十万张子表,基础数据如下:

基础数据 1 TDengine Database
基础数据 2 TDengine Database
基础数据 3 TDengine Database

TDengine 在应用集成方面做得非常完善,支持 C/C++,Java,Python 等多种语言,在应用的过程中,我们采用 Spring Boot 非常快速地就完成了服务的集成,同时使用“采集数据以数据类型为基准存储”,完全适配了原有的业务模式,迅速完成了对原有服务的“鸟枪换炮”。

我们的原始数据为单副本存储,经某云上的时序数据库压缩后为 50 GB 左右的数据量,三副本就是 150 GB;但是迁移到 TDengine 上采用三副本后,目前存储占有仅为 114 GB

TDengine Database

按照我们原有的数据存储空间的核算,最少预估需要150 GB(50×3)的磁盘空间来做存储,但有赖于 TDengine 对数据超高的压缩率,比某云时序数据库多节省了将近 40 GB 的容量

数据写入方面,以我们接入的能源行业其中某一个客户为例,他们目前采集的设备为 300 台,数据采集点 45,000 个,每秒的数据写入量 50,000 个点。TDengine单核就可以处理每秒 20,000 次的请求,对于TDengine的集群版来说,50,000 的写入量可谓是轻轻松松,随写随查完全做到了零延迟。而整体上,目前的总接入量每秒基本是 200,000 个点左右。

数据查询方面,针对超级表的数据查询,st_int 数据量 554 亿条数据:

TDengine Database

对该表进行降采样查询——查询一个月内每周的 value 总量:

select sum(value) from st_int where value = 2 AND ts >= ‘1601481600000’ AND ts <=‘1604073599000’ interval(1w);
TDengine Database

在原始数据达到 550 亿行这个数量级的情况下,筛选+分组聚合查询数据仅 8 s 就完成了。但其实在我们的日常使用过程中,更多的是对某个点位(子表)的聚合查询,而这种查询都很快就能完成。

比如下面这个将近一年时间跨度数据的降采样查询,仅用时 0.538 s

select sum(value) from c_Alx1b7hr where ts >= ‘1577808000000’ AND ts <=‘1603987200000’ interval(1w);
TDengine 时序数据库 - “天工云中控”助力传统工业转型,TDengine 帮了我们大忙 8

在日常工作中,单台服务器 CPU 使用维持在 30% 左右,内存的占用量大概为 5 GB 左右。

综合多方面的具体分析,TDengine 对我们分析业务模块不仅带来了性能上的巨大提升,更是在成本上达到了几乎对半的下调,这极大地节省了我们在基础数据库建设上的投入。

TDengine Database

三、结语

在此,我们想感谢一下 TDengine Database 的官方社区。虽然我们使用的是开源版产品,但从项目初步上线,到数据迁移,再到正式完成切换,官方社区依然给到了我们非常全面的一对一支持。在他们的帮助下,我们顺利完成了第一阶段的数据库建设,并且平稳实现了新旧产品的过渡。目前,我们的本地化部署还未走向跨区域(机房)阶段,未来我们计划将 TDengine 更全面地推广到各类业务应用中,促进“天工云中控” SaaS 平台的更平稳发展。

希望在 TDengine 应用到各类项目的过程中,也能促进其各项特性的进一步完善。此外,随着我们业务规模的扩大,双方也有望达成更深层次的合作,实现双赢。

作者简介

李波,中科云创软件研发工程师。地道的南方人,喜欢北方的冰雪世界;标准的程序猿,沉浸各种语言的大海,技术狂热爱好者。