監(jiān)控系統(tǒng)大家應(yīng)該都用過,而監(jiān)控里面記錄的比較重要的數(shù)據(jù)就是某個時間點發(fā)生了什么,而用來存儲這些數(shù)據(jù)的數(shù)據(jù)庫,用專業(yè)術(shù)語講就是時間序列數(shù)據(jù)庫(Time Series Database,縮寫簡稱 TSDB)。以下是一個更官方的解釋:
時間序列數(shù)據(jù)庫主要用于指處理帶時間標簽(按照時間的順序變化,即時間序列化)的數(shù)據(jù),帶時間標簽的數(shù)據(jù)也稱為時間序列數(shù)據(jù)。是新型的非關(guān)系型數(shù)據(jù)庫,在大數(shù)據(jù)時代有著十分重要的意義。
Prometheus、InfluxDB、M3、TimescaleDB 都是時下流行的 TSDB。時序數(shù)據(jù)的壓縮算法很大程度上決定了 TSDB 的性能,以上幾個項目的實現(xiàn)都參考了 Facebook 2015 年發(fā)表的論文《Gorilla: A fast, scalable, in-memory time series database》中提到的差值算法。
今天要推薦的開源項目 mandodb 是一個最小化的 TSDB 實現(xiàn),從概念上來講它還算不上是一個完整的 TSDB,因為它:
- 沒有實現(xiàn)自己的查詢引擎(實現(xiàn)難度大)
- 缺少磁盤歸檔文件 Compact 操作(天氣好的話會實現(xiàn))
- 沒有 WAL 作為災(zāi)備保證高可用(心情好的話會實現(xiàn))
但是 mandodb 的意圖是希望完整介紹如何從零開始實現(xiàn)一個小型的 TSDB,希望能給大家?guī)砀嗟膯l(fā)。
mandodb 使用 Go 實現(xiàn),同時作者也針對 mandodb 提供了如下詳盡的用法介紹、設(shè)計方案介紹等,其中還包含了對差值算法的講解,是非常不錯的學習資料呢。
開源作者的整體文檔行文非常的風趣幽默,同時細節(jié)講解也非常的詳細,如果你對時間序列數(shù)據(jù)庫感興趣,推薦你了解一下這個項目,Star 一波絕對不虧。
更多項目詳情請查看如下鏈接。
開源項目地址:
https://github.com/chenjiandongx/mandodb