公司简介:
中科云创是一家致力于通过工业互联网帮助装备制造企业转型为装备服务企业的公司。是中国云体系产业创新战略联盟、中国智能制造系统解决方案供应商联盟的理事单位。
公司创始人、核心团队成员来自于微软、巴鲁夫、思科、索尼等知名软硬件公司,并拥有一批技术过硬的产品开发人员,具有大量工业互联网经验与资源,对于工业领域的痛点把握极其精准敏锐。同时公司在产品研发、市场开拓等方面有着丰富的经验以及快速落地的实力。
作者简介:
李波,中科云创软件研发工程师。地道的南方人,喜欢北方的冰雪世界;标准的程序猿,沉浸各种语言的大海,技术狂热爱好者。
正文:
我们中科云创的“天工云中控”项目:是一项结合多种IT技术,以数据为基础、设备为节点、流程为准绳、人员为中心,综合运用物联网、语音识别、图像识别、机器学习、AR、设备远程维修等多项最新科技搭建的工业物联网设备健康管理SaaS服务平台,定位是为工业设备全生命周期管理提供技术支持,提高企业生产效率,降低运维、融资和备件采购成本。在这个项目中,TDengine作为基础数据库的角色,承担着实时数据存储,高效压缩,快速聚合查询等任务,在“天工云中控”的工业物联网、智慧城市、传统工业,能源行业,化工行业,消防安全等领域发挥了十分重要的作用:
当前,“天工云中控”已经帮助多地政府,建立针对当地生产企业集群的通用化工业设备上云公共服务平台,帮助政府和企业快速实现行业数据分析、订单透明化生产、设备和环境安全监控和预警等功能。在智慧城市领域:“天工云中控”提供的物联网数据中台、智慧消安防、智慧配电、智慧灯杆、城市内涝监控、人脸测温门禁等多个垂直应用,也已经应用在北京、重庆、成都、贵阳、武汉等多个城市甚至包括新加坡等海外国家,持续保护人类城市安全。
结识过程:
2020年中旬,我们开始对时序数据库做技术选型。由于之前公司采用的是某公有云的数据库,所以一开始的评估就是始于公有云的。但出于对公司数据安全的角度考虑,我们发现数据库服务,数据存储,备份等需求在公有云上都存在很多不可控的因素。所以我们开始转而进行可以私有化部署的时序数据库选型。接下来,在TDengine和Influxdb之间,各种评估工作也随之展开。但是Influxdb只是单机开源,而且,在单机规模下的性能,存储,数据压缩比等各方面的指标也不如TDengine。除此之外,从多方资料以及官方人员的科普得知,其实TDengine更大的亮点在于集群横向扩展处理海量数据且功能开源,再加上TDengine是我们国产的数据库,因此我们最终确定采用TDengine作为我们数据库的解决方案。
落地:
后来,我们使用了三台4核8G,数据磁盘1T(支持无限扩容),搭建起了一套三节点三副本的TDengine集群服务。在测试完成之后,TDengine于2021年7月正式投入使用。2021年12月,天工云中控项目正式全面地切入TDengine服务。
目前我们根据业务类型已经创建了8张超级表,以及数十万张子表,基础数据如下:
TDengine在应用集成方面做得非常完善,涵盖C/C++,java,Python等语言的支持,我们在应用的过程中,采用springboot非常快速的就完成了服务的集成。我们使用了“采集数据以数据类型为基准存储”,完全适配了原有的业务模式,迅速地完成了对原有服务的鸟枪换炮。
我们的原始数据为单副本存储,经某云上的时序数据库压缩后为50G左右的数据量,但是迁移到TDengine上采用三副本后,目前存储占有仅为 114GB:
按照我们原有的数据存储空间的核算,最少预估需要150G(50*3)的磁盘空间来做存储,但TDengine对数据超高的压缩率,比某云时序数据库多节省了将近40G的容量。
在数据写入方面,以我们接入的能源行业其中某一个客户为例,他们目前采集的设备三百,数据采集点45000个,每秒的数据写入量50000个点。由于TDengine可以单核处理每秒2万次的请求,所以对于TDengine的集群版,五万的写入量可谓是轻轻松松,随写随查完全做到了零延迟。而整体上,目前的总接入量每秒基本是20万个点左右。
在数据查询方面,针对超级的数据查询,st_int,数据量554亿条数据:
对该表进行降采样查询——查询一个月内每周的value总量:
select sum(value) from st_int where value = 2 AND ts >= ‘1601481600000’ AND ts <=‘1604073599000’ interval(1w);
在原始数据达到550亿行这个数量级的情况下,筛选+分组聚合查询数据仅8秒就完成了。但其实在我们的日常使用过程中,更多的是对某个点位(子表)的聚合查询,而这种查询都很快就完成了。
比如下面这个将近一年时间跨度数据的降采样查询,仅用时0.538s:
select sum(value) from c_Alx1b7hr where ts >= ‘1577808000000’ AND ts <=‘1603987200000’ interval(1w);
日常工作中,单台服务器CPU使用维持在30% 左右,内存的占用量大概为5GB左右。
综合多方面的具体分析,TDengine对我们分析业务模块不仅带来了性能巨大的提升,更是带来成本几乎对半的下降,这极大的节省了我们在基础数据库建设的投入。
在此,我们想感谢一下TDengine官方社区。虽然我们使用的是开源版产品,但在我们从项目初步上线,数据迁移,再到正式完成切换,官方社区依然给到了我们非常全面的一对一支持。他们的帮助下,我们顺利完成了第一阶段的数据库建设,并且平稳完成了新旧产品的过渡。目前,我们的本地化部署还未走向跨区域(机房)阶段,未来我们规划将使用TDengine数据库更全面的推广到我们的各类业务应用中,促进“天工云中控”SaaS平台的更平稳发展。
希望在应用TDengine在各类项目的过程中,也能促进TDengine数据库产品更好的完善。此外,随着我们的业务规模扩大,我们也有望达成更深层次的合作,合作双赢。