時序資料庫入門系列:什麼是時序資料庫
1.時序資料庫的定義
時序資料是隨時間不斷產生的一系列資料,簡單來說,就是帶時間戳的資料。時序資料庫 (Time Series Database,TSDB) 是最佳化用於攝取、處理和儲存時間戳資料的資料庫。此類資料可能包括來自伺服器和應用程式的指標、來自物聯網感測器的讀數、網站或應用程式上的使用者互動或金融市場上的交易活動。
時序資料的主要資料屬性如下:
每個資料點都包含用於索引、聚合和取樣的時間戳。該資料也可以是多維的和相關的;
寫多讀少,需要支援秒級和毫秒級甚至納秒級高頻寫入;查詢通常是多維聚合查詢,對查詢的延遲要求比較高
資料的彙總檢視(例如,下采樣或聚合檢視、趨勢線)可能比單個數據點提供更多的洞察力。例如,考慮到網路不可靠性或感測器讀數異常,我們可能會在一段時間內的某個平均值超過閾值時設定警報,而不是在單個數據點上這樣做;
分析資料通常需要在一段時間內訪問它(例如,給我過去一週的點選率資料);
雖然其他資料庫也可以在資料規模較小時一定程度上處理時間序列資料,但 TSDB可以更有效地處理隨時間推移的資料攝取、壓縮和聚合。以車聯網場景為例,20000輛車,每個車60個指標,假設每秒採集一次,那麼每秒將上報20000 * 60 = 1200000指標值,即120W資料指標值每秒,每個指標值為16位元組(假設僅包括8位元組時間戳和8位元組的浮點數),則每小時將產生64G左右的資料。而實際上每個指標值還會附帶標籤等額外資料,實際需要儲存空間會更大。
簡而言之,時序資料庫是專門用於儲存和處理時間序列資料的資料庫,支援時序資料高效讀寫、高壓縮儲存、插值和聚合等功能。
2.時序資料庫相關概念
時序資料庫是專門處理時序資料的資料庫,因此其相關概念是和時序資料緊密聯絡的,下面是時序資料庫的一些基本概念。
*
度量 Metric
:Metric 類似關係型資料庫裡的表(Table),代表一系列同類時序資料的集合,例如為空氣質量感測器建立一個 Table,儲存所有感測器的監測資料。
*
標籤 Tag
:Tag 描述資料來源的特徵,通常不隨時間變化,例如感測器裝置,包含裝置 DeviceId、裝置所在的 Region 等 Tag 資訊,資料庫內部會自動為 Tag 建立索引,支援根據 Tag 來進行多維檢索查詢;Tag 由 Tag Key、Tag Value 組成,兩者均為 String 型別。
*
時間戳 Timestamp
:Timestamp代表資料產生的時間點,可以寫入時指定,也可由系統自動生成;
*
量測值 Field
:Field描述資料來源的量測指標,通常隨著時間不斷變化,例如感測器裝置包含溫度、溼度等Field;
*
資料點Data Point
: 資料來源在某個時間產生的某個量測指標值(Field Value)稱為一個數據點,資料庫查詢、寫入時按資料點數來作為統計指標;
*
時間線 Time Series
:資料來源的某一個指標隨時間變化,形成時間線,Metric + Tags + Field 組合確定一條時間線;針對時序資料的計算包括降取樣、聚合(sum、count、max、min等)、插值等都基於時間線維度進行;
3.時序資料庫的發展趨勢
時序資料庫的發展趨勢,可以從DB-engines(Knowledge Base of Relational and NoSQL Database Management Systems)獲取獲取到,下圖是DB-engines收錄的資料庫近24個月的發展趨勢,其中時序資料庫的活躍度最高,且隨時間呈現越來越活躍的趨勢。
下圖是DB-engines收錄的時序資料庫的排名,其中排名最高的時序資料庫是2013年開源的InfluxDB。
時序資料庫應用場景
時序資料庫的應用場景在物聯網和網際網路APM等場景應用比較多,下面是列舉了一些時序資料庫的應用場景,但不是全部:
*
公共安全
:上網記錄、通話記錄、個體追蹤、區間篩選;
*
電力行業
:智慧電錶、電網、發電裝置的集中監測;
*
網際網路
:伺服器/應用監測、使用者訪問日誌、廣告點選日誌;
*
物聯網
:電梯、鍋爐、機械、水錶等各種聯網裝置;
*
交通行業
:實時路況、路口流量監測、卡口資料;
*
金融行業
:交易記錄、存取記錄、ATM、POS機監測;