小T导读:江苏金恒信息科技股份有限公司(以下简称“金恒科技”)专注于为工业企业提供工业软件及智能化整体解决方案,服务领域涵盖钢铁、有色金属、石化、电子制造等多个行业。早在 2021 年,金恒科技便在多个业务系统中部署了 TDengine TSDB 2.x 版本。随着 TDengine TSDB 3.x 的发布,金恒科技陆续完成了系统升级至 3.0 版本,在性能、功能和稳定性方面均得到进一步提升。升级后系统整体性能提升约 3 倍,存储成本降低约 80%。本文将重点介绍 TDengine TSDB 在钢铁行业智能制造项目中的具体应用实践。
背景和痛点
金恒科技的智能制造项目覆盖钢铁生产的全流程数据采集与分析,包括高炉、轧机及各类传感器的实时监测,监控指标涵盖温度、压力、振动等关键参数。系统每日处理约 350 亿条数据点,需同时支持实时查询、历史分析与异常告警。
项目面临的核心挑战包括:
- 数据量激增:传统数据库在处理亿级时序数据时,查询延迟显著、存储成本高昂;
- 复杂查询需求:需支持多维度聚合查询和跨表关联,传统数据库性能瓶颈明显;
- 运维复杂性高:原有系统需大量服务器资源,运维成本高,扩展性差。
为应对上述挑战,我们决定引入高性能时序数据库。TDengine TSDB 以其高压缩比、原生 SQL 支持和集群部署能力,成为首选解决方案。
选择 TDengine TSDB 的原因
在选型过程中,我们的目标非常明确:一是追求高性能,要能支撑亿级数据点的高速写入与查询;二是实现低成本,在保证性能的同时显著降低存储和服务器资源消耗;三是强调易用性,要求系统支持标准 SQL,从而降低开发与运维的复杂度;最后是确保高可用性,能够通过集群部署保障系统在长周期运行中的稳定与可靠。
在正式引入前,我们对业界主流的三款时序数据库——InfluxDB、TimescaleDB 和 TDengine TSDB 进行了相关调研。结果如下:
- InfluxDB:查询性能尚可,但存储压缩比低,成本较高;不支持标准 SQL,开发复杂。
- TimescaleDB:基于 PostgreSQL,SQL 支持较好,但高并发写入性能不足,集群部署复杂。
- TDengine TSDB:高压缩比(10:1),支持标准 SQL,内置缓存和多级存储,集群部署简单,运维成本低。
综合对比后,我们发现 TDengine TSDB 在性能与可维护性之间实现了最佳平衡,显然是我们的最优选择。
TDengine TSDB 应用经验分享
重点使用功能—多级存储
在工业互联网中,数据多级存储至关重要,因为它能够根据数据的价值和使用频率,将数据有效地分配到不同的存储介质上。这样的策略不仅有助于应对海量数据的挑战,优化存储资源,降低成本,还能确保数据的安全性和合规性,同时促进数据的共享和流通,从而提高整个工业系统的效率和响应速度。
在使用企业版之前,我们就已经开始使用社区版本的 TDengine TSDB 了,对其架构与特性有较深入的了解。因此在规划集群存储架构时,我们就决定采用 SSD + HDD 的多级存储方案:将近期数据存放在 SSD 上,以显著提升数据写入与查询性能。同时,TDengine 支持灵活的分层数据保留策略,每一层的保留时间都可动态调整——只需通过一条 ALTER 命令修改数据库的 KEEP 参数即可即时生效,极大地方便了运维管理。
在当前架构中,我们将数据划分为四个层级进行存储:
- 热数据(Hot Data):存储在 RAM(内存)中,通常指的是最近一小时内的数据。这部分数据访问频率高,需要快速读写。
- 温数据(Warm Data):存储在 SSD(Tier 0)上,涵盖最近 10 天内的数据。相比热数据,温数据的访问频率较低,但仍需较快的读取速度。
- 冷数据(Cold Data):存储在 HDD(Tier 1)上,包括最近 6 个月的数据。这类数据访问频率进一步降低,可以使用成本更低的存储介质。
- 冻结数据(Frozen Data):存储在 S3(Tier 2)上,通常是最近 3 年的数据。这部分数据访问频率最低,适合长期存储。

重点使用功能—内置函数
TDengine TSDB 内置了丰富的函数库,我们在实际业务中也充分利用了其中的多种函数来满足不同的场景需求。
例如,interp() 函数在我们的应用中就发挥了重要作用。它可用于在指定的时间断面上获取某一列的记录值;当该时间点不存在符合条件的数据时,系统会根据 FILL 参数的设置自动进行插值,从而保证数据的连续性与完整性。
- 在 2017-07-14 18:00:00 到 2017-07-14 19:00:00 间每隔 5 秒钟进行线性插值
SELECT INTERP(current) FROM t1 RANGE('2017-7-14 18:00:00','2017-7-14 19:00:00') EVERY(5s) FILL(LINEAR);
- 在所有时间范围内每隔 5 秒钟进行向后插值
SELECT INTERP(current) FROM t1 EVERY(5s) FILL(NEXT);
- 根据 2017-07-14 17:00:00 到 2017-07-14 20:00:00 间的数据进行从 2017-07-14 18:00:00 到 2017-07-14 19:00:00 间每隔 5 秒钟进行线性插值
SELECT INTERP(current) FROM t1 where ts >= '2017-07-14 17:00:00' and ts <= '2017-07-14 20:00:00' RANGE('2017-7-14 18:00:00', '2017-7-14 19:00:00') EVERY(5s) FILL(LINEAR);
TDengine TSDB 的落地实践
在我们的智能制造平台中,我们将 TDengine TSDB 作为核心的时序数据存储,与 Data Acquisition 数据采集系统、RuleEngine 规则引擎以及前端可视化系统深度集成,实现了从数据采集、存储、分析到展示的完整闭环。
落地效果

- 写入性能:支持 200 万条/秒写入,满足实时数据采集需求。
- 查询性能:最新数据查询达到 10 ms 级别,支持复杂聚合查询。
- 订阅功能:通过 TDengine TSDB 的订阅机制,实时推送异常数据至告警系统。
- 多级存储:企业版支持热/温/冷存储,90% 数据存储在低成本冷存储中,降低成本。
业务场景与收益
- 实时监控:支持 10,000 台设备实时数据展示,响应时间 < 200ms。
- 故障预测:通过振动数据分析,故障预测准确率提升 20%。
- 能耗分析:日均能耗分析时间从 10 分钟缩短至 2 分钟。
- 收益:节省存储和运维成本,系统可用性提升至 99%。
问题与优化
在 2021 年测试 TDengine TSDB 2.x 版本时,我们发现 TDengine TSDB 在以下几个功能上还不支持,希望 其未来能够新增这几个功能,经过与官方支持人员的讨论,他们认为这几个需求完全合理,TDengine 也快速进行了功能开发,并在新版本中进行了发布。理解、听取用户的建议非常重要,不仅可以完善产品的的功能,也让用户使用更加方便,这使我们更加坚定了使用 TDengine TSDB 的信心。这几个功能分别是:
1. 支持动态增加 binary、nchar 数据类型的列长度
TDengine TSDB 支持 BINARY 和 NCHAR 两种字符串类型,但在 2.0 早期版本中,超级表一旦创建后,如果某些列(包括数据列和 TAG 列)的长度设置偏小,就无法动态调整,这在使用中带来了一定限制。TDengine 研发团队在短时间内就完成了功能优化,实现了动态调整字符串列长度的能力。
2. 2.x 版本 SQL 增强——支持 in 语法
在早期版本中,TDengine TSDB 尚不支持 IN 语句,我们只能通过多个 OR 条件来实现过滤查询。经过后续版本的优化,TDengine TSDB 已全面支持 普通列的 IN 查询、TAG 列的 IN 查询,以及 NOT IN 查询,让 SQL 在使用上更加便利。
3. INTERP 函数增加对 BOOL 类型的支持
INTERP 函数用于在指定时间断面获取指定列的记录值,当该时间断面没有符合条件的行数据时,会根据 FILL 参数自动进行插值。在 2.x 版本中,该函数尚不支持对 BOOL 类型数据的插值,而在 3.0 版本中,这一限制已被优化,现可对 BOOL 类型字段执行插值操作:

未来展望
将 TDengine TSDB 应用于我们的实际业务系统后,系统的数据处理性能和维护效率都得到了显著提升。未来,我们将持续关注 TDengine TSDB 的版本更新与功能演进,深入挖掘其在更多业务场景中的应用潜力,不断优化系统架构和数据管理能力。
关于金恒科技
金恒科技秉承“数字化转型生态构建者”的企业愿景,融合新一代信息技术,围绕运营智慧化和生产智能化两大业务方向,全面提供集团管控、产销质财一体化以及覆盖钢铁全流程的数字工厂产品,同时在规划咨询、产线集控、智能装备方面提供企业数字化转型整体解决方案。客户覆盖钢铁、矿山、环保、石化等行业,遍布国内 20 多个省市,拥有南京钢铁、中信特钢、中国宝武、鞍山钢铁、海南矿业、中荷环保、扬子石化等上百家行业重点客户。
作者 | 金恒科技 薛灿




























