時序資料庫的流計算支援
一、時序資料及其特點
時序資料(Time Series Data)是基於相對穩定頻率持續產生的一系列指標監測資料,比如一年內的道瓊斯指數、一天內不同時間點的測量氣溫等。時序資料有以下幾個特點:
- 歷史資料的不變性
- 資料的有效性
- 資料的時效性
- 結構化的資料
- 資料的大量性
二、時序資料庫基本架構
針對時序資料的特點,時序資料庫一般具有以下特性:
- 高速的資料入庫
- 資料的生命週期管理
- 資料的流處理
- 高效的資料查詢
- 定製的資料壓縮
三、流計算介紹
流計算主要是指標對實時獲取來自不同資料來源的海量資料,經過實時分析處理,從而獲得有價值的資訊。常見的業務場景包括實時事件的快速反應,市場變化的實時告警,實時資料的互動分析等。流計算一般包括如下幾方面的功能:
1)過濾和轉換 (filter & map)
2)聚合以及視窗函式 (reduce,aggregation/window)
3)多資料流合併以及模式匹配 (joining & pattern detection)
4)從流到塊處理
四、時序資料庫對流計算的支援
-
案例一:使用定製化的流計算 API,如下面例子所示:
from(bucket: "mydb")
|> range(start: -1h)
|> filter(fn: (r) => r["_measurement"] == "mymeasurement")
|> map(fn: (r) => ({ r with value: r.value * 2 }))
|> filter(fn: (r) => r.value > 100)
|> aggregateWindow(every: 1m, fn: sum, createEmpty: false)
|> group(columns: ["location"])
|> join(tables: {stream1: {bucket: "mydb", measurement: "stream1", start: -1h}, stream2: {bucket: "mydb", measurement: "stream2", start: -1h}}, on: ["location"])
|> alert(name: "value_above_threshold", message: "Value is above threshold", crit: (r) => r.value > 100)
|> to(bucket: "mydb", measurement: "output", tagColumns: ["location"])
-
案例二:使用類 SQL 指令,建立流計算以及定義流計算規則,如下:
CREATE STREAM current_stream
TRIGGER AT_ONCE
INTO current_stream_output_stb AS
SELECT
_wstart as start,
_wend as end,
max(current) as max_current
FROM meters
WHERE voltage <= 220
INTEVAL (5S) SLIDING (1s);
「其他文章」