本文介紹Lindorm時序引擎的資料模型以及相關術語。
基本概念
物聯網、應用監控、工業互連網等典型的時序情境下,資料來源(Data Source)通常按一定的周期持續產生時序資料,一條時序資料由Tag、Timestamp、Field等元素共同來描述,具有相同特徵的一類資料存放在同一張表中,表的時序資料元素分類如下圖:
元素 | 描述 |
表名(Table) | 時序表代表一系列同類時序資料的集合,例如為空白氣品質感應器建立一個Table,儲存所有感應器的監測資料。 |
標籤(Tag) | Tag描述資料來源的特徵,通常不隨時間變化,例如感應器裝置,包含裝置DeviceId、裝置所在的Region等Tag資訊,資料庫內部會自動為Tag建立索引,支援根據Tag來進行多維檢索查詢。Tag由Tag Key、Tag Value組成,兩者均為String類型。 在定義時序資料表時,還可以指定特定標籤列作為分區鍵來顯式指定資料在多個節點上分區(Data Sharding)時的分區規則,從而實現貼合業務情境的效能提升。 |
時間戳記(Timestamp) | Timestamp代表資料產生的時間點,可以寫入時指定,也可由系統自動產生。 |
量測值(Field) | Field描述資料來源的量測指標,通常隨著時間不斷變化,例如感應器裝置包含溫度、濕度等Field,Field列無需提前建立固定的Schema,可以在運行過程中動態增減;Field由Field名和Field值組成,Field名為字串類型,Field值支援多種資料類型。 |
資料點(Data Point) | 資料來源在某個時間產生的某個量測指標值(Field值)稱為一個資料點,資料庫查詢、寫入時按資料點數來作為統計指標。 |
時間軸(Time Series) | 資料來源的某一個指標隨時間變化,形成時間軸,Tag的組合確定一條時間軸。針對時序資料的計算包括降採樣、彙總(sum、count、max、min等)、插值等都基於時間軸維度進行;資料庫在儲存資料時,會將同一條時間軸的資料盡量聚類儲存,提升時間軸資料訪問效率,同時更好的支援時序資料壓縮。 在時序表中,Tag列的值都相同的一系列資料行構成了一條時間軸。 |
時序資料庫提供一系列特有的資料訪問操作,包括彙總(Aggregation)、降採樣(Downsample)、插值(Interpolation)等,同時還提供資料生命週期(資料時效)的管理機制。
元素 | 描述 |
彙總(Aggregation) | 對同一時間軸、或不同時間軸上的資料點進行分組、求和、計數等計算操作。 |
降採樣(Downsample) | 查詢時間區間跨度較長,且未經處理資料採樣頻率較高時,可通過降採樣降低資料的查詢展現精度,例如按秒採集的資料,查詢時按小時層級採樣,減少結果集的資料點數。 |
插值(Interpolation) | 時間軸中間缺失部分資料點時,可通過插值演算法進行資料點自動填滿。 |
資料時效(TTL) | 資料時效是指資料儲存有效期間,超過有效期間的資料會被自動清理,預設資料有效期間為永久儲存。 |
情境樣本
某風力電廠包含一系列的智能風力發電機裝置,建立名為Wind-generators
的table來儲存所有裝置的資訊,裝置由ID
、型號
、廠商
等Tag資訊描述,每個裝置會持續上報功率
、風速
等Field指標,指標資料通過時序資料庫的API即時寫入到雲端時序資料庫。
上述情境中三個裝置產生的資料如下圖所示。
時序資料庫除了支援高並發的寫入吞吐以及高壓縮率,還能高效的滿足如下類型的查詢請求:
查詢某條時間軸一段時間內的資料點。
例如:查詢
ID=7AD45EC
的裝置,在2020-10-24T00:00:00Z ~ 2020-10-24T00:30:00Z
30分鐘時間範圍內,運行風速
指標值。查詢多條時間軸一段時間內的資料點,並按5分鐘粒度降採樣。
例如:查詢
ID=7AD45EC
的裝置,在2020-10-24T00:00:00Z ~ 2020-10-25T00:00:00Z
一天時間範圍內,功率
、風速
的指標值明細,按5分鐘
粒度採樣返回資料。對某條時間軸按時間範圍做彙總。
例如:查詢
ID=7AD45EC
的裝置,在2020-10-24T00:00:00Z ~ 2020-10-24T00:30:00Z
時間範圍內,運行功率
的平均值。查詢多條時間軸的最新點。
例如:查詢
ID=7AD45EC
的裝置,最新的功率
、風速
。按Tag做時間軸彙總查詢。
例如:查詢
廠商=KingWind
的裝置,在2020-10-24T00:00:00Z
的平均風速
。