你該知道的時(shí)序數(shù)據(jù)庫技術(shù)
什么是時(shí)序數(shù)據(jù)
時(shí)序數(shù)據(jù)是隨時(shí)間不斷產(chǎn)生的一系列數(shù)據(jù),例如持續(xù)監(jiān)控的氣象變化數(shù)據(jù)、股市交易記錄、應(yīng)用監(jiān)控?cái)?shù)據(jù)等,通常一個(gè)時(shí)序數(shù)據(jù)點(diǎn)可以由時(shí)序指標(biāo)(metric)+ 一組標(biāo)簽(tags)+ 數(shù)據(jù)產(chǎn)生時(shí)間(timestamp)三部分唯一確定。
時(shí)序數(shù)據(jù)更適合體現(xiàn)數(shù)據(jù)“變化”的過程價(jià)值。如果在時(shí)間坐標(biāo)中將這些數(shù)據(jù)點(diǎn)連成線,過往的數(shù)據(jù)可以形成多緯度報(bào)表,揭示數(shù)據(jù)的趨勢(shì)性、規(guī)律性,捕獲異常;未來的數(shù)據(jù)可以建立數(shù)據(jù)模型、做統(tǒng)計(jì)分析,實(shí)現(xiàn)預(yù)測(cè)和預(yù)警。
時(shí)序數(shù)據(jù)應(yīng)用場(chǎng)景
隨著5G/IoT技術(shù)的發(fā)展,數(shù)據(jù)呈爆炸式增長(zhǎng),其中物聯(lián)網(wǎng)與應(yīng)用性能監(jiān)控等是時(shí)序數(shù)據(jù)最典型的應(yīng)用領(lǐng)域,覆蓋物聯(lián)網(wǎng)、車聯(lián)網(wǎng)、智能家居、工業(yè)互聯(lián)網(wǎng)、應(yīng)用性能監(jiān)控等常見的應(yīng)用場(chǎng)景。
圖一 時(shí)序數(shù)據(jù)應(yīng)用場(chǎng)景
時(shí)序數(shù)據(jù)的特征及挑戰(zhàn)
在典型的物聯(lián)網(wǎng)與應(yīng)用性能監(jiān)控等時(shí)序數(shù)據(jù)應(yīng)用場(chǎng)景里,數(shù)據(jù)產(chǎn)、訪問都有比較明顯的規(guī)律,有很多共同的特征,相比當(dāng)前互聯(lián)網(wǎng)典型的應(yīng)用特征有比較大的區(qū)別。
結(jié)合時(shí)序數(shù)據(jù)的特征,要滿足大規(guī)模時(shí)序數(shù)據(jù)存儲(chǔ)需求,至少面臨如下的幾個(gè)核心挑戰(zhàn):
- 高并發(fā)高吞吐寫入:在一些大規(guī)模的應(yīng)用性能監(jiān)控、物聯(lián)網(wǎng)場(chǎng)景,海量的設(shè)備持續(xù)產(chǎn)生時(shí)序數(shù)據(jù),例如某CDN內(nèi)容分發(fā)網(wǎng)絡(luò)系統(tǒng),3000+臺(tái)服務(wù)器,每秒/每十秒采集超100個(gè)系統(tǒng)指標(biāo)和業(yè)務(wù)指標(biāo),每秒的時(shí)序數(shù)據(jù)點(diǎn)數(shù)達(dá)到數(shù)十萬時(shí)間點(diǎn),需要數(shù)十臺(tái)機(jī)器的集群規(guī)模來支撐全量的業(yè)務(wù)寫入;時(shí)序數(shù)據(jù)存儲(chǔ)需要解決大規(guī)模集群的橫向擴(kuò)展,高性能平穩(wěn)寫入的需求。
- 高效的時(shí)序數(shù)據(jù)查詢分析:在典型的監(jiān)控場(chǎng)景,通常需要對(duì)長(zhǎng)周期的數(shù)據(jù)進(jìn)行查詢分析,比如針對(duì)某些指標(biāo)最近1天、3天、7天、1個(gè)月的趨勢(shì)分析、報(bào)表等;這些查詢都需要掃描大量的集群數(shù)據(jù)才能拿到結(jié)果,同時(shí)查詢的結(jié)果集也可能非常大;時(shí)序數(shù)據(jù)存儲(chǔ)需要支持多維時(shí)間線檢索、并具備流式處理、預(yù)計(jì)算等能力,才能滿足大規(guī)模應(yīng)用監(jiān)控、物聯(lián)網(wǎng)業(yè)務(wù)場(chǎng)景的典型查詢需求,并且針對(duì)時(shí)序大查詢要最小化對(duì)寫入的影響。
- 低成本的時(shí)序數(shù)據(jù)存儲(chǔ):某家庭安防場(chǎng)景,超千萬安防設(shè)備,每天就產(chǎn)生近百GB的視頻切片元數(shù)據(jù)指標(biāo),如果要保存一年的運(yùn)行數(shù)據(jù)就需要PB級(jí)的數(shù)據(jù)存儲(chǔ)規(guī)模;由于數(shù)據(jù)規(guī)模巨大,對(duì)存儲(chǔ)的低成本要求很高,另外時(shí)序數(shù)據(jù)的冷熱特征明顯。時(shí)序數(shù)據(jù)存儲(chǔ)需要充分利用好時(shí)序數(shù)據(jù)量大、冷熱訪問特征明顯、做好計(jì)算、存儲(chǔ)資源的解耦,通過低成本存儲(chǔ)介質(zhì)、壓縮編碼、冷熱分離、高效TTL等技術(shù)將數(shù)據(jù)存儲(chǔ)成本降低到極致。
- 簡(jiǎn)單便捷的生態(tài)協(xié)同:在物聯(lián)網(wǎng)、工業(yè)互聯(lián)網(wǎng)等場(chǎng)景,時(shí)序數(shù)據(jù)通常有進(jìn)一步做運(yùn)營(yíng)分析處理的需求,在很多情況下時(shí)序數(shù)據(jù)只是業(yè)務(wù)數(shù)據(jù)的一部分,需要與其他類型的數(shù)據(jù)組合來完成查詢分析;時(shí)序數(shù)據(jù)存儲(chǔ)需要能與生態(tài)BI分析工具、大數(shù)據(jù)處理、流式分析系統(tǒng)等做好對(duì)接,與周邊生態(tài)形成協(xié)同來創(chuàng)造業(yè)務(wù)價(jià)值。
時(shí)序數(shù)據(jù)庫的現(xiàn)狀和發(fā)展
時(shí)序數(shù)據(jù)庫結(jié)合時(shí)序數(shù)據(jù)的特征,嘗試解決時(shí)序數(shù)據(jù)存儲(chǔ)在高寫入吞吐、橫向擴(kuò)展、低成本存儲(chǔ)、數(shù)據(jù)批量過期、高效檢索、簡(jiǎn)單訪問與時(shí)序數(shù)據(jù)計(jì)算等方面面臨的挑戰(zhàn)。進(jìn)入2010年后,針對(duì)時(shí)序數(shù)據(jù)存儲(chǔ)設(shè)計(jì)的數(shù)據(jù)庫相繼誕生,并且時(shí)序數(shù)據(jù)庫的增長(zhǎng)趨勢(shì)、關(guān)注熱度持續(xù)領(lǐng)先,國(guó)產(chǎn)化進(jìn)程不斷加快。
? 時(shí)序數(shù)據(jù)庫關(guān)注度日趨火熱,未來還有更大空間
在DB-Engine排行榜上,我們可以看到時(shí)序數(shù)據(jù)庫在近兩年在DB-Engine上是關(guān)注度上升最快的數(shù)據(jù)庫類型。
圖2時(shí)序數(shù)據(jù)庫關(guān)注熱度(數(shù)據(jù)來源:https://db-engines.com/en/ranking_categories)
? 時(shí)序數(shù)據(jù)庫處于百花齊放,各家時(shí)序數(shù)據(jù)正在深耕各自領(lǐng)域
圖3 時(shí)序數(shù)據(jù)庫熱度排名(數(shù)據(jù)來源:DB-engines)
圖4 時(shí)序數(shù)據(jù)庫發(fā)展簡(jiǎn)史
經(jīng)過多年發(fā)展,時(shí)序數(shù)據(jù)庫大致經(jīng)歷了幾個(gè)階段:
第一代時(shí)序數(shù)據(jù)庫:基于關(guān)系型數(shù)據(jù)庫的簡(jiǎn)單存儲(chǔ)。代表:TimescaleDB,基于PostgreSQL關(guān)系數(shù)據(jù)庫構(gòu)建。
第二代時(shí)序數(shù)據(jù)庫:依賴與Hadoop生態(tài)的通用分布式存儲(chǔ)系統(tǒng)。代表:OpenTSDB(底層使用HBase),KairosDB(底層使用 Cassandra)。
第三代時(shí)序數(shù)據(jù)庫:對(duì)高性能,低成本有強(qiáng)需求,需要針對(duì)時(shí)序領(lǐng)域特別專門設(shè)計(jì)。代表:InfluxDB,IoTDB和TDengine等。
? 數(shù)據(jù)庫產(chǎn)品國(guó)產(chǎn)化進(jìn)程加快,大廠紛紛布局
包括TDengine(濤思)、IoTDB(清華)、DolphinDB(智臾科技)等優(yōu)秀的國(guó)內(nèi)時(shí)序數(shù)據(jù)庫異軍突起,自主可控成為國(guó)內(nèi)華為、阿里等廠商布局時(shí)序數(shù)據(jù)庫場(chǎng)景的重要考量,華為時(shí)序數(shù)據(jù)庫內(nèi)化InfluxDB和IoTDB,阿里自研TSDB時(shí)序引擎,并提供基于InfluxDB的阿里云TSDB for InfluxDB,騰訊也推出了TencentDB for CTSDB云服務(wù)。
典型時(shí)序數(shù)據(jù)庫介紹及對(duì)比
5.1 InfluxDB
InfluxDB由Golang語言編寫,系統(tǒng)性能、穩(wěn)定性好,被廣泛應(yīng)用,是當(dāng)前DB-engine熱度排名第一的時(shí)序數(shù)據(jù)庫,生態(tài)支持豐富全面。不過,InfluxDB采用MIT開源協(xié)議,開源版本沒有集群功能,商業(yè)版本具備分布式集群、數(shù)據(jù)分級(jí)存儲(chǔ)等功能,但價(jià)格不菲。
5.2 OpenTSDB
OpenTSDB是Apache開源軟件,是在HBase的基礎(chǔ)上開發(fā)的,底層存儲(chǔ)是HBase,但其依據(jù)時(shí)序數(shù)據(jù)的特點(diǎn)做了一些優(yōu)化。其最大的好處就是建立在Hadoop體系上,各種工具鏈成熟,但這也是它最大的缺點(diǎn),因?yàn)镠adoop不是為時(shí)序數(shù)據(jù)打造的,導(dǎo)致其性能很一般,而且需要依賴很多組件,安裝部署相當(dāng)復(fù)雜。
圖5 OpenTSDB系統(tǒng)架構(gòu)
圖6 OpenTSDB在HBase中存儲(chǔ)數(shù)據(jù)模式
5.3 TDengine
TDengine不僅是一款時(shí)序數(shù)據(jù)庫,而且還提供緩存、消息隊(duì)列、數(shù)據(jù)訂閱、流式計(jì)算等系列功能,是時(shí)序數(shù)據(jù)的全棧技術(shù)解決方案。而且它不依賴任何第三方軟件,安裝包只有1.5MB,使系統(tǒng)設(shè)計(jì)、安裝、部署和維護(hù)都變得極為簡(jiǎn)單。
圖7 TDengine系統(tǒng)框圖及全棧解決方案
5.4 IoTDB
Apache IoTDB是一體化收集、存儲(chǔ)、管理與分析物聯(lián)網(wǎng)時(shí)序數(shù)據(jù)的軟件系統(tǒng)。Apache IoTDB采用輕量式架構(gòu),具有高性能和豐富的功能,并與Apache Hadoop、Spark和Flink等進(jìn)行了深度集成,可以滿足工業(yè)物聯(lián)網(wǎng)領(lǐng)域的海量數(shù)據(jù)存儲(chǔ)、高速數(shù)據(jù)讀取和復(fù)雜數(shù)據(jù)分析需求。
圖8 IoTDB系統(tǒng)架構(gòu)圖
IoTDB獨(dú)創(chuàng)采用了tree schema來對(duì)時(shí)序數(shù)據(jù)建模,該數(shù)據(jù)模型更符合工業(yè)物聯(lián)網(wǎng)場(chǎng)景中的層級(jí)結(jié)構(gòu),但犧牲了一些標(biāo)簽靈活性。
圖9 IoTDB樹狀模式樣例
??主流時(shí)序數(shù)據(jù)庫對(duì)比
數(shù)據(jù)來源:公開資料及實(shí)測(cè)分析