ITPub博客

首页 > 数据库 > MySQL > TDengine TSDB 3.4.3.3 上线:流计算分层闭环、虚拟表跨层引用,查询关联一次写完

TDengine TSDB 3.4.3.3 上线:流计算分层闭环、虚拟表跨层引用,查询关联一次写完

原创 MySQL 作者:TDengine 时间:2026-10-20 10:36:52 0 删除 编辑

在工业现场,时序数据库要做的早已不只是存数据。设备到工厂的逐层汇总、多级告警、跨系统的工单和质检闭环,往往要拆成多条流任务;设备模型一多,公共字段反复定义,底层一改上层全部跟着改;读数和台账、告警、历史水平放在一起看,又要写多段 SQL 再在应用层拼接。

TDengine TSDB 3.4.3.3 围绕流计算、虚拟表和查询关联持续增强。本文梳理这三个方向的主要更新,帮助你快速了解哪些能力可以直接替代原来的多任务、多模型和应用层拼接。

重要更新亮点

流计算支持分层规则与跨源闭环

新版本让看板、告警和跨系统闭环可以在一条流里完成:设备数据按路径逐层汇总,多级告警写成一条规则,订单内的计算不跨过订单边界,本地测点和外部工单、质检一起触发计算。流的运行状态可以直接查看,告警通知不再拖慢计算,集群切主和模型变更时流保持运行。

层级汇总:一条流算出产线、车间和工厂

新增 ROLLUP BY,按路径型标签(如 工厂A.车间1.产线2)自动展开祖先路径,一条流同时产出每一层的汇总结果,父级自动包含全部下级数据,无需为每一层单独建流。适用于分层能耗看板、多级产能统计等场景。

CREATE STREAM s_energy_rollup INTERVAL(1m) FROM meters  ROLLUP BY location  INTO meters_rollup OUTPUT_SUBTABLE(CONCAT('rollup_', %%1))  AS SELECT _twstart, SUM(power), _trollup_tbcount FROM meters WHERE ...;

事件窗口支持多级开始条件与防抖

事件窗口的开始条件可以写成多层嵌套的条件树。不同级别的条件满足时触发对应的子事件窗口,系统自动维护父子窗口的开关关系,并通过 _event_condition_path 标识触发路径,便于按告警级别分流结果。同时,开窗和关窗可以分别要求连续满足一定时长或行数,短时抖动不再反复告警。适用于分级告警、状态升级、阈值递进等场景。

EVENT_WINDOW(START WITH ((cond_1, cond_2), cond_3) [END WITH end_cond])
EVENT_WINDOW(START WITH start_cond END WITH end_cond) TRUE_FOR(start(COUNT n), end(duration))

嵌套窗口:先划业务边界,再在边界内计算

新增嵌套窗口,支持 2 到 8 层窗口链。外层按订单、会话、批次划定业务范围,内层在范围内做相邻采样、计数或定时统计。换单、断会话时内层自动重置,前后两单的数据不会被配成一对。适用于充电订单、生产批次、在线会话等分段计算场景。

WINDOW (
  STATE_WINDOW(order_id) EXTEND(1) AS order_scope,
  COUNT_WINDOW(2, 1) AS pair
)

自然周期与时区跟随流定义

流计算支持按自然周、月、季、年触发和结算。每条流可以在 STREAM_OPTIONS(CONFIG(...)) 中固定自己的时区和一周起始日,之后客户端或服务端时区的变化不会改变这条流的窗口边界。适用于跨地区部署的月报、季报和周报。

STREAM_OPTIONS(CONFIG(timezone = 'Asia/Shanghai', firstDayOfWeek = 1))

外部业务数据直接参与流计算(企业版)

MySQL、PostgreSQL、InfluxDB 中的工单、质检等外部表可以直接作为流的触发表,也可以出现在计算语句中。本地测点和外部质检数据还可以合成一张虚拟表后再触发,结果写回本地表,无需先建同步任务。适用于工单驱动看板、产线质量一体汇总等场景。

运行可观测、通知异步化与高可用

流的延迟、处理速率、历史进度、失败原因和重算记录可在系统表、taosExplorer 和 TDinsight 中直接查看,启动、停止和重算可在 taosExplorer 页面上完成。事件通知改为异步批量发送,接收端变慢时计算和写入不受影响; wss:// 通知默认校验服务端证书。源 vnode 切主、vgroup 重新分布或虚拟表引用变更后,流继续输出正确结果,无需重新部署。

虚拟表支持模型继承与跨层引用

新版本让虚拟表可以像设备模型一样分层组织:公共字段在父模型中定义一次,上层模型逐层引用下层的列和标签,个别设备可以单独扩展测点。同时支持批量建删、外部数据按条件绑定、跨精度引用,引用断开时可直接定位到失效的对象。

虚拟超级表继承

新增 BASE ON,虚拟超级表可以从一个或多个父模型继承列和标签,公共字段只需定义一次。查询父模型时自动覆盖全部后代设备,便于构建「基础设备—电力设备—变压器」这类分层设备模型。

CREATE STABLE transformer_vst (ts TIMESTAMP, oil_temp FLOAT)
  TAGS (model NCHAR(32))
  BASE ON base_device, base_power VIRTUAL 1;

列和标签跨层引用

虚拟表的列和标签都可以引用其他虚拟表,多层模型只需在最底层对接物理表。虚拟普通表和普通表也支持标签,并可以作为标签引用的来源逐层传递。底层数据或标签发生变化,上层查询立即可见,一处修改各层同时生效。

CREATE VTABLE top_d1001 (top_cur FROM mid_d1001.cur)  USING top_vst TAGS (area FROM mid_d1001.city);

单表扩展与批量管理

虚拟子表可以添加模型之外的自有列和自有标签,个别设备多出的测点无需修改整个模型。一条 CREATE VTABLE 可以创建多张虚拟子表,一条 DROP VTABLE 可以跨库删除多张虚拟表,虚拟设备的批量上线和清理更加高效。超级表和虚拟超级表也支持直接修改列名。

CREATE VTABLE  IF NOT EXISTS v_d1001 (...) USING meters_vst TAGS (...)  IF NOT EXISTS v_d1002 (...) USING meters_vst TAGS (...);DROP VTABLE IF EXISTS v_d1001, v_d1002;

外部列按条件绑定(企业版)

引用 MySQL、PostgreSQL 外部表的列时,可以附加过滤条件,只取当前设备、产线或租户的数据行,再与本地列按时间戳对齐。外部列参与窗口、聚合和 INTERVAL 查询时,计算可下推到外部数据源执行。适用于多条产线质检数据混存在一张外部表中的场景。

quality INT FROM mysql_qms.qms.line_quality.score WHERE line_id = 'L1'

跨精度引用与精确分位数

一张虚拟表可以同时引用毫秒、微秒、纳秒精度数据库中的表,查询时自动换算为虚拟表所在库的精度,不同采样精度的测点可以合到一张表中分析。列来自同一张物理表的虚拟子表和虚拟普通表支持精确的 PERCENTILE 计算,结果与直接查询物理表一致。

引用校验与断链定位

在变更源表前可以校验虚拟表引用的完整性。源库、源表或源列失效时,查询报错和 SHOW VTABLE VALIDATE 会明确指出失效对象,并给出完整引用链,多层模型出现问题时可以快速定位到断开的那一层。

SHOW VTABLE VALIDATE;

查询关联与子查询能力增强

新版本放宽了普通 JOIN 的条件限制,支持多种关联在一条 SQL 中混合嵌套,子查询可以引用外层当前行,窗口查询可以同时输出原始数据和变化量。读数、台账、告警、历史水平和临时数据可以在一条 SQL 中完成关联分析。

普通 JOIN 支持业务列与任意条件关联

普通 JOIN 不再要求主时间戳等值,可以按分组号、设备号等业务列关联,也可以按表达式、范围或 OR 组合条件关联。台账、配置表和聚合结果可以直接参与 JOIN。系统根据条件和输入顺序在 Merge、Hash、Theta 算法间自动选择,无需额外排序,也可以通过 JOIN_ALGO Hint 指定偏好。

SELECT m.ts, m.voltage, g.area  FROM meters m JOIN group_info g ON m.groupId = g.group_id;

多表混合嵌套与时序关联

内连接、外连接可以与 ASOF JOIN、 WINDOW JOIN 在一条 SQL 中按括号嵌套组合,流计算中同样支持。 ASOF JOIN 和 WINDOW JOIN 的输入可以是子查询、虚拟表或其他 JOIN 的结果, WINDOW JOIN 可以通过 WINDOW_TIME 指定对齐的时间列。适用于「读数关联台账,再匹配最近一条告警」这类多表分析。

标量子查询与相关子查询

支持非相关标量子查询,以及 IN、 EXISTS、 ANY、 ALL 子查询,可以用在选择列表、过滤条件和关联条件中。新版本进一步支持标量相关子查询,子查询可以引用外层当前行,「每条读数与本设备历史均值比较」一条 SQL 即可完成。 HAVING 也可以在不分组时使用。

SELECT r.ts, r.voltage,
       (SELECT AVG(h.voltage) FROM meter_history h WHERE h.device_id = r.device_id)  FROM current_readings r;

窗口查询表达能力增强

窗口查询可以输出原始列、标签列和标量表达式,并在窗口内使用 DIFF、 CSUM、 MAVG、 LAG、 LEAD 等序列函数,同时看到明细和变化量。状态窗口支持多个状态键,任一状态变化即切换窗口;按事件或班次定义的外部窗口支持 FILL,没有数据的窗口也能输出。结果中没有时间列时,序列函数按输入顺序计算。

TEXT / FILE 内联数据源

新增 TEXT 和 FILE 数据源: TEXT 将少量数据直接写在 SQL 中, FILE 直接读取 CSV 文件。两者都可以参与查询、JOIN、 UNION、窗口计算和 INSERT INTO ... SELECT,校准系数、班次表等临时数据无需先建表导入。

SELECT m.ts, m.current * cal.factor  FROM d1001 m JOIN TEXT(ts TIMESTAMP, factor FLOAT) VALUES (...) cal ON m.ts = cal.ts;

其他优化

  1. 新增函数 BIT_CHANGES、 VALUE_CHANGES 和时间加权聚合 TWAVG、 TWSUM、 TWVAR,支持 CSUM(expr) OVER (PARTITION BY ... ORDER BY ...)

  2. DELETE 支持按普通列过滤,可与时间范围和标签条件组合

  3. 按 tbname 分组的 INTERVAL、分组 last 查询、超级表 INTERP 和分区状态窗口性能优化;新增 FAST_INTERVAL、 EX_INTERVAL Hint,符合条件的查询可从副本读取

  4. SHOW TABLE DISTRIBUTED 支持汇总超级表全部子表的压缩数据块大小

  5. split vgroup、 REDISTRIBUTE VGROUP 和多副本切主后的恢复效率提升; BALANCE VGROUP LEADER 新增 FORCE 强制均匀

  6. 新增 compactSpeedLimitMB 限制 COMPACT 写盘速度,新增 snapshotMediumOnLag 让落后副本用文件级增量快照追赶

  7. BLOB 单值上限从 4MB 提升至 16MB;复合主键支持 TIMESTAMP 列

  8. Last Cache 的 RocksDB 参数可配置,并新增 information_schema.ins_last_cache_stats; SHOW VARIABLES 新增 reboot 列

  9. STMT2 在执行出错后可继续复用同一语句,并支持 UPDATE 参数绑定;JDBC WebSocket 新增 PreparedStatement 缓存

  10. XNode 支持 DSN 加密保护和 RESTART XNODE,任务和作业在重连后自动恢复到期望状态

  11. 提供 Spark JDBC 方言,PySpark 可通过 WebSocket 访问 TDengine;taosAdapter 支持 InfluxDB 1.x ping 接口;taosgen 提供 gRPC 写入接口

  12. 社区版支持 Rocky Linux 和 AlmaLinux,并支持免费许可

  13. 安全修复:拒绝会导致服务崩溃或越界读写的畸形输入,修复同步模块的已知漏洞,Grafana 数据源插件修复 30 项依赖漏洞

除此之外,每个版本都会做很多其他的工作,比如 bug 修复、功能优化、安全加固等等。如果想要了解新版本更加详细的发布信息,可以移步至 https://github.com/taosdata/TDengine/releases 查看发布说明。

欢迎大家下载使用,也欢迎在评论区提出建议和意见,如有任何问题请及时联系我们获得支持。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70014783/viewspace-3186062/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论
TDengine 是一个 AI 驱动的物联网工业大数据平台,旗下有两款产品:TDengine TSDB——高性能、分布式的时序数据库和 TDengine IDMP——AI 原生的工业数据管理平台。

注册时间:2022-03-07

  • 博文量
    549
  • 访问量
    505544