ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

TDengine 3.3.7.0 版本全解析:BLOB 数据类型、共享存储、MQTT 订阅与连接器生态全面升级

TDengine 3.3.7.0 版本全解析:BLOB 数据类型、共享存储、MQTT 订阅与连接器生态全面升级 TDengine 3.3.7.0 版本全解析BLOB 数据类型、共享存储、MQTT 订阅与连接器生态全面升级【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengineTDengine 3.3.7.0 于2025-07-29发布是面向工业物联网IIoT场景的一次重要版本迭代。本次版本围绕新存储类型、新存储架构、新接入协议、新连接器能力四条主线展开在核心引擎侧引入 BLOB 数据类型与共享存储多级分层在数据接入侧让数据订阅原生支持 MQTT 协议并扩展 OpenMetrics 采集端点在生态侧让 Rust / C / Go / C# / Python WebSocket 等全系连接器补齐自动重连、故障转移与 IPv6 支持。阅读本文后你将完整掌握 3.3.7.0 的 29 项新特性、23 项增强与 47 项修复的细节并能结合仓库源码理解 BLOB 存储布局、共享存储授权、WAL 自动修复等底层实现原理为升级选型与故障排查提供依据。一、版本总览与发布背景本版本 Release Notes 位于 docs/en/17-release-history/03-notes/3.3.7.0.md同目录下的 index.md 维护了完整的版本历史索引。3.3.7.0 的重点方向可概括为方向代表特性面向场景数据模型扩展BLOB / MEDIUMBLOB 数据类型存储图片、文件、传感器原始二进制数据存储架构升级多级存储支持共享存储、数据挂载海量历史数据冷热分层与外部存储接入数据接入协议订阅支持 MQTT、OpenMetrics 采集端点与工业 MQTT 设备、Prometheus 生态打通连接器矩阵自动重连、故障转移、IPv6、decimal高可用客户端与跨平台接入工具链重构taosgen、go benchmark 工具、性能指标 JSON 输出压测与可观测性值得注意的是仓库当前版本的版本号头文件 include/util/version.h 中同时声明了td_version[]与td_compatible_version[]对应本次特性中支持版本兼容性检查version compatible check即客户端与服务端之间会进行版本兼容校验升级时需确保连接器与服务端版本在兼容范围内。二、核心特性数据模型与存储引擎2.1 BLOB 数据类型本次最重量级特性3.3.7.0 新增BLOB与MEDIUMBLOB二进制大对象类型并在全链路服务端、C/Rust/Go/C# WebSocket 连接器、taosAdapter、taos-ws-py、taosX同步支持。从当前仓库源码可以确认该类型的完整定义与存储布局类型枚举include/client/taos.h 定义TSDB_DATA_TYPE_BLOB 18binary与TSDB_DATA_TYPE_MEDIUMBLOB 19二者属于可变长字符串类数据类型类型判定宏include/common/ttypes.h 将 BLOB 归入IS_VAR_DATA_TYPE并专门提供IS_STR_DATA_BLOB(t)宏用于识别 BLOB / MEDIUMBLOBIS_INVALID_TYPE校验则保证越界类型被拒绝存储布局include/util/types.h 定义BLOBSTR_HEADER_SIZE即BlobDataLenT长度头并提供blobDataVal(v)与blobDataLenByData(v)两个宏BLOB 的实际内容通过(char *)(v) BLOBSTR_HEADER_SIZE定位长度则从数据指针前BLOBSTR_HEADER_SIZE字节处读取这与 BINARY/NCHAR 等可变长类型的长度头 数据体内存模型保持一致。使用 BLOB 的典型建表与写入 SQL 示例如下BLOB 列可存储最大 64KB 以内数据MEDIUMBLOB 面向更大体积CREATE DATABASE iot; USE iot; -- 定义包含 BLOB 列的普通表 CREATE TABLE sensor_snapshots (ts TIMESTAMP, dev_id INT, image BLOB, raw MEDIUMBLOB); -- 绑定参数写入推荐方式避免超长 SQL -- 通过 STMT2 接口按列绑定二进制缓冲区长度由 BlobDataLenT 长度头承载 -- 查询 SELECT ts, dev_id, length(image) AS img_len FROM sensor_snapshots WHERE ts NOW - 1h;压测侧仓库提供了现成的 BLOB 写入用例 tools/taosBenchmark/example/insert_blob.json其中以insert类型、stmt2插入模式、line行协议、百万级记录数insert_rows: 1000000来验证 BLOB 列的吞吐与正确性可作为接入 BLOB 前的基准测试模板。2.2 多级存储支持共享存储 数据挂载Mount本版本让多级存储Multi-level Storage支持采用共享存储并正式支持数据挂载data mounting可把外部存储挂载进 TDengine 的存储层级实现低成本冷数据分层。仓库中对应的实现集中在 mnode 管理节点侧挂载管理source/dnode/mnode/impl/src/mndMount.c 负责挂载点mount point的管理事务共享存储授权校验source/dnode/mnode/impl/src/mndDb.c 在创建/修改库时执行grantCheck(TSDB_GRANT_SHARED_STORAGE)而 mndDb.c 通过grantCheckEx(TSDB_GRANT_VNODE, nVnodes)校验 vnode 配额——说明共享存储属于企业版授权项详见下文安全与授权小节。2.3 新版本流式计算new-stream特性清单第 1 条即新版本流式计算。仓库中 source/libs/new-stream/ 目录承载了新一代流计算模块的实现本版本围绕该模块补充了count window 支持指定列特性 29的能力例如COUNT_WINDOW(ts, col1, col2)可按指定列的取值变化触发窗口而不是仅依赖时间窗口便于对状态翻转类事件做精确统计。2.4 查询结果写入超级表 表名表达式特性 25支持将查询结果写入超级表即CREATE TABLE ... AS SELECT或写入语句的目标可以是超级表含子表自动创建让 ETL 后的结果能继续享受标签索引与聚合能力特性 14transform 中表名支持表达式计算允许在数据转换transform阶段用表达式动态生成目标表名适合按设备/时间分表的写入模式。三、数据订阅与接入MQTT、Sparkplug B 与 OpenMetrics3.1 数据订阅支持 MQTT 协议本版本让TDengine 的数据订阅Data Subscription原生支持 MQTT 协议即 TDengine 可以作为 MQTT 数据源对外发布订阅消息。同时 taosX 新增两个方向的 MQTT 能力subscribe from TDengine to MQTT in taosX以 taosX 为桥梁把 TDengine 中的数据订阅转发到 MQTT Brokersupport MQTT Sparkplug B datain in taosXtaosX 数据接入侧支持Sparkplug B规范工业物联网 MQTT 数据标准Sparkplug B 设备上报的消息可被 taosX 解析后写入 TDengine。仓库中可找到 Sparkplug B 任务的痕迹source/dnode/vnode/src/vnd/vnodeQuery.c 在查询类目中注册了taosx_task_sparkplugb任务说明该数据类型已进入 vnode 的查询任务管理范畴。3.2 OpenMetrics 采集端点特性 22 新增OpenMetrics 采集端点支持。OpenMetrics 是 Prometheus 生态的标准指标暴露格式这意味着 taosAdapter / 相关服务可以对外暴露/metrics类 OpenMetrics 端点配合监控组件如仓库中 tools/keeper/ 提供的 taoskeeper 监控守护进程实现对集群写入性能、连接数等指标的标准化采集。3.3 taosX 数据接入增强本版本对 taosX数据接入工具做了大量增强与本主题强相关的包括特性/增强说明taosX 所有数据源支持 decimal此前 decimal 仅在部分数据源可用现已全量打通支持 varbinary 数据类型增强 18对接二进制变长字段between_time_range 支持更多日期时间格式增强 3方便时间范围过滤配置transform 插件随发布包附带增强 21restore 支持 watch 参数增强 22从本地目录恢复时监视文件变更实现增量同步支持自签名证书连 taosAdapter修复 33CSV 转 decimal 不再 panic修复 10并修复 tmq 复制 decimal 转 double 错误修复 11消费格式化 JSON 消息报错修复 16Kafka datain 丢弃并记录非 UTF-8 输入修复 31Kafka UDT 支持嵌套数组修复 34如[{data:[{k:v}]}]OPC CSV 点位配置支持带模板的标签值增强 9OPCUA CLI 模式报错修复 12用 now 生成唯一时间戳特性 26tmq 到 td 时过多的 show subscriptions 查询导致 taosd 卡住修复 29四、连接器生态自动重连、故障转移、IPv6 与类型补齐3.3.7.0 对全系连接器做了一轮高可用 新类型升级这是本版本覆盖面最广的部分。4.1 WebSocket 连接器重连与故障转移libtaosws / Rust WebSocket 自动重连特性 6网络抖动后自动恢复会话C WebSocket 连接器自动重连 故障转移特性 19连接断开自动重连C WebSocket 连接器多地址故障转移特性 28可配置多个 adapter 地址主地址不可用时自动切换libtaosws 支持 adapterList 故障转移特性 13在连接参数中传入 adapter 地址列表实现客户端侧的高可用Python WebSocket 自动重连增强 6WebSocket poll 增强增强 5优化轮询模式下消息拉取的效率与稳定性c websocket ws/wss 协议自动识别增强 11根据 URL 自动选择明文/加密通道timezone 设置失效修复修复 9timezone 与 JVM 默认一致的配置在 websocket 连接中不再失效libtaosws 的 fetch_rows_a 报错修复修复 13。4.2 IPv6 支持补齐Go WebSocket 连接支持 IPv6特性 10C# 连接支持 IPv6特性 11修复taos -h 输入 IPv6 地址报错修复 20修复Windows 上带 zone info 的 IPv6 导致 taosAdapter 报错修复 17。4.3 数据类型与语言绑定Rust / Go / C# / taos-ws-py / C WebSocket / taosAdapter 全部支持 BLOB特性 7、8、9、15、16 等BLOB 成为连接器全矩阵能力C# 连接器支持 decimal 类型特性 18C# 支持多目标框架增强 7便于在 .NET Framework 与 .NET Core 间复用Rust 连接器 schemalesssml可获取受影响行数增强 12STMT2 支持为指定列设置固定值增强 4与重复表名绑定增强 17前者在批量写入时对某些列如写入时间戳、批次号统一赋值后者允许同一语句中多次绑定同一张子表减少客户端预处理开销修复客户端使用 STMT2 访问新增列时崩溃修复 46。五、工具链与可观测性taosgen、taosBenchmark 与性能指标5.1 taosgentaosBenchmark 重构产物特性 24 将 taosBenchmark 的数据生成部分重构为独立工具taosgen目标是更好的生成性能与更强的功能。仓库中 docs/examples/taosgen/taosgen.yaml 提供了其配置模板配合 tools/taosBenchmark/ 使用可在压测前按业务分布如设备数、时间跨度、列类型预生成数据文件。5.2 taosBenchmark 增强CSV 支持读取 tbname/tags增强 2压测数据源从纯随机扩展到真实业务 CSV可指定子表名与标签列性能指标输出到 JSON 文件增强 19压测结束后将吞吐、延迟等 perf 指标以 JSON 落盘便于 CI 与自动化对比——仓库中 tools/taosBenchmark/inc/bench.h 的performance_print开关与 tools/taosBenchmark/inc/benchLog.h 的perfPrint宏即用于控制指标打印修复REST 模式不支持 vgroup 绑定修复 8修复未设置 check sql 时连接数持续增长修复 36。5.3 写入性能监控指标增强 14支持更多写入性能监控指标写入路径WAL、落盘、同步新增更多可观测指标可结合 taoskeeper 与 OpenMetrics 端点3.2 节做 Grafana 面板展示。5.4 其他工具Go 连接器新增 benchmark 工具特性 23ontop 系统新插件特性 27ontop 是虚拟知识图谱Ontop查询系统新插件使 TDengine 可作为 ontop 的数据源被 SPARQL/SQL 语义层查询提供手动重建 last cache 的工具修复 38当 last每设备最新状态缓存异常时可静默触发重建而不打断服务last cache 相关实现在 source/dnode/vnode/src/tsdb/tsdbCacheRead.c 等文件中。六、安全、授权与运维增强6.1 新增授权项存储容量与 vnode 数量增强 1 增加了storage capacity存储容量与number of vnodesvnode 数量两类授权项。仓库中 include/common/tgrant.h 定义了授权项枚举其中包含TSDB_GRANT_STORAGE、TSDB_GRANT_SHARED_STORAGE、TSDB_GRANT_VNODE等对应校验逻辑可在 source/dnode/mnode/impl/src/mndGrant.c如grantParseParameter、grantAdd等与 source/dnode/mnode/impl/src/mndDb.c 的库级授权检查中看到。这意味着共享存储、vnode 扩容等能力由 License 统一管控。6.2 SM4 密码加密增强 15 支持使用SM4 国密算法加密用户密码。仓库中 include/common/tencrypt.h 定义了加密算法标识TSDB_ENCRYPT_ALGO_SM4 1对应SM4-CBC与tsCfgKey密钥配置入口include/libs/sm4/sm4.h 提供 SM4 算法实现。启用后用户密码在传输与落盘场景使用 SM4-CBC 加密满足国密合规要求。6.3 运维修复与稳健性WAL 损坏自动检测与修复增强 16启动时自动检测 WAL 文件损坏并尝试修复。仓库中 source/libs/wal/src/walMeta.c 实现了完整的 WAL meta 修复流程begin to repair meta后逐个校验文件大小与 meta 记录对异常文件执行 truncate 并重写 file set实现修复后启动的自动恢复降低 info 日志量增强 13减少高频路径下的 info 日志降低磁盘与 IO 开销S3 上传因异常 compact 失败修复 39修复压缩compact异常导致的 S3 上传失败show db.disk_info 可能崩溃修复 19、系统升级时配置参数更新失败修复 28、TDB 文件因并发订阅场景损坏修复 22等均已修复。七、修复项重点解读本版本共修复 47 项问题除上文已穿插说明的之外以下按模块归类重点说明。7.1 核心引擎与查询timediff 函数时间精度修复 43修复 timediff 在特定精度纳秒级库下的时间差计算误差该函数在 source/libs/function/src/builtins.c 注册to_char 在纳秒精度库中结果错误修复 44修复纳秒精度数据库中使用 to_char 格式化时间戳时的错误结果注册位置见 source/libs/function/src/builtins.cdouble 类型字段排序崩溃修复 27修复 double 字段参与排序时可能导致的程序崩溃smallint 使用 in (1) 条件无法返回结果修复 3复合主键从内存与 STT 读取产生重复 ID修复 45issue #31509forecast 参数长度超过 512 报错修复 42nchar 标签索引不生效修复 24。7.2 存储与多级存储修改多级存储单个挂载点后 taosd 无法启动修复 2多副本库中单个挂载点故障无法恢复修复 5修复后挂载点故障具备自动恢复能力并发数据订阅导致 TDB 文件损坏修复 22。7.3 虚拟表Virtual Table虚拟表写请求未报错修复 6此前虚拟表上的写请求被静默接受现已正确报错虚拟表支持 show tags修复 7BI 模式下虚拟表查询失败修复 23。虚拟表相关测试用例位于 test/cases/05-VirtualTables/。7.4 订阅与消息订阅 Database topic 且无元数据时内存泄漏修复 1订阅时序数据但消息不带元数据时不再泄漏内存drop topic 影响其他消费者订阅修复 41打印日志时的罕见竞态崩溃修复 47issue #31688agent 在 ipc ack reader 上偶发 panic修复 18。7.5 Explorer 与 taosAdapter签名版 taosExplorer 在 mac 上无法启动增强 10禁用 Explorer 对外部 :6060/rest/sql 的使用增强 23收紧 REST SQL 端点的暴露面OSS Explorer drop database 报错修复 15、Explorer SQL 查询错误不可见修复 21、datain 页面消失修复 30、表显示错误修复 32、slowsql 查询的时间范围条件问题修复 37、SQL 错误详情应显示在 Explorer 日志修复 40、Explorer 工具文档中 superset 英文拼写错误修复 14、错误认证导致 taosAdapter 内存泄漏修复 4、Kylin V10 上 sysinfo 0.33.1 导致 slab 内存增长修复 35、Kylin 定制 JDK 导致 InfluxDB 接入 panic修复 25。八、升级与兼容性建议执行版本兼容检查3.3.7.0 引入的 version compatible check 会校验客户端/服务端兼容性升级服务端后建议同步升级连接器与 taosAdapter、taosX 等配套组件避免跨版本不兼容BLOB 类型上线前先压测可参考 tools/taosBenchmark/example/insert_blob.json 用 taosBenchmark 验证 BLOB 列的写入性能并利用新特性将压测 perf 指标输出为 JSON 便于回归对比共享存储与挂载注意授权项使用共享存储shared storage与扩展 vnode 数量前确认 License 已包含对应授权项include/common/tgrant.hWAL 自动修复升级后启动阶段会自动检测并修复 WAL 损坏source/libs/wal/src/walMeta.c如遇历史损坏文件建议保留现场日志后重启观察repair meta/repaired file相关日志确认修复过程安全加固可启用 SM4 密码加密include/common/tencrypt.h并注意 Explorer 的:6060/rest/sql外部访问已被禁用内部调用需走受控通道。九、总结TDengine 3.3.7.0 是一次存储类型 存储架构 接入协议 连接器生态四位一体的版本升级BLOB/MEDIUMBLOB 让时序数据可以直接承载工业现场的图片与原始报文共享存储与数据挂载把多级存储的成本优势延伸到外部存储MQTT 订阅与 Sparkplug B、OpenMetrics 支持让 TDengine 无缝融入工业物联网与可观测性技术栈全系连接器的自动重连、故障转移与 IPv6 支持则显著提升了生产环境的可用性。对于计划引入二进制数据、构建 MQTT 数据管道或进行跨地域高可用部署的团队本版本提供了完整的落地能力。【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表