萬物互聯時代,工業物聯網產生的數據量比傳統的信息化要多數千倍甚至數萬倍,并且是實時采集、高頻度、高密度,動態數據模型隨時可變。傳統數據庫在對這些數據進行存儲、查詢、分析等處理操作時捉襟見肘,迫切需要一種專門針對時序數據來做優化的數據庫系統,即時間序列數據庫。
時間序列數據庫(Time Series Database)是用于存儲和管理時間序列數據的專業化數據庫,具備寫多讀少、冷熱分明、高并發寫入、無事務要求、海量數據持續寫入等特點,可以基于時間區間聚合分析和高效檢索,廣泛應用在物聯網、經濟金融、環境監控、工業制造、農業生產、硬件和軟件系統監控等場景。
根據國際知名網站DB-Engines數據,時序數據庫在過去24個月內排名高居榜首,且遠高于其他類型的數據庫,可見業內對時序數據庫的需求迫切。相應的時序數據庫產品近年來也快速發展,各大互聯網企業包括谷歌、阿里巴巴、亞馬遜都推出自己的時序數據庫,業界使用較多的時序數據庫主要有如下幾種:
1、InfluxDB
InfluxDB是一款用Go語言編寫的開源分布式時序、事件和指標數據庫,無需外部依賴。該數據庫現在主要用于存儲涉及大量的時間戳數據,如DevOps監控數據,APP metrics,loT傳感器數據和實時分析數據。
作為目前開源排名最高的時序數據庫,InfluxDB支持數據存儲策略(RP)和數據歸檔(CQ),能夠實時查詢,數據在寫入時被索引后就能夠被立即查出,內置HTTP接口,安裝管理很簡單,并且讀寫數據非常高效。
2、Kdb+
kdb+/q被官方稱為世界上最快的時間序列數據庫,它使用統一的數據庫處理實時數據和歷史數據,同時具備CEP(復雜事件處理)引擎、內存數據庫、磁盤數據庫等功能。列式存儲的特性,使得對于某個列的統計分析操作異常方便。
與一般數據庫或大數據平臺相比,kdb+/q具有更快的速度和更低的總擁有成本,非常適合海量數據處理,主要被用于海量數據分析、高頻交易、人工智能、物聯網等領域。在延遲性上有著苛刻要求的金融領域,kdb+有著獨特的優勢。
3、Prometheus
Prometheus是一套開源的系統監控報警框架,由工作在SoundCloud的Google前員工在2012年創建,作為社區開源項目進行開發,2015年正式發布,并在次年正式加入Cloud Native Computing Foundation。
作為新一代的監控框架,Prometheus具備強大的多維度數據模型,有多種可視化圖形界面,使用pull模式采集時間序列數據,可以采用push gateway的方式把時間序列數據推送至Prometheus server端。
4、 Graphite
Graphite是一個開源實時的、顯示時間序列度量數據的圖形系統。Graphite并不收集度量數據本身,而是像一個數據庫,通過其后端接收度量數據,然后以實時方式查詢、轉換、組合這些度量數據。
Graphite支持內建的Web界面,它允許用戶瀏覽度量數據和圖。它由多個后端和前端組件組成。后端組件用于存儲數值型的時間序列數據,前端組件則用于獲取指標項數據并根據情況渲染圖表。
5、TimescaleDB
TimescaleDB是唯一支持完整SQL的開放源代碼時間序列數據庫,已針對支持全面SQL的快速提取和復雜查詢進行了優化。它基于PostgreSQL,并且為時間序列數據提供了最好的NoSQL和Relational世界。
TimescaleDB使開發人員和組織能夠更多地利用其功能:分析過去,了解現在和預測未來。在查詢層面統一時序數據和關系數據可消除數據孤島,并使演示和原型更容易實現。可擴展性和完整的SQL接口的結合賦予員工提出數據問題。
6、阿里云TSDB
作為我國科技公司的代表,阿里云時序數據庫也入圍了DB-Engines榜單。TSDB是一種集時序數據高效讀寫,壓縮存儲,實時計算能力為一體的數據庫服務,可廣泛應用于物聯網和互聯網領域,實現對設備及業務服務的實時監控,預測告警。
TSDB具備秒級寫入百萬級時序數據的性能,提供高壓縮比低成本存儲、預降采樣、插值、多維聚合計算、可視化查詢結果等功能,解決由設備采集點數量巨大、數據采集頻率高造成的存儲成本高、寫入和查詢分析效率低的問題。