1. 程式人生 > 資料庫 >物聯閘道器鍵技術:時序資料庫

物聯閘道器鍵技術:時序資料庫

物聯網系統中,需要實時處理的資料可通過佇列送入流處理引擎;不需要實時處理的資料,用於離線分析或資料探勘,需要先儲存起來。物聯網系統的資料儲存的方式很多,要根據實際場景來選擇。

物聯閘道器鍵技術:時序資料庫

物理網系統各種可能的儲存選擇

物聯網的資料主要是通過感測器採集, 經過解析和清洗, 以結構化的格式進行儲存。在資料量不大的情況下, 用mysql等關係資料庫就可以滿足我們的需求。如果經常有很多報表統計的需要,也可以使用clickhouse、greenplum等nosql資料庫。

物聯網系統的資料存在特殊性,不同於傳統網際網路應用,除了網際網路應用常用的資料庫,可以結合物聯網系統的資料特點,設計專門的資料儲存系統。

物聯網資料特點

資料寫入

物聯網系統的資料寫入具有平穩、持續、高併發高吞吐的特點;通常寫多讀少,實時寫入感測器最近生成的資料,幾乎沒有資料更新的操作。

資料查詢和分析

  • 物聯網系統的資料通常需要按時間範圍讀取,系統使用者不會去關心某個特定點的資料,關心的是一段時間的資料;
  • 時間近的資料被讀取的概率高,查詢的粒度比較細;反之時間遠的資料被讀取的概率低,查詢粒度比較粗;
  • 物聯網系統往往需要支援多精度的資料查詢和多維度的資料分析。

資料儲存

物聯網系統資料儲存量大;資料冷熱分明,不同時效的資料查詢需求不同;資料儲存也要實現多種精度的資料儲存,通常是按照時間維度統計。

時序資料庫

物聯網資料有個特點, 那就是每條資料都會帶一個時間戳, 代表資料被採集的時間,所以物聯網系統的資料是時間序列資料。

時序資料庫尤其適合時間序列資料的儲存,比如網際網路運維領域常用的Prometheus就是基於leveldb引擎的時序資料庫。顧名思義,時序資料庫就是存放時序資料的資料庫,支援時序資料的快速寫入、持久化、多維度的聚合查詢等功能。

最早的時序資料庫應該是RRDTool(Round Robin Database Tool),由Tobias Oetiker 編寫,後來世界各地的人對程式碼做出了各自貢獻。

物聯閘道器鍵技術:時序資料庫

RRD儲存資料的檔案好似一個圓

RRDTool資料庫由一個固定大小的資料檔案來存放資料,此資料庫不會像傳統資料庫一樣為隨著資料的增多而檔案的大小也在增加,RRDTool在建立好後其檔案大小就固定了。

可以將RRDTool的資料檔案看成一個圓,圓的眾多直徑把圓劃分成一個個扇形,每個扇形就是可以存資料的槽位,每個槽位上被打上了一個時間戳。

圓心上有一個指標,隨著時間的流逝,取回資料後,指標會負責把資料填充在相應的槽位上;當指標轉了360度後,最開始的資料就會被覆蓋,就這樣RRDTool迴圈填充著資料。

在RRDTool資料庫之後,又出現了很多開源資料庫。

歷史上釋出的開源時序資料庫:

•1999/07/16 RRDTool First release

•2009/12/30 Graphite 0.9.5

•2011/12/23 OpenTSDB 1.0.0

•2013/05/24 KairosDB 1.0.0-beta

•2013/10/24 InfluxDB 0.0.1

•2014/08/25 Heroic 0.3.0

•2017/03/27 TimescaleDB 0.0.1-beta

從2016年以後,隨著物聯網市場的發展,時序資料庫也跟著火了起來。2016年7月,百度雲在其天工物聯網平臺上釋出了國內首個多租戶的分散式時序資料庫產品TSDB;2017年2月Facebook開源了Beringei時序資料庫;2017年4月基於PostgreSQL打造的時序資料庫TimeScaleDB也開源了。

按照儲存的底層技術,大致可以將時序資料庫大致分為三類:

  • 基於檔案儲存:RRDTool,Graphite Whisper。此類常用於服務監控告警,資料儲存基於RRD的檔案結構。
  • 基於K/V資料庫:opentsdb基於hbase,kairosDB基於cassandra,prometheus基於leveldb,influxdb則選擇自己實現的一套KV儲存結構,類似LSM(Log Structured Merge) tree的TSM(Timestamp Segments Merged Tree)。
  • 基於關係型資料庫:MySQL,PostgreSQL 等關係資料庫也可以儲存時間序列資料。

時序資料是基於時間的資料。在以時間為軸的座標系中將這些資料點連成線,可以做成多維度報表,揭示歷史資料的趨勢性、規律性、異常性;也可以做大資料分析,機器學習,實現對未來的預測和預警。時序資料庫為時序資料的歸納和分析提供了儲存基礎,在物聯網蓬勃發展的今天,必將得到越來越廣泛的應用。