Skip to content

表是源数据在当前时间的快照。我们支持两种类型的表:扫描表(Scan Table)和查询表(Lookup Table)。

  • 扫描表。消费流数据作为变化日志,并持续更新表。与常见的代表批处理数据的静态表相比,扫描表可以随时间变化。所有的流数据源如 MQTT、 Neuron 源等都可以是扫描表源。扫描表从 v1.2.0 版本开始支持。
  • 查询表:一个外部表,其内容通常不会被完全读取,仅在必要时进行查询。我们支持将实体表绑定为查询表,并根据需要生成查询命令(例如,数据库上的 SQL)。请注意,不是所有的源类型都可以成为查询表源,只有像 SQL 源这样的有外部存储的源可以成为查询源。我们从 v1.7.0 版本开始支持查询表。

扫描表

表的数据源既可以是无界的也可以是有界的。对于有界数据源来说,其表的内容为静态的。若表的数据源为无界数据流,则其内容会动态变化。

当前,扫描表的内容更新仅支持追加。用户创建表时,可以指定参数限制表的大小,防止占用过多内存。

扫描表不能在规则中单独使用,必须与流搭配,通常用于与流进行连接。扫描表可用于补全流数据或作为计算的开关。

查询表

查询表不在内存中存储表的内容,而是引用外部表。显然,只有少数源适合作为查询表,这需要源本身是可查询的。支持的源包括:

  • 内存源:如果内存源被用作表类型,我们需要在内存中把数据积累成表。它可以作为一个中间环节,将任何流转换为查询表。
  • Redis:支持按 Redis 键查询。
  • SQL 源:这是最典型的查询源。我们可以直接使用SQL来查询。

与扫描表不同,查询表将与规则分开运行。因此,所有使用查询表的规则实际上可以查询同一个表的内容。

更多信息