跳到主要内容

流计算

与传统的流计算相比,TDengine TSDB 的流计算进行了功能和边界上的扩展。传统定义的流计算是一种以低延迟、持续性和事件时间驱动为核心,处理无界数据流的实时计算范式。TDengine TSDB 的流计算采用的是触发与计算分离的策略,处理的依然是持续的无界的数据流,但是进行了以下几个方面的扩展:

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

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