你該知道的時序數據庫技術
什么是時序數據
時序數據是隨時間不斷產生的一系列數據,例如持續(xù)監(jiān)控的氣象變化數據、股市交易記錄、應用監(jiān)控數據等,通常一個時序數據點可以由時序指標(metric)+ 一組標簽(tags)+ 數據產生時間(timestamp)三部分唯一確定。
時序數據更適合體現數據“變化”的過程價值。如果在時間坐標中將這些數據點連成線,過往的數據可以形成多緯度報表,揭示數據的趨勢性、規(guī)律性,捕獲異常;未來的數據可以建立數據模型、做統計分析,實現預測和預警。
時序數據應用場景
隨著5G/IoT技術的發(fā)展,數據呈爆炸式增長,其中物聯網與應用性能監(jiān)控等是時序數據最典型的應用領域,覆蓋物聯網、車聯網、智能家居、工業(yè)互聯網、應用性能監(jiān)控等常見的應用場景。

圖一 時序數據應用場景
時序數據的特征及挑戰(zhàn)
在典型的物聯網與應用性能監(jiān)控等時序數據應用場景里,數據產、訪問都有比較明顯的規(guī)律,有很多共同的特征,相比當前互聯網典型的應用特征有比較大的區(qū)別。

結合時序數據的特征,要滿足大規(guī)模時序數據存儲需求,至少面臨如下的幾個核心挑戰(zhàn):
- 高并發(fā)高吞吐寫入:在一些大規(guī)模的應用性能監(jiān)控、物聯網場景,海量的設備持續(xù)產生時序數據,例如某CDN內容分發(fā)網絡系統,3000+臺服務器,每秒/每十秒采集超100個系統指標和業(yè)務指標,每秒的時序數據點數達到數十萬時間點,需要數十臺機器的集群規(guī)模來支撐全量的業(yè)務寫入;時序數據存儲需要解決大規(guī)模集群的橫向擴展,高性能平穩(wěn)寫入的需求。
- 高效的時序數據查詢分析:在典型的監(jiān)控場景,通常需要對長周期的數據進行查詢分析,比如針對某些指標最近1天、3天、7天、1個月的趨勢分析、報表等;這些查詢都需要掃描大量的集群數據才能拿到結果,同時查詢的結果集也可能非常大;時序數據存儲需要支持多維時間線檢索、并具備流式處理、預計算等能力,才能滿足大規(guī)模應用監(jiān)控、物聯網業(yè)務場景的典型查詢需求,并且針對時序大查詢要最小化對寫入的影響。
- 低成本的時序數據存儲:某家庭安防場景,超千萬安防設備,每天就產生近百GB的視頻切片元數據指標,如果要保存一年的運行數據就需要PB級的數據存儲規(guī)模;由于數據規(guī)模巨大,對存儲的低成本要求很高,另外時序數據的冷熱特征明顯。時序數據存儲需要充分利用好時序數據量大、冷熱訪問特征明顯、做好計算、存儲資源的解耦,通過低成本存儲介質、壓縮編碼、冷熱分離、高效TTL等技術將數據存儲成本降低到極致。
- 簡單便捷的生態(tài)協同:在物聯網、工業(yè)互聯網等場景,時序數據通常有進一步做運營分析處理的需求,在很多情況下時序數據只是業(yè)務數據的一部分,需要與其他類型的數據組合來完成查詢分析;時序數據存儲需要能與生態(tài)BI分析工具、大數據處理、流式分析系統等做好對接,與周邊生態(tài)形成協同來創(chuàng)造業(yè)務價值。
時序數據庫的現狀和發(fā)展
時序數據庫結合時序數據的特征,嘗試解決時序數據存儲在高寫入吞吐、橫向擴展、低成本存儲、數據批量過期、高效檢索、簡單訪問與時序數據計算等方面面臨的挑戰(zhàn)。進入2010年后,針對時序數據存儲設計的數據庫相繼誕生,并且時序數據庫的增長趨勢、關注熱度持續(xù)領先,國產化進程不斷加快。
? 時序數據庫關注度日趨火熱,未來還有更大空間
在DB-Engine排行榜上,我們可以看到時序數據庫在近兩年在DB-Engine上是關注度上升最快的數據庫類型。

圖2時序數據庫關注熱度(數據來源:https://db-engines.com/en/ranking_categories)
? 時序數據庫處于百花齊放,各家時序數據正在深耕各自領域

圖3 時序數據庫熱度排名(數據來源:DB-engines)

圖4 時序數據庫發(fā)展簡史
經過多年發(fā)展,時序數據庫大致經歷了幾個階段:
第一代時序數據庫:基于關系型數據庫的簡單存儲。代表:TimescaleDB,基于PostgreSQL關系數據庫構建。
第二代時序數據庫:依賴與Hadoop生態(tài)的通用分布式存儲系統。代表:OpenTSDB(底層使用HBase),KairosDB(底層使用 Cassandra)。
第三代時序數據庫:對高性能,低成本有強需求,需要針對時序領域特別專門設計。代表:InfluxDB,IoTDB和TDengine等。
? 數據庫產品國產化進程加快,大廠紛紛布局
包括TDengine(濤思)、IoTDB(清華)、DolphinDB(智臾科技)等優(yōu)秀的國內時序數據庫異軍突起,自主可控成為國內華為、阿里等廠商布局時序數據庫場景的重要考量,華為時序數據庫內化InfluxDB和IoTDB,阿里自研TSDB時序引擎,并提供基于InfluxDB的阿里云TSDB for InfluxDB,騰訊也推出了TencentDB for CTSDB云服務。
典型時序數據庫介紹及對比
5.1 InfluxDB
InfluxDB由Golang語言編寫,系統性能、穩(wěn)定性好,被廣泛應用,是當前DB-engine熱度排名第一的時序數據庫,生態(tài)支持豐富全面。不過,InfluxDB采用MIT開源協議,開源版本沒有集群功能,商業(yè)版本具備分布式集群、數據分級存儲等功能,但價格不菲。
5.2 OpenTSDB
OpenTSDB是Apache開源軟件,是在HBase的基礎上開發(fā)的,底層存儲是HBase,但其依據時序數據的特點做了一些優(yōu)化。其最大的好處就是建立在Hadoop體系上,各種工具鏈成熟,但這也是它最大的缺點,因為Hadoop不是為時序數據打造的,導致其性能很一般,而且需要依賴很多組件,安裝部署相當復雜。

圖5 OpenTSDB系統架構

圖6 OpenTSDB在HBase中存儲數據模式
5.3 TDengine
TDengine不僅是一款時序數據庫,而且還提供緩存、消息隊列、數據訂閱、流式計算等系列功能,是時序數據的全棧技術解決方案。而且它不依賴任何第三方軟件,安裝包只有1.5MB,使系統設計、安裝、部署和維護都變得極為簡單。

圖7 TDengine系統框圖及全棧解決方案
5.4 IoTDB
Apache IoTDB是一體化收集、存儲、管理與分析物聯網時序數據的軟件系統。Apache IoTDB采用輕量式架構,具有高性能和豐富的功能,并與Apache Hadoop、Spark和Flink等進行了深度集成,可以滿足工業(yè)物聯網領域的海量數據存儲、高速數據讀取和復雜數據分析需求。

圖8 IoTDB系統架構圖
IoTDB獨創(chuàng)采用了tree schema來對時序數據建模,該數據模型更符合工業(yè)物聯網場景中的層級結構,但犧牲了一些標簽靈活性。

圖9 IoTDB樹狀模式樣例
??主流時序數據庫對比

數據來源:公開資料及實測分析




























