关系型数据流管理系统

关系型数据流管理系统(RDSMS)是一种分布式的、基于内存的 数据流管理系统 (DSM),目的是使用标准 SQL 查询来实时处理结构化和非结构化数据流。 不像在关系型数据库中执行 SQL 查询,返回结果并退出,在RDSMS中执行的 SQL 不会退出,当新数据可用时能够连续产出查询结果。RDSMS中的连续 SQL 查询通过窗口功能,在固定窗口或者切片窗口解析、关联和聚合数据流。 窗口可以被指定为基于时间的或基于行的。

RDSMS SQL Query实例

RDSMS中的连续 SQL 查询符合 ANSI SQL 标准。最常见的RDSMS SQL 查询通过声明 SELECT 语句实现。对数据进行的连续 SQL SELECT 操作跨越了一个或者多个数据流,可以使用(可选的) FROM 和(可选的) JOIN 子句来指定多数据流的聚合规则,用 WHERE 语句和比较谓词来限制查询返回的记录,通过 GROUP BY 将具有相同值的数据流映射到同一个更小的数据集,通过 HAVING 来过滤从 GROUP BY 产生的结果记录,并通过 ORDER BY 对接过进行排序。

下面是一个示例,使用一个 SELECT 查询来聚合连续数据流,它聚合的(数据)是一个天气监测站的传感器数据流。  SELECT 查询聚合了1秒时间周期内的最小、最大和平均温度,每隔1秒返回一个聚合结果的连续数据流。

SELECT STREAM
    FLOOR(WEATHERSTREAM.ROWTIME to SECOND) AS FLOOR_SECOND,
    MIN(TEMP) AS MIN_TEMP,
    MAX(TEMP) AS MAX_TEMP,
    AVG(TEMP) AS AVG_TEMP
FROM WEATHERSTREAM
GROUP BY FLOOR(WEATHERSTREAM.ROWTIME TO SECOND);

RDSMS SQL查询也可以基于时间窗口或者行窗口操作数据流。 以下例子显示了另一种连续SQL查询,它使用 WINDOWS 语句,周期为1秒。 这个 WINDOWS 语句改变了查询行为,以便在每条新记录到达时输出一个结果。 因此,输出的是一些逐步更新的零延迟结果形成的数据流。

SELECT STREAM
    ROWTIME,
    MIN(TEMP) OVER W1 AS WMIN_TEMP,
    MAX(TEMP) OVER W1 AS WMAX_TEMP,
    AVG(TEMP) OVER W1 AS WAVG_TEMP
FROM WEATHERSTREAM
WINDOW W1 AS ( RANGE INTERVAL '1' SECOND PRECEDING );

参考

外部链接

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.