- 数据库
- 时序数据库
- 物联网
- 大数据
- 实时分析
- 云原生
【免费下载链接】tdengine
TDengine is an open source, high-performance, cloud native time-series database optimized for Internet of Things (IoT), Connected Cars, Industrial IoT and DevOps.
TDengine 于 2025-07-29 正式发布3.3.7.0版本。本版本是 3.3 系列的一个重要里程碑:流计算引擎全新发布、新增 BLOB 二进制数据类型、多级存储支持共享存储、数据订阅接入 MQTT 协议,并引入数据挂载(MOUNT)能力,同时覆盖 29 项特性、23 项优化与 47 项修复。本文以官方版本说明为主线,结合当前仓库源码与配套文档,逐一解读这些能力的用法、原理与落地细节,帮助读者评估升级收益并快速上手新特性。
一、核心新特性:流计算全新发布与计数窗口指定列
1.1 流计算引擎重构
3.3.7.0 中"流计算全新发布"是最受关注的变更之一。它意味着流式处理模块在语法、执行与可观测性上经历了系统性重构。从仓库文档看,流计算的完整语法体系位于 docs/zh/07-stream-processing/01-syntax.md,其触发类型已形成完整矩阵:
- 时间窗口触发:
INTERVAL按固定时间长度划分窗口; - 滑动触发:
SLIDING指定窗口滑动步长; - 定时触发:
PERIOD周期触发; - 会话窗口触发:
SESSION按时间间隔合并连续事件; - 状态窗口触发、事件窗口触发、计数窗口触发。
其中状态窗口、事件窗口和计数窗口在搭配超级表使用时,必须与PARTITION BY tbname一起使用。这一约束在新版流计算中依然保留,说明窗口语义与分区语义的耦合关系是设计上的一贯约定。
1.2 计数窗口支持指定触发列
版本说明中"计数窗口中允许指定列"补齐了计数窗口的实用场景。计数窗口触发是指对触发表的写入数据按照计数方式进行窗口划分,在窗口启动和(或)关闭时触发。新版本支持列的触发:只有当指定列有数据写入时才触发窗口,避免无关字段的写入频繁触发计算。
计数窗口的细节约束在 docs/zh/07-stream-processing/01-syntax.md 中有明确说明:
- 计数窗口开始时发送起始时间;结束时发送起始时间、结束时间与计算结果;
- 滑动步长为 1 的计数窗口(例如
COUNT_WINDOW(1)与COUNT_WINDOW(n, 1))默认处理乱序数据(通过重算),也可通过STREAM_OPTIONS(IGNORE_DISORDER)显式忽略; - 滑动步长不为 1 的计数窗口一律忽略乱序数据与更新;
- 仅滑动步长为 1 的计数窗口支持
DELETE_RECALC选项,可在触发表数据删除时自动重算; - 计数窗口触发的手动重算必须同时指定开始时间与结束时间,且只适用于流进度已完成部分的时间区间(见 docs/zh/07-stream-processing/02-instructions.md)。
因此,"允许指定列"这一特性让计数窗口在 IoT 场景下可以锚定具体测点(如某个传感器字段)作为触发信号,显著降低无效写入带来的计算开销。
二、新增 BLOB 数据类型及全链路连接器支持
2.1 类型定义与底层实现
3.3.7.0 新增BLOB(Binary Large Object)类型,用于存储二进制大对象。从仓库头文件可以看到类型常量的正式定义:
TSDB_DATA_TYPE_BLOB = 18(见 include/client/taos.h);TSDB_DATA_TYPE_MEDIUMBLOB = 19(见 include/client/taos.h)。
同时,公共类型工具中已为 BLOB 系列提供判定宏IS_STR_DATA_BLOB(t),覆盖 BLOB 与 MEDIUMBLOB 两类(见 include/common/ttypes.h)。这说明 BLOB 不是孤立的单类型,而是与 MEDIUMBLOB 一起构成了完整的二进制数据家族,底层按字符串类数据进行存取与传输。
2.2 各连接器同步支持
为让 BLOB 能力真正可用,本版本实现了全链路打通:
- Go 连接器、Rust 连接器、C WebSocket 连接器支持 BLOB 类型;
- Python WebSocket 连接器、C# 连接器支持 BLOB;
- taosAdapter支持 BLOB 类型,使 REST 等接入路径可读写二进制数据;
- taosX同步链路支持 Varbinary 类型,并支持所有数据源以 Decimal 类型写入。
各语言连接器参考文档位于 docs/zh/10-developer-guide/08-connectors-reference/(如 Java、Go、Python 等)。数据类型总览见 docs/zh/05-tdengine-sql/01-datatype.md。
2.3 配套修复
BLOB 相关能力并非一次到位,本版本还修复了若干二进制/高精度数据问题:
taosXCSV 写入 Decimal 类型导致的 panic;taosX同步 Decimal 数据转换为 Double 类型写入错误;- 纳秒精度数据库使用
to_char函数结果错误; timediff函数的时间精度问题。
这些修复共同保证了新类型在写入、同步、计算链路上的正确性。
三、存储与数据管理:共享存储、数据挂载与 WAL 自动修复
3.1 多级存储支持采用共享存储
3.3.7.0 允许多级存储的各级挂载点使用共享存储(如网络文件系统或分布式文件系统),使存储容量规划从本地磁盘扩展到共享存储池。多级存储的核心配置仍集中在每个 vnode 目录下的local.json中,主挂载点与次级挂载点的路径配置方式不变,只是底层介质可以替换为共享存储。
3.2 数据挂载(MOUNT):只读接入源集群数据
数据挂载是企业版自v3.3.7.0起提供的能力,官方文档见 docs/zh/05-tdengine-sql/08-cluster-management/03-mount.md。其核心思想是:在宿主集群中通过 SQL 将源集群(飞行器、车载/边缘设备、同机房或其他数据中心的集群、历史备份数据等)的数据目录只读挂载到宿主集群,无需数据迁移即可直接查询。
创建挂载
CREATE MOUNT [IF NOT EXISTS] mountName ON DNODE dnodeId FROM TDenginePath;参数说明:
mountName:挂载名称,不能包含下划线_;挂载后的数据库名为mountName_<dbname>;dnodeId:源集群数据目录所在宿主集群的dnode标识;TDenginePath:源集群数据目录的绝对路径,需用英文单引号或双引号括起。
示例:在宿主集群dnode1 上,将源集群目录/var/lib/taos_1以mount1为名称挂载:
CREATE MOUNT mount1 ON DNODE 1 FROM '/var/lib/taos_1';挂载后即可通过mount1_<dbname>访问源集群数据库。
查看挂载
SHOW MOUNTS;示例输出:
name | dnode | create_time | path | ============================================================== mount1 | 1 | 2025-07-17 18:06:16.298 | /var/lib/taos_1 |字段含义:name为挂载名称,dnode为宿主集群中执行挂载的节点,create_time为挂载创建时间,path为源集群数据目录绝对路径。仅拥有系统信息查看权限的用户可以查看。
删除挂载
DROP MOUNT [IF EXISTS] mountName;删除挂载会清空宿主集群中与该挂载相关的元数据,并恢复源集群数据目录的配置信息,但不会删除源集群的实际数据文件。
使用限制(重点):
- 同一宿主集群中
mountName不能重复,也不能与宿主集群已有数据库重名; mountName与TDenginePath一一对应;- 目前仅支持在单个
dnode上挂载;若源集群使用多级存储,需手工调整local.json中非主挂载点路径; - 同一源集群同一时刻只能被一个宿主集群挂载;宿主集群不能挂载自身数据目录;
- 挂载时暂不支持源集群多副本、加密数据库,以及源集群无数据库的情况;
- 宿主集群对挂载库仅支持时序数据查询,不支持写入与元数据更新;不支持虚拟表时序数据查询(支持元数据查询);不支持流式计算、订阅、视图等功能;不支持
COMPACT/TRIM/REDISTRIBUTE/SPLIT/RESTORE等管理操作; - 仅超级管理员拥有操作权限。
典型应用场景:
- 设备数据地面分析:源集群采集数据无需导出迁移,挂载到分析集群后直接查询;
- 跨集群数据比对:将多个业务集群挂载到统一分析集群,对比同源数据;
- 历史数据查询:将离线历史数据集群挂载到在线业务集群,无需回迁即可查询;
- 数据备份验证:将备份存储集群挂载到验证集群,直接校验备份数据完整性。
实现上,数据挂载通过元数据映射建立访问通道,源数据文件不复制到宿主集群,仅在宿主集群记录挂载关联信息,因此具备快速访问、轻量实现、实时查询与只读安全保障等特征。本版本还修复了"多级存储变更单个挂载点后无法启动"与"多副本数据库的单个挂载点失效后无法恢复"两个问题,进一步增强了挂载与多级存储的稳定性。
3.3 新增 WALForceRepair 参数自动修复 WAL
针对 WAL 文件损坏场景,3.3.7.0 新增配置项walForceRepair。从源码看,该参数为布尔型服务端配置,定义于 source/common/src/tglobal.c,注册为服务器级配置(CFG_SCOPE_SERVER、CFG_CATEGORY_LOCAL、CFG_PRIV_SYSTEM,见同文件 tglobal.c)。
其作用体现在 WAL 元数据修复流程中:正常修复仅截断可恢复的尾部文件,而当tsWalForceRepair为真时,允许对最后一个文件执行更激进的强制修复(见 source/libs/wal/src/walMeta.c),启动时自动检测并修复 WAL 文件的损坏情况,降低因 WAL 异常导致节点无法启动的概率。
四、数据订阅与接入:MQTT 协议与 taosX 增强
4.1 数据订阅支持 MQTT 协议
3.3.7.0 让 TDengine 的数据订阅能力新增 MQTT 协议出口:客户端可以通过 MQTT 订阅 TDengine 的写入/变更数据。需要特别区分两个概念(参见 docs/zh/08-data-ingest-and-delivery/01-no-code-ingestion/07-mqtt.md):
- taosX MQTT 接入:从外部 MQTT Broker 订阅数据并写入 TDengine(数据流入),订阅主题的 QoS 可为 0、1、2(由 Broker 侧能力决定);
- 数据订阅 MQTT:客户端连接 TDengine Bnode,通过 MQTT 协议消费订阅数据,仅支持 QoS 0/1。
配套能力包括:taosX支持订阅 TDengine 发送给 MQTT、支持 MQTT Sparkplug B、支持按数据库精度生成不重复的时间戳,并修复了"订阅数据库主题时的内存泄漏""删除主题会影响到其他消费者的订阅"等问题,保证订阅链路在并发场景下的可靠性。
4.2 数据接入与同步的其他增强
- taosX 所有数据源支持 Decimal 类型写入,并修复 CSV/Decimal 相关错误;
- taosX 实现更多时间格式过滤、支持 Varbinary 类型、OPC CSV 配置文件添加含模板变量的标签;
- taosX Transform 插件发版,本地文件恢复添加
watch参数控制是否监听目录; - taosX 支持 adapter 自签名证书加密,提升传输安全性。
五、连接器生态:重连、Failover、IPv6 与版本匹配检测
5.1 WebSocket / libtaosws 增强
- Rust websocket / libtaosws 连接器支持自动重连;
- libtaosws 支持
adapterList配置项进行错误重试,可在多个 adapter 之间切换; - C WebSocket 连接器支持重连和故障节点 Failover,并支持双活连接与ws/wss 自动切换;
- Python WebSocket 连接支持自动重连;
- C# 增加多 DotNet 版本测试,保证跨运行时一致性;
- 修复了
libtaosws fetch_rows_a获取多个 Block 结果错误、WebSocket 连接上设置时区与 JVM 默认时区相同时不生效等问题。
5.2 IPv6 与网络地址支持
- Go WebSocket 连接支持 IPv6;
- C# WebSocket 连接支持 IPv6;
- 修复了 Windows 下本机带域名的 IPv6 解析错误、
taos -h输入 IPv6 地址报错等问题。
5.3 版本匹配检测与 C 连接器
新增版本匹配检测机制,用于在客户端与服务端版本不兼容时提前告警,降低因版本漂移引发的协议兼容问题。C 连接器层面,修复了 STMT2 对新增列操作时客户端崩溃、fetch_rows_a多 Block 结果错误等问题。
六、SQL 与查询能力增强
6.1 支持将查询结果写入超级表
3.3.7.0 支持将查询结果直接写入超级表,简化了 ETL 与数据重排流程,配合"子表名 Transform 支持表达式计算",可在写入时动态生成子表名。
6.2 虚拟表相关修复
- 修复虚拟表写入请求未报告错误的问题;
- 支持在虚拟表上显示标签;
- 修复 BI 模式下虚拟表查询失败的问题。
虚拟表相关语法可参考 docs/zh/05-tdengine-sql/02-ddl/04-virtualtable.md。
6.3 其他查询修复
- 修复
smallint类型在使用in ('1')条件过滤时无法返回查询结果; - 修复对
double类型字段排序时可能导致程序崩溃; - 修复
Nchar类型标签索引未生效; - 修复
forecast参数字符串长度超过 512 时报错; - 修复读取内存和 STT 中复合主键数据时可能生成重复 ID 的问题;
- 修复执行
show db.disk_info可能导致崩溃的问题; - 修复
timediff时间精度、纳秒精度数据库to_char结果错误等。
七、系统与安全优化
- 新增存储容量、Vnode 数目等授权项,使授权粒度更精细;
- 支持采用 SM4 算法加密用户密码,增强安全存储能力;
- 新增 OpenMetrics 采集,便于接入 Prometheus 生态进行监控;
- 新增 Ontop 知识图谱系统集成,扩展了时序数据在知识图谱场景的可用性;
- 优化:减少 INFO 级别日志输出、支持更多写入性能监控指标,降低日志噪声、提升可观测性;
- 优化:WebSocket Poll 优化,提升轮询场景吞吐;
- 修复:Agent 偶发线程中断在 IPC ACK 构建过程中、sysinfo 0.33.1 导致麒麟 V10 系统 slab 内存持续增长等稳定性问题。
八、工具链与生态:taosBenchmark、taosdump 与客户端
- taosBenchmark 重构功能性能增强:taosgen,支持从 CSV 文件读入子表名、标签值创建子表,输出结构化统计数据,修复 REST 不支持绑定 vgroup、未设置 check sql 连接数翻倍等问题;
- taosX相关优化与修复如上文所述;
- flink 连接器 sink 增加数据转换异常信息输出,便于排查同步失败原因;
- Rust 连接器无模式写入支持获取写入行数;
- Go 连接器压测工具发布;
- STMT2 写入支持设置某些列为固定值、支持重复表名绑定,简化批量写入编程;
- 修复:系统升级时配置参数更新失败、多级存储变更单个挂载点后无法启动、Explorer 6060 端口不再支持 /rest/sql(接口收敛)等。
九、升级建议与总结
3.3.7.0 是一个能力面大幅扩展的版本,建议按以下路径评估升级:
- 新类型规划:如业务涉及图片、音视频、序列化对象等二进制数据,可规划 BLOB/MEDIUMBLOB 字段,并同步升级各语言连接器至支持 BLOB 的版本;
- 流计算迁移:若存量流任务基于旧版窗口语义,需对照 docs/zh/07-stream-processing/01-syntax.md 的触发类型与窗口选项核对语法兼容性,尤其注意计数窗口"指定列触发"与乱序/删除重算语义;
- 存储架构调整:需要跨集群查询历史数据时,可评估数据挂载(MOUNT)能力,注意其只读、单 dnode、不支持流计算/订阅等限制;多级存储上共享存储时需确认挂载点路径与
local.json配置; - 可靠性配置:可开启
walForceRepair让启动过程自动检测并修复损坏的 WAL 文件; - 连接器升级:WebSocket 链路建议升级以获取自动重连、Failover 与 IPv6 支持,并配合版本匹配检测尽早暴露版本不兼容问题。
整体而言,3.3.7.0 以"流计算重构 + BLOB 二进制类型 + 数据挂载 + MQTT 订阅"四件大事为主线,配合连接器生态的自动重连、Failover、IPv6 与版本匹配能力,以及 47 项问题修复,为生产环境的稳定性、可观测性与数据流动性提供了更完整的基础。相关 SQL 语法与数据类型细节可继续查阅 docs/zh/05-tdengine-sql/、docs/zh/06-data-subscription/、docs/zh/07-stream-processing/ 与 docs/zh/08-data-ingest-and-delivery/ 等目录下的配套文档。
- 数据库
- 时序数据库
- 物联网
- 大数据
- 实时分析
- 云原生
【免费下载链接】tdengine
TDengine is an open source, high-performance, cloud native time-series database optimized for Internet of Things (IoT), Connected Cars, Industrial IoT and DevOps.
相关推荐
TDengine 3.3.7.0 版本特性全解析:流计算重构、BLOB 类型与数据接入生态升级
TDengine 3.3.7.0 版本特性全解析:流计算重构、BLOB 类型与数据接入生态升级 本文基于 3.3.7.0 版本说明 https://link.g
数据库时序数据库大数据物联网云原生TDengine 3.3.7.0 版本全解析:BLOB 数据类型、共享存储、MQTT 订阅与连接器生态全面升级
TDengine 3.3.7.0 版本全解析:BLOB 数据类型、共享存储、MQTT 订阅与连接器生态全面升级 TDengine 3.3.7.0 于 2025
数据库时序数据库大数据物联网云原生TDengine 3.3.6.0 版本说明详解:Decimal 类型、虚拟表与流计算能力全面升级
TDengine 3.3.6.0 版本说明详解:Decimal 类型、虚拟表与流计算能力全面升级 TDengine 3.3.6.0 于 2025 03 25 发
数据库时序数据库大数据物联网云原生
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考