轻松应对百万设备数据管理压力,时序数据库 TDengine 助力福州水务统一物联网平台再升级
小T导读:在福州水务统一物联网接入平台项目中,基于 TDengine TSDB,我们实现了水厂、管网等多源水务数据的统一存储与管理,并同时满足了水表平台、产销差系统等多业务系统对数据的高效检索与共享需求。TDengine TSDB “一个采集点一张表” 的建模方式完美契合物联网平台对设备级数据的统一管理需求,其卓越的读写性能与数据压缩能力,有效应对了百万设备数据管理的技术挑战。此外,其还支持标准 SQL,简化了应用开发;具备多副本高可用机制,保障业务连续性;并提供多数据源的零代码写入与数据同步功能,为平台业务拓展与平台间数据同步提供了技术基础。本文将结合项目的具体实践,与大家分享 TDengine TSDB 在福州水务统一物联网接入平台中的应用经验与成效。 水务数据是一种重要的公共数据,规模大、社会关注度高,而且来源多,种类繁杂,不易收集和管理。实现“智慧水务”理念的前提是统一管理分布在各个水厂、各个供/排水环节的众多设备数据,只有将数据接入到统一的物联网平台后,才能在此基础上开发水务生产环节的各个功能,从而建立信息互通平台,实现水务统一平台、统一管理、统一数据、统一服务,避免重复建设,打破数据壁垒,保障数据资源的高效使用和安全可靠。 为此,我们结合福州水务发展战略与实际业务的需求,建设了福州水务统一物联网接入平台,为供排水业务提供统一数据接入与设备管理能力。 统一物联网接入平台面临如下技术难题: 在统一物联网平台建设前,设备管理主要依赖各厂家自建平台,管理割裂、数据分散。 统一物联网平台要完成供水、排水、重点工程项目等相关设备数据的统一存储,具体包括: 这些设备类型繁多、协议标准不统一,且缺乏统一的全生命周期管理机制。数据源分散在多个系统中,与平台“统一管理全部数据”的目标形成天然矛盾。如何通过合理的数据建模,在单一框架下兼容多种设备类型,并同时满足后续灵活的检索与分析需求,成为项目面临的主要挑战。 福州有多个水厂,设备数量达到百万级,统一管理这些设备就意味着要承载所有设备不间断的数据写入压力,而且新设备随时可能接入,平台很难提前对所有设备建表,这对平台的写入能力以及建模灵活性提出了很高的要求。 平台需要接入上百万设备的数据并实现长期存储,这些数据量级很大,价值密度却很低,既需要尽可能降低存储成本,还要在进行长期统计计算时保障数据查询时效性,平台要设法兼顾这两方面的需求。 平台需要为水表平台、产销差系统、综合调度系统、智慧水厂等系统提供实时数据查询、历史数据查询、页面展示、统计报表等业务支持,大量业务应用的并发访问,对底层数据系统的承载能力而言是很大的挑战。二供(二次供水)平台之前使用的 InfluxDB 就曾因查询压力过大导致延迟过高,影响了业务应用。 为解决上述问题,统一物联网接入平台不仅需要良好的顶层设计,还需要功能性能强大且稳定可靠的专业数据库提供底层数据能力支撑。水务设备数据是典型的时序数据,因此我们的数据库选型目标定为时序数据库。 经过对大量时序库的调研,综合考虑成本、功能、性能、稳定性等各个方面,我们最终选择了 TDengine TSDB 作为统一物联网接入平台的时序数据管理引擎。 TDengine TSDB 是一款专为物联网、工业互联网等场景设计与优化的大数据平台,其诸多特性恰好能够解决我们在统一物联网平台建设中遇到的痛点问题: 我们首先参考福州地标、企标,建立了统一的数据接入协议标准,包含供水领域水厂、管网、水表、二供泵房、加压泵站、排水泵站、排水管网检测设备、水质监测设备等设备设施类型。如下图所示,红框标注的是一部分已标准化的协议。 标准化协议解决了统一接入的问题,下一步就是统一建模。 虽然平台接入的设备种类繁杂型号多样,但只要是设备数据,其数据结构就存在共性:每个设备都有采集的物理量以及设备自身的描述信息(标签)。物理量会随着时间不断变化,而标签数据则是静态的不会随时间变化。 TDengine TSDB “一个采集点一张表” 的数据建模方法正是针对设备数据的特点而设计:每个设备对应一张表,设备采集的物理量对应表的数据列,设备自身信息例如设备编号则对应标签(TAG)列。把静态的标签数据与动态的采集数据分开,任何设备都可套用这个建模方法,极大降低了我们的数据建模难度。 采用上述方法,数据库中要创建上百万张表来对应上百万的设备,当需要对同类型设备进行聚合查询时显然会十分不便。TDengine TSDB 的 “超级表-子表” 设计解决了这个问题:对于同一类设备,提取其数据结构创建一张 “超级表” ,具体的设备数据则记录在该超级表名下的对应“子表”中,当需要对某类设备进行聚合查询时,直接查询其对应的超级表即可,避免了多表之间的重复查询和拼接等操作,十分高效便捷。超级表-子表的关系如下图所示。 在福州水务统一物联网接入平台项目中,我们共计创建了 1 个业务 DB 名为 fziot,一百余张超级表,超过 190 万张子表。统一物联网平台接入的设备数量目前还在一直增长,设备总数已经超过 100 万,增长变化量如下图所示: TDengine TSDB 的核心竞争力在于其卓越的写入和查询性能。相较于传统的通用型数据库,TDengine TSDB 充分利用了时序数据的时间有序性、连续性和高并发特点,自主研发了一套专为时序数据定制的写入及存储算法,“一个数据采集点一张表” 的设计不仅有利于设备建模与管理,还能大幅提升写入性能。 极高的数据写入性能使得 TDengine TSDB 能够轻松承接统一物联网平台的数据写入压力,自投入使用以来,从未因写入性能不足出现阻塞与延迟。 物联网平台的数据来自多个系统,设备的数量一直在动态变化,因此无法提前为所有设备创建好对应的表,这就要求数据库能够在数据写入时自动判断并建表。 TDengine TSDB 提供无模式(schemaless)写入方式,无需预先创建超级表或子表,TDengine TSDB 会根据实际写入的数据自动创建相应的存储结构。此外,在必要时,无模式写入方式还能自动添加必要的数据列或标签列,确保写入的数据能够被正确存储。 无模式写入示例如下,TAG 列、数据列、主键时间戳之间用空格分开: 该写入语句,可向名为 properties\_testabc1 的超级表写入数据,TAG 列 deviceId,赋值为 testdevice1,两个数据列分别为 createTime、temperature,赋值为 1746669509685i、38.5 ,最后一个数字是这一条记录的时间戳。如果该子表已经存在(TAG 列内容完全一致),则自动写入已存在子表中,若不存在,则自动创建新子表并写入。 TDengine TSDB 是专门为时序数据管理打造的大数据平台,对数据压缩进行了特殊设计: 针对性的存储技术以及两级数据压缩,使得 TDengine TSDB 对时序数据的压缩效率显著高于其它产品 统一物联网平台从 2023 年 8 月正式投入使用,至今还在不断增加接入的设备数量,目前已经接入了超过 100 万各型设备,TDengine TSDB 三节点三副本集群,目前共计使用磁盘空间 8.1 TB (截至 2025 年 5 月),相比市场上同类产品,数据压缩率优势明显。 为实现海量数据规模下的高性能查询,TDengine TSDB 从多个维度进行了精心的设计: 统一物联网平台,不仅把多系统的数据集中统一管理,也同时承接了多系统的数据应用业务,过去分散在各个系统的业务访问压力现在都集中到了一起。 使用 TDengine TSDB 带来的性能提升十分明显,例如二次供水泵房数据数据过去存储在二供平台,大数据中心向二供平台抽取生产数据用于分析应用,当时二供平台采用的底层时序库是 InfluxDB,大数据中心每小时抽取一次二供数据,结果由于压力过大,导致 InfluxDB 延迟现象严重,影响到了正常业务运行。 数据抽取 SQL 如下: 在统一物联网平台建设完成后,统一使用 TDengine TSDB 支持各个系统的数据查询业务,同样的业务,在使用 TDengine TSDB 后只需 1 分多钟即可抽取完毕,且能够持续稳定运行。 使用 TDengine TSDB 后的抽取 SQL: 定时抽取业务运行情况如下,可见稳定且高效: 依托强大的功能与性能优势,TDengine TSDB 成功应对了上述技术难题。作为一款分布式大数据引擎,其还具备很多传统数据库软件不具备的特殊功能,给我们带来了意料之外的优势。 与实时库需要开发者专门学习数据库特有 API 不同,TDengine TSDB 支持标准 SQL ,开发人员不需要太多学习成本就能上手使用,TDengine TSDB 还针对时序数据特点提供了许多特色查询 SQL ,对我们开发新功能、新应用提供了很大的便利。 对于水务系统的数据平台而言,业务的持续性十分重要。TDengine TSDB 作为分布式时序数据库,支持高可用特性,基于 RAFT 协议的标准三副本方案,能够保障集群中有 1 个节点损坏时,业务不受影响,这对我们而言十分有必要。 TDengine TSDB 支持以零代码方式将来自不同数据源的数据无缝导入,而且无需额外部署 ETL 工具,即可对数据进行自动提取、过滤和转换。不同 TDengine TSDB 集群之间也可以很方便地通过 taosX 进行数据同步。这为我们将来进行多数据平台数据统一管理,以及平台间数据同步等工作提供了技术基础,使得数据平台的可拓展性大大提高。 统一物联网接入平台实现了数据的统一采集汇聚分发、设备生命周期管理、实时预警信息推送等功能,加快公司信息化建设速度,减少重复数据建设造成的成本浪费,提升工作效率。 福州水务统一物联网接入平台目前接入的设备数量已经超过 100 万且还在增长,TDengine TSDB 作为底层支持系统表现优异。未来我们将和 TDengine 一起,为水务领域的企业数字化建设做出更多的贡献。 福州市城建数智科技有限公司于 2022 年 7 月成立,是福州城建设计研究院有限公司的全资子公司,重点服务于水务企业,提供咨询规划、软件开发、运维保障等技术服务工作,公司以水务 GIS 平台、大数据平台、物联网平台、水务智慧大脑为核心。提供供水和排水一体化解决方案,并逐步扩展供排水硬件设备的供应业务,发展自动化控制,提供设备安装、检修、校验等服务,更好地对外输出水务领域的数字化解决方案以及相关的软、硬件产品。 作者信息 本文作者:陈欣项目背景
存在问题
标准不统一,设备管理割裂,建模难度大
超百万设备数据持续写入,带来性能挑战
海量数据长期存储带来的存储成本压力
系统大数据量查询,面临性能瓶颈
解决方案
多系统数据统一管理 —— 一个采集点一张表



百万级设备数据写入 —— 高性能与无模式写入功能
高性能
无模式写入
properties_testabc1,deviceId=testdevice1 createTime=1746669509685i,temperature=38.5 1746669509684000000海量数据长期存储 —— 专业压缩算法
多系统数据大数据量查询 —— 高性能查询
"sql":"select \"time\",\"cid\",\"devid\",\"tag\",\"value\" from (select mean(value) as value from \"raw\" where time >= #influx_start_time# and time < #influx_end_time# group by *,time(1m))"SQL
select last(_ts,`createTime`,`numberValue`,`value`),`deviceId`,`property` from fziot2.properties_egbf_new where _ts >= #ts_start# and _ts < #ts_end# and `createTime` >= to_unixtimestamp(#createtime_start#) and `createTime` < to_unixtimestamp(#createtime_end#) partition by `deviceId`,property interval(1h)
TDengine 带来的其它优势
支持 SQL 语句,应用开发十分便利
支持高可用,保障了业务稳定性
支持多种数据源零代码接入
展望
关于城建数智科技