stream source scan table source lookup table source
内存源通过主题消费由 内存 Sink 生成的事件,适用于需要快速数据检索而无需磁盘或外部服务读取开销的场景,它的典型使用场景是形成规则管道。
使用内存数据源时,无需额外配置,支持作为流式数据源、扫描表数据源或查找表数据源来使用。
当作为流数据源时,内存连接器会持续从指定的内存主题中提取数据,因此非常适合实时数据处理。
示例:
CREATE STREAM stream1 (
name STRING,
size BIGINT,
id BIGINT
) WITH (DATASOURCE="devices/result", FORMAT="json", TYPE="memory");
在此示例中,我们定义了一个内存流数据源,用于连续从 devices/result
内存主题中提取数据。
在需要分析静态数据集时,内存源连接器可以作为扫描表数据源来使用。
示例:
CREATE TABLE memoryTableDemo () WITH (DATASOURCE="topicB", FORMAT="JSON", TYPE="memory");
在这个示例中,memoryTableDemo
数据源表可查询 topicB
内存主题下的 JSON 数据。
内存源支持用作查询表,此时,主要具备如下优势:
示例:
CREATE TABLE memoryLookupTableDemo () WITH (DATASOURCE="topicC", FORMAT="JSON", TYPE="memory");
注意,作为查询表使用时,还应配置 KEY
属性,它将作为虚拟表的主键来加速查询。创建完成后,内存查找表将开始从指定的内存主题累积数据,并通过 KEY
字段进行索引,允许快速检索。
内存数据源中的“主题”表示不同的内存数据通道。当定义流或表时,用户可以使用 DATASOURCE
属性来锁定希望访问的内存主题。
与 MQTT 主题类似,内存源也支持主题通配符:
示例:
home/device1/+/sensor1
home/device1/#
内存源的典型用途在于构建规则管道。这样的管道允许将多个规则链接起来,使得一个规则的输出成为另一个规则的输入。此外,内存动作和内存源之间的数据传输采用内部格式,不经过编解码以提高效率。因此,内存源的 format
属性会被忽略。