時序資料庫的流計算支援

語言: CN / TW / HK

一、時序資料及其特點 

時序資料(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);