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

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

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

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

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

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

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

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

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




























