第一天学 TDengine,我被这个国产时序数据库“秀“到了
写在前面:本文适合对时序数据库感兴趣、想入门 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 的支持,降低了国内开发者的学习门槛
-
边云同步、数据订阅这些功能,都是国内工业互联网项目的刚需
当然,第一天只是"纸上谈兵",还没实际上手跑起来。
下一步计划:
-
本地部署一个 TDengine 实例,把官方示例跑起来
-
用 Python 写个程序,模拟一批设备写入数据
-
试试查询、聚合、数据订阅这些核心功能
-
和 InfluxDB 做个简单的性能对比测试
七、写在最后
在这个数据库领域长期被国外产品主导的时代,看到 TDengine 这样的国产开源项目越做越好,作为一个中国开发者,还是挺自豪的。
当然,技术没有国界,选择什么工具要看具体场景。但多了解一个优秀的国产选项,总归不是坏事。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)