跳到主要内容

流式计算

在时序数据的处理中,存在大量的流式计算需求,例如:

  • 数据分级存储与智能降采样:工业设备每秒生成数万条原始数据,若全量存储,则存储成本激增、查询效率低下,历史趋势分析响应时间长。
  • 预计算加速实时决策:用户查询全量数据时,可能需扫描百亿级别数据,很难实时获取查询结果,大屏/报表产生卡顿。
  • 异常检测和低延迟告警:异常检测、监控报警需要根据规则低延迟地获取特定数据,传统批处理的延迟通常在分钟级别。

在传统的时序数据解决方案中,常常需要部署 Kafka、Flink 等流处理系统,而流处理系统的复杂性带来了高昂的开发与运维成本。TDengine 的流式计算引擎提供了实时处理写入数据流的能力,使用 SQL 定义实时流变换;当数据被写入流的源表后,数据会按定义的方式自动处理,并根据定义的触发模式向目的表推送结果。它提供了替代复杂流处理系统的轻量级方案,并能够在高吞吐写入下提供毫秒级的计算结果延迟。

与传统的流式计算相比,TDengine 的流式计算采用触发与计算分离的策略,处理的依然是持续的无界数据流,并在以下几个方面做了扩展:

  • 处理对象的扩展:传统流式计算的事件驱动对象与计算对象往往是统一的,根据同一份数据产生事件和计算。TDengine 的流式计算支持触发(事件驱动)与计算的分离,也就意味着触发对象可以与计算对象分离。触发表与计算的数据源表可以不相同,甚至可以不需要触发表,处理的数据集合无论是列、时间范围都可以不相同。
  • 触发方式的扩展:除了数据写入触发方式外,TDengine 的流式计算支持更多触发方式。通过支持窗口触发,用户可以灵活地定义和使用各种窗口来产生触发事件,可以选择在开窗、关窗以及开关窗同时进行触发。除了与触发表关联的事件时间驱动外,还支持与事件时间无关的驱动,即定时触发。在事件触发之前,还支持对触发数据进行预先过滤处理,只有符合条件的数据才会进入触发判断。
  • 计算的扩展:既可以对触发表进行计算,也可以对其他库、表进行计算。计算类型不受限制,支持任意查询语句。计算结果的应用可根据需要选择,支持发送通知、写入输出表,也可以两者同时使用。

TDengine 的流式计算引擎还提供了其他使用上的便利。针对结果延迟的不同需求,支持用户在结果时效性与资源负载之间进行平衡。针对非正常顺序写入场景的不同需求,支持用户灵活选择适合的处理方式与策略。

本章后续分别说明 建流语法运维与限制部署与设计

Morty Proxy This is a proxified and sanitized view of the page, visit original site.