關係型資料流管理系統

關係型資料流管理系統(RDSMS)是一種分散式的、基於主記憶體的 資料流管理系統英語Data stream management system (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 );

參考

編輯

外部連結

編輯