【廣告】
BlueSky高性能時序數(shù)據(jù)庫技術(shù)/問題
趨勢方面了解完之后,我們細(xì)致地看看現(xiàn)在的時序數(shù)據(jù)庫有哪些特點、如何分類、有哪些技術(shù)。首先,我們從存儲架構(gòu)角度,看看時序數(shù)據(jù)庫的分類情況。類就是是基于關(guān)系數(shù)據(jù)庫的時序數(shù)據(jù)庫,比如timescale。第二類就是基于KV的時序數(shù)據(jù)庫,比如OpenTSDB。第三類就是專門面向時序數(shù)據(jù)場景的原生時序數(shù)據(jù)庫,比如InfluxDB,Io和Tengine等。
BlueSky高性能時序數(shù)據(jù)庫的數(shù)字模型
上面介紹了時序數(shù)據(jù)的基本概念,也說明了分析時序數(shù)據(jù)的意義。那么時序數(shù)據(jù)該怎樣存儲呢?數(shù)據(jù)的存儲要考慮其數(shù)學(xué)模型和特點,時序數(shù)據(jù)當(dāng)然也不例外。所以這里先介紹時序數(shù)據(jù)的數(shù)學(xué)模型和特點。
下圖為一段時序數(shù)據(jù),記錄了一段時間內(nèi)的某個集群里各機器上各端口的出入流量,每半小時記錄一個觀測值。這里以圖中的數(shù)據(jù)為例,介紹下時序數(shù)據(jù)的數(shù)學(xué)模型(不同的時序數(shù)據(jù)庫中,基本概念的稱謂有可能不同,這里以騰訊CTSDB為準(zhǔn)):
measurement: 度量的數(shù)據(jù)集,類似于關(guān)系型數(shù)據(jù)庫中的 table;point: 一個數(shù)據(jù)點,類似于關(guān)系型數(shù)據(jù)庫中的 row;timestamp: 時間戳,表征采集到數(shù)據(jù)的時間點;tag: 維度列,代表數(shù)據(jù)的歸屬、屬性,表明是哪個設(shè)備/模塊產(chǎn)生的,一般不隨著時間變化,供查詢使用;field: 指標(biāo)列,代表數(shù)據(jù)的測量值,隨時間平滑波動,不需要查詢。
時序數(shù)據(jù)怎么不一樣?
關(guān)系數(shù)據(jù)庫(OLTP)的出現(xiàn)是為了解決交易事務(wù)問題,比如電商訂單,支付等場景,也就是數(shù)據(jù)表的事務(wù)更新,比如轉(zhuǎn)賬交易,用戶從一個賬號轉(zhuǎn)出,而在另外一個賬戶入賬;這對應(yīng)數(shù)據(jù)庫兩行甚至兩個字段的更新;由于任何兩個賬號之間都可能發(fā)生轉(zhuǎn)賬,因此這些記錄在磁盤上隨機分布;再讓我們看看時序數(shù)據(jù)的場景