写在前面:本文适合对时序数据库感兴趣、想入门 TDengine 的同学阅读。如果你也在犹豫要不要学,希望这篇文章能给你一点动力。


一、为什么突然想学 TDengine?

最近圈子里有个名字出现得越来越频繁——TDengine

作为一个常年和数据库打交道的开发者,我原本对时序数据库的认知还停留在 InfluxDB、Prometheus 这些"洋品牌"上。直到前阵子参加了一个技术沙龙,发现好几个做物联网的朋友都在聊一个国产开源的时序数据库,而且口碑相当不错。

好奇心驱使下,我查了一下:

  • GitHub 上 Star 数已经超过 24k

  • 核心代码完全开源,采用 AGPL 协议

  • 背后是一家叫涛思数据的中国公司

  • 创始人陶建辉老师,在业界很有名望

更关键的是,它主打的就是物联网、工业互联网、车联网这些当下最热的场景。作为一个不想被时代抛下的技术人,我决定:开搞!

于是,就有了这篇"第一天学习笔记"。


二、TDengine 到底是什么?

先上一段"官方定义":

TDengine 是一款开源、高性能、云原生的时序数据库(Time-Series Database),专为物联网、工业互联网、车联网、能源等场景优化设计。

翻译成人话就是:它特别擅长处理那种"带时间戳的数据"

什么叫带时间戳的数据?举个栗子:

  • 你家智能电表每 5 分钟上报一次用电量

  • 工厂里的温度传感器每秒采集一次车间温度

  • 网约车每分钟上报一次 GPS 位置和车速

这些数据都有一个共同特点:时间是最重要的维度,数据量巨大,但结构相对简单

传统的关系型数据库(比如 MySQL)处理这种数据会很吃力,而 TDengine 就是为这种场景"量身定制"的。


三、几个必须搞懂的核心概念

第一天的学习,我先把重点放在了理解 TDengine 的核心概念上。这几个概念搞懂了,后面的学习会顺畅很多。

1. 超级表(STable)

这是 TDengine 最亮眼的设计之一。

想象你在管理一个智能电表系统,有 10 万块电表。每块电表都在上报数据:电流、电压、功率、时间戳。

在传统数据库里,你可能要给每块电表建一张表,或者把所有数据塞进一张大表里。前者表太多不好管理,后者查询效率低。

TDengine 的解决方案是——超级表(Super Table,简称 STable)

你可以先定义一个超级表,规定好所有电表数据的字段结构。然后每块电表对应一张子表,子表继承超级表的字段,但各自独立存储。

超级表:meters
  ├── 子表:d1001(1号电表的数据)
  ├── 子表:d1002(2号电表的数据)
  ├── 子表:d1003(3号电表的数据)
  └── ...(共10万张)

这样一来,既能统一管理表结构,又能保证查询时只扫描相关子表的数据,性能和管理性兼得。这个设计真的很巧妙!

2. 标签(Tag)

每块电表除了采集的数据(电流、电压等),还有一些静态属性:比如所属区域、设备型号、安装位置。

这些信息在 TDengine 里就叫标签(Tag)。标签是定义在超级表上的,但每个子表可以有自己的标签值。

标签的最大作用是分类和过滤。比如你可以轻松查出"北京市所有 A 型电表的平均功率",TDengine 会通过标签快速定位到相关子表,而不是全表扫描。

3. 时间线

这个很好理解:一个设备(对应一张子表)产生的按时间排序的数据序列,就是一条时间线

10 万块电表 = 10 万条时间线。TDengine 的架构对海量时间线的支持非常友好,这也是它区别于其他时序数据库的重要优势。


四、凭什么叫板 InfluxDB?

说到时序数据库,很多人第一反应是 InfluxDB。那 TDengine 和它相比,到底强在哪?

我整理了一个简单的对比:

维度

TDengine

InfluxDB

开源协议

AGPL,核心完全开源

核心开源,但企业级集群功能需付费

国产化

✅ 国产,自主可控

❌ 国外产品

写入性能

官方测试最高可达 InfluxDB 的 10 倍以上,单机吞吐可达百万级数据点/秒

高,但集群功能需付费

数据压缩

10:1 甚至更高

一般

SQL 支持

类 SQL,学习成本低

使用 InfluxQL/Flux,需额外学习

数据订阅

内置,支持 Kafka 协议

需借助外部工具

边云同步

原生支持

需自行搭建

总结几个 TDengine 的核心优势

1. 高性能写入

TDengine 针对时序数据的写入做了大量优化。官方 TSBS 基准测试显示,其写入性能最高可达 InfluxDB 的 10 倍以上,单机吞吐可达百万级数据点/秒。对于物联网场景下海量设备并发上报的情况,这个性能非常关键。

2. 超高压缩比

时序数据库要存的数据量往往是 TB 甚至 PB 级别的。TDengine 通过列式存储和专用压缩算法,可以实现 10:1 甚至更高的压缩比。存储成本直接打下来,这对企业来说是真金白银的节省。

3. 数据订阅

TDengine 内置了类似 Kafka 的数据订阅机制。你可以订阅某张表的数据变更,实时推送给下游系统。这个设计省去了额外部署消息队列的麻烦,架构更简洁。

4. 边云同步

物联网场景下,很多数据先在边缘端采集,再同步到云端。TDengine 原生支持边缘节点和云端之间的数据同步,对工业互联网、车联网这类场景非常友好。


五、它到底能用在哪?

TDengine 的应用场景非常聚焦,但每个都是大市场:

🚗 车联网

每辆车上百个传感器,实时上报位置、速度、油耗、电池状态。TDengine 可以轻松管理百万级车辆的海量时序数据。

🏭 工业互联网

工厂里的机床、传感器、PLC 设备,7×24 小时不间断产生数据。TDengine 用于设备监控、故障预警、生产优化。

⚡ 能源电力

智能电网、风电场、光伏电站,需要对发电量、设备状态进行实时监控和分析。

🏠 物联网平台

智能家居、智慧城市、环境监测……凡是"大量设备 + 高频数据采集"的场景,TDengine 都能派上用场。


六、第一天学习心得

说实话,第一天的学习让我对 TDengine 有了很大改观。

起初我以为它只是一个"国产替代品",但深入了解后发现,它在架构设计上确实有很多针对中国场景的独到思考

  • 超级表的设计,完美契合了"海量同类设备"的物联网场景

  • 对 SQL 的支持,降低了国内开发者的学习门槛

  • 边云同步、数据订阅这些功能,都是国内工业互联网项目的刚需

当然,第一天只是"纸上谈兵",还没实际上手跑起来。

下一步计划:

  1. 本地部署一个 TDengine 实例,把官方示例跑起来

  2. 用 Python 写个程序,模拟一批设备写入数据

  3. 试试查询、聚合、数据订阅这些核心功能

  4. 和 InfluxDB 做个简单的性能对比测试


七、写在最后

在这个数据库领域长期被国外产品主导的时代,看到 TDengine 这样的国产开源项目越做越好,作为一个中国开发者,还是挺自豪的。

当然,技术没有国界,选择什么工具要看具体场景。但多了解一个优秀的国产选项,总归不是坏事。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐