ARTICLE DETAIL

资讯详情

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

TDengine 3.4.2.2 版本解析:虚拟表联邦查询、内联数据源与流计算增强全览

TDengine 3.4.2.2 版本解析:虚拟表联邦查询、内联数据源与流计算增强全览 TDengine 3.4.2.2 版本解析虚拟表联邦查询、内联数据源与流计算增强全览【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine本篇技术指南基于 docs/en/17-release-history/03-notes/3.4.2.2.md 编写系统梳理 TDengine 3.4.2.2 发布版本发布日期2026-07-22带来的 26 项新特性、34 项增强、43 项修复与 11 项安全更新。读者将掌握该版本在虚拟表/联邦查询、SQL 内联数据源TEXT/FILE、自然时间单位窗口查询、流计算 ROLLUP、窗口函数 OVER、正则提取函数等方向的能力变化并结合仓库源码理解其底层实现要点为升级评估与 SQL 开发提供可直接引用的依据。一、版本定位与升级总览3.4.2.2 是一个能力密度极高的功能型版本主线清晰以虚拟表virtual table为载体的联邦查询体系成型、SQL 语言能力向表外数据与标准窗口语义扩展、流计算stream进一步向多级聚合与事件窗口演进同时在连接器高可用、taosX 数据管道、运维与安全层面完成了大量补强。从提交号如 6660036900、6968250338可以看出本版本跨越了较长的开发周期涉及查询执行器、解析器source/libs/parser/inc/sql.y、标量函数库source/libs/scalar/src/sclfunc.c、流计算、同步sync、taosX、多语言连接器等几乎全部核心模块。二、核心新特性详解Features2.1 虚拟表联邦查询体系从继承到跨库透明访问虚拟表virtual table是 TDengine 将多个物理表/子表按需组织成逻辑视图的机制本版本围绕它完成了三个关键能力闭环基于虚拟表的联邦查询6660036900虚拟表可以作为联邦查询的统一入口将分布在不同数据库甚至不同节点上的数据按同一套逻辑模型进行SELECT/JOIN/聚合。从本版本的修复项虚拟表创建后底层超级表结构变化导致列顺序错位6996034126和增强联邦查询元数据获取与解析流程7048480779可以看出其实现依赖元数据的动态同步使用时应关注底层表结构变更对虚拟表列定义的影响。虚拟超级表支持继承其他虚拟超级表6492554061虚拟表之间可以形成层级关系构建多级逻辑视图进一步降低跨源数据建模成本。虚拟子表标签列/普通列引用扩展6984175318、6589380578虚拟子表的 tag 列既可以引用物理子表也可以引用其他虚拟子表普通列同样支持跨虚拟子表引用。这让虚拟表可以透视多层数据源配合流计算中虚拟表支持跨表引用与标签引用6986382331的增强可在流任务中直接消费联邦数据。同时超级表、子表与虚拟表的元数据更新支持事务6659965197保证了多表结构变更的一致性与回滚能力这是虚拟表体系在生产环境可用的重要前提。注意本版本修复了虚拟超级表在 BIMode 下last()/first()/last_row(*)查询不返回 tbname 标签列7035466476的问题虚拟表 BIMode 组合场景建议回归验证。2.2 TEXT / FILE 内联数据源无需建表即可查询外部数据本版本为 SQL 的FROM子句新增两类表外数据源6664907956 系列行值数据与 CSV 文件可以直接参与SELECT、JOIN、UNION以及INSERT INTO SELECT而无需先创建持久化表TEXT 数据源以TEXT (col_list) VALUES ...形式直接书写行值。FILE 数据源以FILE (path, col_list [, options])形式引用本地 CSV 文件。从解析器文法source/libs/parser/inc/sql.y可以确认二者的具体语法table_primary :: TEXT NK_LP column_def_list NK_RP VALUES text_row_list alias_opt table_primary :: FILE NK_LP NK_STRING NK_COMMA NK_STRING NK_RP alias_opt table_primary :: FILE NK_LP NK_STRING NK_COMMA NK_STRING NK_COMMA file_options_opt NK_RP alias_opt即-- TEXT直接内联行值 SELECT * FROM TEXT (ts TIMESTAMP, val DOUBLE) VALUES (2026-07-22 10:00:00, 1.5), (2026-07-22 10:00:01, 2.5) t; -- FILE引用 CSV 文件可附带选项 SELECT * FROM FILE (/data/input.csv, ts TIMESTAMP, val DOUBLE, header1, delimiter,) t; -- 内联数据源可直接参与 JOIN / UNION / INSERT INTO SELECT INSERT INTO meters SELECT ts, val FROM FILE (/data/input.csv, ts TIMESTAMP, val DOUBLE, header1) t;文法定义source/libs/parser/inc/sql.y与语法树构造source/libs/parser/src/parAstCreater.c 中的createTextTableNode/createFileTableNode显示file_options支持两类命名选项选项取值说明header1/0或true/false首行是否为表头默认不启用delimiter单个字符字符串字段分隔符默认逗号,必须是单字符解析器对非法用法有明确报错例如TEXT requires column definitions、TEXT requires at least one row、FILE: delimiter must be a single character、FILE requires a path string、FILE requires a column_list string等见 parAstCreater.c 与 parAstCreater.c。这些内联数据源尤其适合批量导入前的数据预览、跨系统 ETL 的临时对账、以及用 CSV 直接驱动 JOIN 测试等场景。2.3 自然时间单位窗口查询与连接级时区按自然时间单位开窗自动对齐本地日历边界6661700117窗口边界不再是固定偏移量而是对齐到自然日、周、月、季度、年等日历边界例如按自然月聚合时窗口天然从每月 1 日开始。本版本同时新增了季度quarter时间单位6474961364见 Enhancements。连接级时区设置时区优先级为SQL 参数 → 连接 → 全局配置支持 IANA 时区名如Asia/Shanghai并自动处理夏令时DST切换。SQL 级设置SET TIMEZONE iana-name解析器已注册TIMEZONE关键字见 source/libs/parser/inc/sql.y 与 source/libs/parser/src/parTokenizer.c连接级客户端建立连接时指定时区全局taos.cfg中的时区配置。时区语义的增强也带来两处查询行为修复TIMETRUNCATE在 JOIN 子句中的时区转换不一致导致结果错误7048528478、以及 macOS 与 Linux 平台USE database输出统一为Database changed.6973306543。若业务涉及多时区数据或跨时区 JOIN升级后建议用含TIMETRUNCATE的 JOIN 查询做回归。2.4 窗口查询能力全面升级本版本对窗口查询window query做了系统性增强方向可概括为更灵活的窗口定义 更标准的窗口语义外部窗口查询支持 FILL 子句6934772510EXTERNAL WINDOW聚合窗口可使用FILL补齐缺失窗口。状态窗口支持多状态列分区6927171373STATE_WINDOW可由多个列联合决定状态切换状态定义更精细。窗口内允许原始列、标签列、标量函数与无确定性的行函数6659773700打破了以往窗口聚合只允许聚合函数的限制。窗口函数支持 OVER 子句6549502576引入了标准 SQL 的窗口函数语法可参考官方窗口函数文档 06-window-function.md 与通用查询文档 01-query.md 中关于 OVER 用法的说明SELECT ts, val, ROW_NUMBER() OVER (PARTITION BY tbname ORDER BY ts) AS rn, SUM(val) OVER (PARTITION BY tbname ORDER BY ts) AS running_sum FROM meters;聚合函数支持 DISTINCT 关键字6511919698如COUNT(DISTINCT col)、SUM(DISTINCT col)。时序计算函数进入窗口查询6994925460 系列详见 Enhancements 第 7 条CSUM、DIFF、DERIVATIVE、MAVG、STATECOUNT、STATEDURATION、LAG、LEAD、FILL_FORWARD均可在窗口查询中使用且支持INTERVAL FILL(NULL/NONE/VALUE/NULL_F/VALUE_F)组合。2.5 新增标量函数REGEXP_EXTRACT 与 SLEEPREGEXP_EXTRACT6968250338从字符串中按正则表达式提取捕获组。其实现位于 source/libs/scalar/src/sclfunc.cregexpExtractFunction关键行为参数形式REGEXP_EXTRACT(str, pattern [, group_idx])其中group_idx可选、默认值为1即第一个捕获组并在传入时做边界校验超过REGEXP_EXTRACT_MAX_GROUP_IDX会返回参数值非法错误任一输入为 NULL 时输出 NULL底层基于 PCRE2 正则引擎本版本同时将 PCRE2 升级至 10.47见 Security 第 6 条以修复 CVE-2025-58050。SELECT REGEXP_EXTRACT(device_id, ([a-z])-(\d), 2) FROM logs;SLEEP6507136288用于模拟超时场景的测试辅助函数例如在 SQL 中人为引入延迟以验证客户端超时重试、连接管理等逻辑。2.6 CPU 亲和性绑定CPU Affinity版本新增 CPU 亲和性绑定能力6659794715允许将关键线程/任务绑定到指定 CPU 核降低调度抖动对时延敏感型负载的影响。配置项定义在 source/common/src/tglobal.c 中从源码结构看属于服务端全局配置类别具体绑定粒度可结合部署拓扑在taos.cfg中调整适用于 IIoT 场景下对查询/写入时延稳定性要求高的部署。2.7 流计算Stream增强流计算是本版本的重头戏围绕联邦化、事件化、多级聚合三条线展开流任务支持执行联邦查询6996636537流计算的源可以来自虚拟表联邦数据打破单库限制。流事件窗口 true_for 独立设置起止条件6592836563true_for的开始条件与结束条件可以分别定义评估规则事件窗口判定更灵活。流触发新增 ROLLUP BY tag_name 子句6979200215按标签层级对计算结果做分级汇总rollup。从解析器校验逻辑source/libs/parser/src/parTranslater.c、L22619-L22651可以确认其约束ROLLUP BY必须引用tag 列报错ROLLUP BY must reference a tag column流查询必须带有显式的 FROM 表报错ROLLUP BY requires explicit FROM table与PARTITION BY互斥报错ROLLUP BY and PARTITION BY are mutually exclusive与DELETE_OUTPUT_TABLE互斥不支持的触发器窗口会报错。另外rollup 聚合支持占位符_trollup_tbcount统计子表数量仅可在流查询中使用见 parTranslater.c示例CREATE STREAM s_rollup INTO stb_rollup AS SELECT avg(val), _trollup_tbcount FROM meters ROLLUP BY location; -- 按 location 标签分层汇总COUNT_WINDOW (N, 1) 支持历史数据重算6670762934、虚拟超级表聚合查询逻辑优化6619755141、show streams 支持指定数据库与 LIKE 模糊匹配6579574893。流相关修复同样密集无 INTO 子句时事件通知失败7006295117、分组数达 50 万~100 万时启动慢7007876153、表列表初始化未校验错误码导致 taosd 崩溃7039007829、单次触发多窗口生成时标量子查询无输出7035391898、通知过滤 WHERE 条件评估错误6690077280、fill_history 阈值下向空表写早于阈值的数据误触发历史回算7048315279等。2.8 连接器与 taosX 高可用、数据管道增强C / Go / Node.js / Python WebSocket 连接器均支持 Adapter 高可用6665209146、6662936374、6665270968、6665221613配合客户端配置中的useAdapter见 tglobal.c等项可接入 taosAdapter 的多实例负载均衡与故障转移。taosX 支持导出 Parquet 文件6755452428、DataOut 支持导出 Kafka6755550481、OPC UA 数据源新增 Alarm Events 采集能力6956269849。三、查询执行与性能增强Enhancements3.1 查询引擎插值查询 Interp 性能优化6514083018。有效时间线valid timeline列选择逻辑增强6536374390支持子查询、UNION ALL 与多级嵌套查询自动从结果集中选择 TIMESTAMP 字段作为回退主键时间线。子查询含主键列排序时执行效率提升6544826545扫描子查询数据时只扫描子查询与外层查询时间范围的交集6772914536显著减少 IO。Greatest/Least 支持忽略 NULL6511294180通过ignoreNullInGreatest参数控制。函数分类规则优化放宽部分函数限制6994925460diff、csum、mavg、statecount、lag、lead、fill_forward、unique 等函数支持无时间戳列执行7035233145。单行数据压缩/解压崩溃修复7002066642、LEFT ASOF JOIN 与 DIFF 组合且中间行数超 65535 时的异常结果修复7045210011。3.2 订阅与同步子表标签修改/删除后订阅过滤结果错误修复6935517365并保证 WAL 中已删除子表的历史写操作可正常解析订阅内部端口随 ServerPort 修改自动同步6923036499多副本快照文件按需传输7007276957加快数据恢复速度。3.3 新增配置参数可在 taos.cfg 中设置以下新参数均已在 source/common/src/tglobal.c 注册供运维按需调整参数默认值取值范围作用域说明retryOnOverloadBaseInterval100100 ~ 60000毫秒客户端服务端过载时请求重试的初始间隔见 tglobal.cretryOnOverloadTimeout10001000 ~ 3600000毫秒客户端过载重试的超时上限见 tglobal.csnapshotRateLimit00 ~ 10240服务端支持动态调整多副本快照传输时的磁盘读取限速单位可理解为 MB/s 量级0 表示不限速见 tglobal.c前两个参数控制客户端在服务器过载overload场景下的退避重试策略BaseInterval决定起始等待时间Timeout决定最大等待时间snapshotRateLimit用于控制多副本同步时快照读取对磁盘的冲击动态生效。3.4 运维与工具链taosd -r 增加 --vnode 参数7006058021taosd -r --vnode id可指定 vnode 进行修复数据修复工具新增 copy 复制修复模式6955602052。运行时支持临时下线指定 vnode7006314013便于单点维护。taos_stmt2 接口支持完整 SQL 语句解析与执行7001442721STMT 参数绑定场景下 interval SELECT 阻塞7032616628与STMT 异步写错误后重绑定执行崩溃7019815583一并修复。taosdump 备份/恢复速度与压缩率显著提升6987323408并支持导出流创建语句6986555668。Windows 平台RPC 传输选项优化7010735364、新增 MQTT 订阅支持6862031345、新增 UDF 支持6876989393、修复并发查询临时文件重名导致的数据读错与进程崩溃7030860179。taos-explorer批量 CSV 上传与数据库导入逻辑优化6617617575、数据库对象树展示优化6977887109、修复普通表无法显示7016495135、授权仍用旧 RBAC 语法导致 grant 报错7033264759、表格页滚动条不可操作7024012699。taosXpspace 数据接入支持按/拆分长点位名生成子标签并保留原名标签与 name 变量7018497066、支持备份/恢复指定数据表6751395113、PI Connector 空字段与 Int16 类型修复6995693506、7004029732等详见 Fixes 第 22~34 条。四、关键问题修复Fixes精选除上文已结合模块说明的修复外以下问题修复对生产运维影响显著查询挂起INTERVAL AUTO以 INT_MAX 作为窗口起始时间计算偏移时死循环导致查询挂起7043701088。权限与鉴权无通配符权限的普通用户向不存在表写数据应返回Table does not exist而非Permission denied7002697409动态开启 IP 白名单后 Dnode 自身 FQDN 未加入导致节点无法登录7007161406自动建表场景权限控制失效7008354205密钥更新仅对 mnode 主节点生效7019640382。写入链路Schemaless 写入Invalid schema version7004768902TMQ/raw-block 写入未校验非法 NCHAR 载荷导致后续过滤查询失败7020619342。taosd 崩溃流表列表初始化错误7039007829、STMT 异步写错误后重绑定7019815583、createRawValueNodeExt/createSimpleSubQStmt/projectApplyFunction的 double-free/UAF见 Security、虚拟表 tag-ref 解析时 ins_tags 扫描的 meta 读锁重入死锁7051699498。信息模式查询TableCountScan优化下以 COUNT 配合 PARTITION BY/GROUP BY 查询information_schema.ins_tables时 group-key 列为空7051642169。五、安全更新Security解读本版本安全更新覆盖网络层、代码层与供应链层三个维度RPC 通信加固优化 RPC 消息长度校验逻辑以防御 DoS 攻击7008542476为 RPC 通信增加业务身份认证机制消除通信数据的明文传输7029977129。这属于影响较大的行为变化升级后涉及多节点/多副本互通的集群建议验证内部通信兼容性。漏洞修复修复createRawValueNodeExtpLeft/pRight 双释放GHSA-vxcq-cqrc-f8j3、createSimpleSubQStmt变量错误导致的 UAF/双释放GHSA-v8cj-fw82-9jjf、projectApplyFunctionpBlockList 双释放GHSA-f8pf-77fh-53wvPCRE2 升级至 10.47 修复 CVE-2025-580507035391487。供应链与审计将 gitleaks 密钥扫描嵌入 CI/CD 作为正式质量门禁7008439537为发布版本新增 SBOM 生成脚本6776375398增强 UDF 路径安全校验7008425894密码修改后强制断开旧密码建立的连接后续请求返回认证失败6979946047查询执行期间创建的临时文件增加加解密保护7025713112。六、升级建议与回归要点综合本版本 Features/Fixes/Security 的交叉影响升级到 3.4.2.2 时建议重点回归以下场景虚拟表与联邦查询底层超级表结构变更后虚拟表列顺序6996034126、BIMode 下 last/first/last_row 的 tbname 列7035466476。时区相关查询SET TIMEZONE生效范围、跨时区 JOIN 中TIMETRUNCATE结果7048528478。流计算分组数大的流启动、true_for 事件窗口、ROLLUP BY 语法约束、fill_history 阈值回算7007876153、6592836563、7048315279。安全行为变化RPC 身份认证升级后集群互通、密码修改后的强制断连7029977129、6979946047。新配置项按需评估retryOnOverloadBaseInterval/retryOnOverloadTimeout与snapshotRateLimit的设置默认值 100ms/1000ms/不限速见 tglobal.c、tglobal.c。如需进一步深入某条特性可直接阅读本仓库对应模块查询语法定义见 source/libs/parser/inc/sql.y标量函数实现见 source/libs/scalar/src/sclfunc.c流计算解析逻辑见 source/libs/parser/src/parTranslater.c配置注册见 source/common/src/tglobal.c。【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表