⚖️ 丁丁选型对比系列 · 第2篇

时序数据库怎么选?TDengine vs InfluxDB vs IoTDB

💡 为什么工业监控不能用 MySQL 存历史数据?国产时序数据库 TDengine 和 IoTDB 到底哪个好?

这三个是工业/物联网项目最常被拿来比较的时序数据库:TDengine(涛思,国产,工业高频写入最强)、InfluxDB(美国,生态最成熟,DevOps 经典组合)、Apache IoTDB(清华发起,Apache 2.0 最自由)。这篇用 10 个维度说清楚,工业场景到底该上哪个。

对比对象3 款时序数据库
对比维度10 项
丁丁实战TDengine 14 个月
建议工业选TDengine,监控选InfluxDB
🎯 丁丁一句话结论

工业现场高频写入、要内置 MQTT/OPC UA 直接采、做国产替代——选 TDengine(性能和工业协议最强,注意开源版是 AGPL);DevOps 监控、要最成熟生态、Telegraf+Grafana 经典组合、要最宽松 MIT 协议——选 InfluxDB;Java 技术栈、要 Apache 2.0 完全自由商用、边缘到云端一体——选 Apache IoTDB。可视化都用 Grafana,不纠结。

01 为什么不用 MySQL,非要时序数据库

很多工程师第一个问题是:我 MySQL 用得好好的,为什么要额外学一个时序数据库?因为工业监控的数据形状和业务数据完全不同:

  • 写入是海量的:一条产线几百个测点,每个每秒一条,一天就是几千万行。MySQL 靠索引和事务维护,这个写入量很快就把磁盘和锁拖垮。
  • 查询是按时间的:工业看板几乎都是"查最近 1 小时""查昨天某设备趋势",时序库按时间分区、自动压缩,查询比 MySQL 快一个数量级。
  • 存储要省:时序库自带列式压缩和自动降采样,同样数据量能省约 10 倍磁盘。
  • 留存策略:自动按时间归档、降采样、过期清理,不用自己写定时任务。

测点少、量小,SQLite/MySQL 够用;一旦上千测点、秒级写入、要存多年历史,时序库是必选项。

02 10 个维度逐项对比

对比维度 TDengine InfluxDB Apache IoTDB
厂商 / 出身 涛思数据(北京,国产) InfluxData(美国) Apache 基金会,清华大学发起(国产)
开源协议 AGPL v3(企业版另购) MIT(最宽松) Apache 2.0(最友好,可商用)
开发语言 C/C++(极致性能) Go Java
写入性能 极高,专为工业高频优化 高 高
生态成熟度 国内工业圈最热 最高,Telegraf+Grafana 经典组合 Apache 生态,国内成长中
工业协议接入 内置 MQTT/OPC UA/Modbus,开箱即采 靠 Telegraf 等外接采集器 原生 MQTT + JDBC,偏 SDK 接入
内置能力 缓存/订阅/流式计算一体 偏存储,生态靠外接 边缘到云端一体
国产 / 信创 是(国产) 否(美国) 是(国产,Apache 中立治理)
上手难度 中,文档完善 最低,教程最多 中,需 Java 背景更顺
典型规模 海量工业测点、高并发写入 中小规模 DevOps 监控指标 边缘到云、中等规模工业数据
📌 选型最容易踩的坑——开源协议:

TDengine 开源版是 AGPL v3(有传染性,闭源商用要评估或买企业授权);InfluxDB 是 MIT(最宽松);IoTDB 是 Apache 2.0(商用最自由)。做对外销售的产品时,这条比性能还重要。

03 三种典型场景,直接对号入座

🏭
选 TDengine,如果你:
  • 工业现场高频写入,测点成千上万
  • 要内置 MQTT/OPC UA/Modbus,采集存储一体
  • 做国产替代 / 信创项目
  • 要内置缓存、流式计算、数据订阅
  • 接受 AGPL 或愿意买企业版
🖥️
选 InfluxDB,如果你:
  • DevOps 服务器/应用监控指标存储
  • 要用 Telegraf + InfluxDB + Grafana 经典组合
  • Go 技术栈,要最成熟生态和教程
  • 需要最宽松的 MIT 协议
  • 国际项目、团队英文资料无障碍
🐧
选 Apache IoTDB,如果你:
  • Java 技术栈,要原生 JDBC 接入
  • 要 Apache 2.0 完全自由商用
  • 边缘到云端一体部署
  • 高校 / 研究项目 / Apache 生态用户
  • 对协议中立性和国产自主有要求

04 丁丁的实战建议

我自己在冲床监控、能源管理、OEE 项目里主力用 TDengine——工业现场要的是"采上来就存、存了就能查、还省服务器",它内置 MQTT 和流式计算,不用再拼一堆组件。

但如果你做的是 IT 运维监控(服务器 CPU、数据库指标),InfluxDB + Telegraf + Grafana 是经过无数项目验证的组合,别硬上 TDengine。IoTDB 我更多在 Java 团队、对 Apache 协议有要求的项目里推荐。

真正要避免的坑:一上来就按"最大规模"选型。先算清楚你的测点数量、写入频率、要存多久,再决定。小项目别为了"国产"上重武器,大项目别为了省软件费让 MySQL 硬扛。

常见问题 FAQ(选型时最常被问)

Q:为什么工业监控不能用 MySQL 这类关系库存历史数据?

A:MySQL 是为事务和关系查询设计的,不擅长每秒成千上万条带时间戳的测点写入。高频写入会把索引和锁拖垮,历史数据越积越慢,而且没有自动按时间压缩、降采样和留存策略。时序数据库就是为"高写入、按时间查、自动压缩"设计的,工业监控点位动辄每秒一条,专用时序库比关系库快一个数量级,存储还省 10 倍。

Q:TDengine 和 InfluxDB 到底怎么选?

A:工业现场高频写入、要内置 MQTT/OPC UA 直接采、做国产替代,选 TDengine(性能和工业协议内置最强);做 DevOps 服务器/应用监控、要和 Telegraf+Grafana 无缝组合、团队是 Go 技术栈、需要最宽松的 MIT 协议,选 InfluxDB。一句话:工业物联网选 TDengine,IT 监控选 InfluxDB。

Q:TDengine 是国产的吗?开源协议有没有坑?

A:TDengine 是北京涛思数据的国产开源产品,工业圈用得很多。但它的开源版是 AGPL v3 协议——这个协议有传染性,如果你的产品要闭源商用并对外分发,需要仔细评估或买企业授权。想要无顾虑商用,InfluxDB 的 MIT 和 IoTDB 的 Apache 2.0 更宽松。

Q:IoTDB 和 TDengine 哪个更适合国产替代?

A:两者都是国产。TDengine 在工业物联网落地案例和中文社区上更成熟、性能和内置工业协议更强;IoTDB 由清华大学发起、Apache 基金会中立治理、Apache 2.0 协议商用最自由,适合 Java 技术栈、边缘到云端一体、高校或对协议宽松度敏感的项目。要成熟工业落地上 TDengine,要 Apache 中立和协议自由选 IoTDB。

Q:这三个都能配 Grafana 做可视化吗?

A:都能。Grafana 官方数据源插件支持 InfluxDB 和 IoTDB,TDengine 也有官方/Grafana 兼容的数据源插件。三个都能接 Grafana 做监控大屏,可视化层不用纠结,差别在存储层。

Q:数据量不大,有必要上专门的时序数据库吗?

A:如果就几十个点、秒级存一两年,SQLite 或 MySQL 加合理索引也能跑。但一旦测点上千、写入频率到秒级、要存多年历史并做趋势分析,就值得上时序库——写入性能、压缩和查询速度的差距会非常明显,越往后越省服务器钱。

拿不准你的项目该上哪个时序数据库?

丁丁做过冲床监控、能源管理、OEE 等多个时序库落地项目,可以根据你的测点规模、保留周期和技术栈,帮你定一套不浪费服务器的存储方案。

联系丁丁选型咨询 →