流式处理中的状态

流数据是基于事件持续生成的时间序列数据。与静态有界的历史数据不同,流数据是动态变化且无界的。

状态是指在流数据处理系统中维护的、跨多个事件持久化存储的数据。

无状态和有状态流处理

流数据处理分为无状态和有状态两种方式,下图展示了无状态流处理和有状态流处理的主要区别:

  • 无状态流处理每次只转换一条输入记录,并且仅根据最新的输入记录输出结果

  • 有状态流处理维护所有已处理记录的状态值,并根据每条新输入的记录更新状态,因此输出记录不仅与当前记录有关,还与先前的状态或历史记录有关

在 DolphinDB 的流数据处理系统中,很多操作需要根据当前记录的历史状态确定,例如响应式状态引擎中的有状态函数、时间序列引擎中的聚合函数等,因此维护状态的正确性和持久性对于保证流数据处理系统的准确和稳定非常重要。