FEATURED · 精选文章

TDengine TSDB 官方手册阅读指南:时序数据模型、角色化学习路径与内核架构地图

发布时间 / 2026/9/12 2:04:55
来源 / 创域科博编辑部
栏目 / 资讯中心
TDengine TSDB 官方手册阅读指南:时序数据模型、角色化学习路径与内核架构地图 TDengine TSDB 官方手册阅读指南时序数据模型、角色化学习路径与内核架构地图【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine本文是 TDengine® TSDB以下简称 TDengine官方用户手册的阅读指南帮助架构师、开发者与系统管理员按角色快速定位所需章节同时系统梳理时序数据基础概念、一表一采集点 / 超级表 / 虚拟表三大数据模型、SQL 时序扩展以及内置缓存、流计算、数据订阅等核心能力。读完本文你将掌握 TDengine 文档的整体脉络明确不同角色应从哪份文档入手并能沿着仓库内真实路径深入源码与内部设计。TDengine TSDB 是什么TDengine 是一款开源、云原生cloud-native的时序数据库Time-Series DatabaseTSDB专为物联网、车联网、工业互联网、金融、IT 运维等场景而设计。它内置了缓存Cache、**流计算Stream Processing与数据订阅Data Subscription**能力能够在很大程度上降低系统设计的复杂度以及开发、运维成本是一个面向时序数据的一体化平台。这份阅读指南所对应的官方用户手册覆盖了基础概念、安装、使用、特性、开发接口、运维与内核设计等全部主题面向三类核心读者架构师关注整体选型、数据建模与集群规划开发者关注连接、写入、查询、订阅与流计算等编程能力系统管理员关注安装部署、集群运维、监控与调优。如果对时序数据本身的价值与业务含义尚不熟悉建议先阅读时序数据基础而无论扮演何种角色正确使用 TDengine 之前都应仔细阅读基本概念。按角色定位章节四条阅读路径官方手册按读者角色给出了清晰的阅读路径下表汇总了四条主线及其对应章节读者角色阅读路径手册章节仓库路径覆盖内容应用开发者开发者指南连接数据库、数据建模、写入、查询、流处理、缓存、数据订阅、用户自定义函数UDF并提供多语言示例代码系统管理员运维与工具安装与升级、容灾、集群部署与维护、数据导入导出、配置参数、健康监控、性能调优内核/开源爱好者TDengine 内部设计分布式架构、存储引擎、查询引擎、数据订阅、流计算引擎想快速体验的用户快速上手Docker、安装包、云服务三种方式快速搭建并体验写入与查询开发者从开发者指南起步手册建议开发者按以下开发路径逐步深入选择连接方式无论使用何种编程语言都可以通过 REST API 访问 TDengine多数语言还提供了专用连接器详见连接器参考设计数据模型根据场景与数据特征决定建库数量区分静态标签与采集量创建正确的超级表再按需创建子表选择写入方式支持标准 SQL 写入、参数绑定Parameter Binding写入以及免建表的 Schemaless 写入兼容 InfluxDB / OpenTSDB 等行协议编写查询 SQL完成统计、过滤与分析实时统计分析轻量级实时统计含监控大屏优先使用流处理而非部署 Spark、Flink 等重型流系统消费新写入的数据需要实时消费新数据时优先使用数据订阅而非部署 Kafka 等消息队列获取最新状态如车辆管理等需要每个采集点最新状态的场景优先使用 TDengine 内置 Cache而非单独部署 Redis扩展计算能力内置函数不满足需求时使用用户自定义函数UDF扩展计算逻辑。开发者指南还提供示例代码目录C、Java、Go、Python、Rust、Node.js、C# 等多语言示例且示例正确性由 CI 覆盖对应脚本位于 test/cases/83-DocTest。系统管理员从运维与工具入手大数据时代单机垂直扩展无法满足持续增长的业务需求系统普遍需要水平扩展能力集群化已成为大数据与数据库系统的必备能力——TDengine 团队不仅实现了集群还将这一核心能力开源。运维章节专门介绍集群的规划、部署、维护与监控。内核与开源阅读TDengine 内部设计该章节覆盖分布式架构、存储引擎、查询引擎、虚拟表查询优化、数据订阅TMQ、流处理、缓存、压缩与日志建议结合开源仓库中的源码一同阅读。以架构篇 01-arch.md 为例其定义了物理节点pnode、数据节点dnode、虚拟节点vnode、管理节点mnode、计算节点qnode、流计算节点snode与虚拟节点组vgroup等完整逻辑单元并说明了基于 Raft 协议的主从复制、同步复制、Learner 角色扩展与写路径细节。先补基础时序数据的十个特征与典型场景时序数据基础归纳了时序数据的十个特征是理解 TDengine 设计取舍的前提数据按时间有序且总带时间戳数据是结构化的且多为数值每个采集点是一条数据流来源唯一更新与删除很少发生事务不那么关键相对互联网应用属于写多读少用户更关心一段时间内的趋势而非单点值数据有保留周期可批量删除过期数据需要实时分析秒级告警与决策流量平稳且可预测可精确估算带宽与存储。典型应用场景包括电力与能源、车联网/轨道交通、智能制造、智慧油田、IT 运维、金融量化交易等。这些场景共同的特点是数据量大、写入持续、需要实时计算与低成本存储这正是通用大数据栈Hadoop 生态 Kafka Redis Flink 等力不从心之处——通用栈存在开发效率低、运行效率低、运维成本高、产品交付慢、小规模私有部署过重等结构性缺陷因而需要专为时序数据设计的平台。三大数据模型一表一采集点、超级表与虚拟表TDengine 充分利用了时序数据特性提出了一表一数据采集点、超级表与虚拟表三类数据模型并设计了创新的存储引擎显著提升了写入、查询与存储效率。官方手册以智能电表为例说明这些概念电表采集 current电流、voltage电压、phase相位三个量并带有 location位置与 groupid组 ID两个静态属性。指标Metric与标签Tag指标Metric从传感器、设备等处获得的物理量如电流、电压、温度随时间变化数据量持续增长标签Tag与采集点关联的静态属性如型号、颜色、位置数据量相对稳定可增删改。一表一数据采集点TDengine 采用传统关系型数据库模型管理数据同时要求每个数据采集点DCP一张表。这一设计带来四重收益详见 02-basic-concepts.md每个采集点数据源唯一、单表单写者可实现无锁写入大幅提升写速采集点数据天然按时间有序写入采用append-only 追加方式单点数据在块内连续存储按时间段读取可显著减少随机读数据块内采用列式存储可按数据类型选择不同压缩算法压缩率高。表的第一列必须是时间戳TDengine 会基于该时间戳建索引并做列式存储。超级表Supertable与子表Subtable当设备数量激增时跨采集点聚合操作面对海量表会异常繁琐。超级表将结构相同、静态属性不同的采集点聚合成一个逻辑统一表一个超级表包含多个子表子表结构相同但标签值不同子表结构不能直接修改但修改超级表的列与标签会立即对所有子表生效超级表本身只定义模板不存储数据与标签。查询超级表时TDengine 先通过标签过滤出符合条件的表再对各子表查询时序数据并合并结果从而高效实现跨采集点的聚合分析。下图展示了指标、标签、超级表与子表的关系虚拟表Virtual Table现实中的设备往往包含多个采集频率不同的传感器如风机的电气、环境、机械参数单表描述困难多表又会引发多层 Join 的性能问题。为此 TDengine 引入虚拟表VTable它不存储物理数据而是在查询时动态合并多个源表子表或普通表的列来完成分析计算。虚拟表分为虚拟超级表、虚拟子表与虚拟普通表支持按时间戳对齐合并、缺失值以 NULL 填充、自动反映源表变化且不可写入、不可删除、只可查询。这一机制让先写入、后建模成为现实采集阶段可按贴近设备协议的形态如单列模型写入事后按业务视图创建虚拟表降低采集复杂度与前期建模负担。数据库Database与时间戳Timestamp数据库管理一组表的集合一个实例可含多个库每个库可配置不同的存储策略采集频率、保留周期、副本数、数据块大小等建议将数据特征不同的超级表放入不同数据库一个超级表只能属于一个库其所有子表也存放于该库。时间戳TDengine 存储 UTC 时间戳。写入时RFC-3339 格式带时区会被正确解析为 UTC非 RFC-3339 格式则按应用时区转换。查询时客户端自动将 UTC 时间戳转换为应用时区的本地时间。以 SQL 为查询语言面向时序的扩展TDengine 使用 SQL 作为查询语言以降低学习与迁移成本并为时序场景扩展了**插值interpolation、降采样downsampling、时间加权平均time-weighted averages**等能力详见 TDengine SQL 章节。该章节详细描述了 SQL 语法规则、数据类型、数据定义、数据写入、数据查询、函数与常见限制。值得注意的实现细节TDengine SQL 语句默认最大长度为 4 MB可通过客户端参数maxSQLLength配置范围 1 MB 至 64 MB且不支持关键字缩写例如DELETE不能简写为DEL。手册还以智能电表为例给出了典型的表结构DESCRIBE meterstsTIMESTAMP主列、currentFLOAT、voltageINT、phaseFLOAT以及两个标签列locationBINARY TAG与groupidINT TAG。内置能力缓存、流计算与数据订阅缓存CacheTDengine 采用时间驱动的缓存管理策略写驱动将最新写入的数据优先保存在集群缓存中每个 vnode 拥有独立的、按固定大小内存块划分的隔离内存空间并使用 SkipList 加速检索当超过三分之一的内存块被写满时触发落盘相关参数如数据库参数buffer。基于此合理配置数据库参数后可直接将 TDengine 用作数据缓存无需再部署 Redis 等额外缓存系统。此外还提供last_row/last的 LRU 缓存由数据库参数cachemodel控制取值none、last_row、last_value、both可高效返回每个设备的最新状态详见 07-cache.md 与架构篇中的缓存与持久化小节。流计算Stream ProcessingTDengine 的流计算引擎提供以 SQL 定义实时转换的能力数据写入流的源表后按定义自动处理并把结果按触发模式推送到目标表在高吞吐写入下仍可达到毫秒级结果延迟。相比传统流处理它实现了触发—计算解耦触发源与计算源可以分离可不同表甚至无需触发表触发机制除数据写入外还支持基于窗口窗口开启、关闭或两者与定时等时间无关触发并可在触发前对触发数据预过滤计算范围不设限任何查询语句都可用于计算结果可作通知、写入输出表或两者兼具。注意新的流处理特性自v3.3.7.0起支持。数据订阅Data Subscription数据订阅提供类似消息队列的订阅消费接口用户定义topic可为一个数据库、一张超级表或一条基于现有表的查询语句通过 SQL 过滤标签、表名、列或表达式并可应用标量函数与 UDF不可聚合。订阅端可组成消费者组共享消费进度实现多线程/分布式消费一个消费者可订阅多个 topic。其核心机制是TDengine 自动为**预写日志WAL建立索引以支持快速随机访问并提供可配置的文件轮转与保留策略WAL 保留时间与大小使 WAL 成为持久化、保持到达顺序的存储引擎查询型 topic 按当前 offset 从 WAL 读取数据经统一查询引擎过滤转换后推送给消费者并提供 ACK 机制实现崩溃、重启场景下的至少一次at-least-once**投递。两点版本相关的运维约束来自官方文档原文自v3.2.0.0起订阅支持 vnode 迁移与分裂但迁移/分裂时 WAL 不参与同步因此迁移或分裂 vnode 前必须消费完未完成的 WAL 数据自v3.3.7.0起可用 MQTT 客户端订阅已有 topic见 03-mqtt.md。集群架构与存储引擎速览若想深入内核架构篇是起点其核心要点包括逻辑单元pnode物理节点按 FQDN 标识→ dnodetaosd 运行实例按 FQDN端口组合的 endpoint 唯一标识→ vnode数据分片与负载均衡的基本工作单元存储一部分时序数据及其表结构与标签元数据mnode 负责集群元数据与节点管理最多 3 个基于 Raft 协议首个节点部署时自动创建qnode 负责查询计算实现存储与计算分离snode 负责流计算实现流计算与批量计算分离。一致性vgroup 由不同 dnode 上的 vnode 组成采用 Raft 协议只有 leader 可接受写入同步复制时 leader 需等待超过半数副本确认后才向应用返回成功并通过流水线复制算法pipeline replication平衡一致性与写性能通过引入不参与投票的Learner角色扩展 Raft以快照同步 日志追赶的方式平滑完成节点扩容与副本调整。分片与分区以一致性哈希将表分配到 vnode单 vnode 最多容纳约 100 万张表单表数据不跨 vnode 分散再按时间周期数据库参数duration将数据文件分区配合保留期参数keep自动删除过期文件支持dataDir多挂载盘与最多 3 层分级存储tier_level0/1/2primary主挂载点、disable_create_new_file等配置项并可通过alter dnode动态调整注意分级存储仅 TSDB 企业版支持。写入路径leader 写入依次为接收校验 → 写 WALwal_level2且wal_fsync_period0时立即持久化→ 转发给 follower含版本号→ 写入内存并更新 SkipList → 返回确认follower 仅执行写 WAL 与写内存两步。taosc 与重定向应用通过 taosc 与集群交互taosc 缓存元数据与 vgroup 拓扑、自动重定向到 leader新 dnode 通过dnode.json→firstEp/secondEp→ 自身 endpoint 的三步流程获取 mnode 地址并加入集群。进阶组件TDengine IDMP如果需要在工业场景中获得可视化、事件管理、根因分析与 AI 洞察能力可进一步了解平台的另一组件 TDengine IDMP——一个 AI 原生工业数据管理平台能够基于采集数据自动感知应用场景、免提示生成仪表盘与报表、进行实时分析并检测异常形成面向实时决策的工业智能体。文档地图与社区参与为便于快速检索将上文提到的核心文档路径汇总如下主题仓库路径本阅读指南docs/en/01-reading-guide/index.md时序数据基础docs/en/03-core-concepts/index.md快速上手docs/en/04-quick-start/index.md基本概念docs/en/04-quick-start/02-basic-concepts.mdTDengine SQLdocs/en/05-tdengine-sql/index.md数据订阅docs/en/06-data-subscription/index.md流处理docs/en/07-stream-processing/index.md开发者指南docs/en/10-developer-guide/index.md运维与工具docs/en/12-operations-and-tooling/02-operations/index.md内部设计docs/en/15-internals/index.md架构详解docs/en/15-internals/01-arch.mdTDengine IDMPdocs/en/19-tdengine-idmp/index.mdTDengine TSDB包括这份文档本身是一个开源项目欢迎社区参与贡献如果在文档中发现错误或描述不清之处可点击页面底部的Edit this page提交修改若需查看源码可访问仓库根目录并重点关注 source服务端各模块实现如 dnode、libs、common与 docs中英文文档与示例代码。一起让这个时序数据库变得更好。【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻