時序資料庫是什麼?跟普通資料庫有哪些區別?

語言: CN / TW / HK

持續創作,加速成長!這是我參與「掘金日新計劃 · 10 月更文挑戰」的第1天,點選檢視活動詳情

最近有個物聯網的專案,無人機採集資料,需要記錄無人機的飛行軌跡、飛行引數等,這些引數大概是每秒上報2條,那麼一次飛行任務可能有10幾分鐘、20幾分鐘左右,考慮到資料量的大小以及實時性,我們考慮使用時序資料庫。具體選用哪個資料庫,這個不重要,開源的、商業的、國內的、國外的都可以,主要是好多小夥伴不懂時序資料庫,那麼本文筆者就用一篇文章給大家普及一下時序資料庫。

一、什麼是時序資料庫

  • 英文全稱:Time Series Database
  • 英文縮寫:TSDB

其實以前時序資料庫就一直存在,只是用的人少,隨著物聯網 ( IoT ) 和其他革命性技術的不斷髮展,時序資料庫再次登上了技術舞臺。

我們都知道資料庫是以某種方式儲存的資料集合,例如,聯絡人列表是一個數據庫,我們在其中可以記錄姓名、地址、電話號碼和電子郵件地址。資料庫可以處理多種資料型別,具體取決於它們的結構或管理系統。

那麼時序資料庫 (TSDB) 是一種設計和優化的資料庫,用於註冊和儲存始終與特定時間點相關聯或使用時間戳的資料,所以時序資料庫又被稱為是時間戳資料庫

這種結構可以輕鬆地從任何資料來源按時間順序分析事件,也可以接收併發輸入,使我們能夠同時分析和儲存多個數據流,甚至可以組合分析它們。

二、什麼是時序資料

上面介紹了時序資料庫,說白了就是儲存跟時間緊密聯絡的資料,但是有沒有想過什麼是時序資料?什麼樣的資料才是時序資料?依據的標準是什麼?與普通資料有啥區別?

2.1 時序資料的定義

時序資料其實就是在不同時間點收集並按時間排序的資料。

具體點就是單個主題(實體)在 不同時間間隔(通常在度量的情況下等間距,或在事件的情況下不等間距)的觀察(行為)的集合 。

例如:每秒(多個時間間隔)收集的無人機(單個實體)的飛行軌跡、飛行引數(行為)。

時間是區分時序資料與其他型別資料的核心屬性,用於按時間順序組合收集的資料的時間間隔稱為時序頻率,因此,將時間作為主軸之一將是給定資料集是時序資料的主要指標。

時序資料可以用於多種用途和各個領域,因此資料集可能會有所不同,我們怎麼去判定這個資料是時序資料呢?

三個標準可以參考一下:

  • 資料按時間順序到達;
  • 時間是主軸;
  • 新收集的資料記錄為新條目。

2.2 時序資料的例子

  • 感測器
  • 監控
  • 天氣預報
  • 股票價格
  • 匯率
  • 應用程式效能指標

2.3 處理時序資料的步驟

一般來說,處理時序資料分為5個步驟:

1、資料模型:

收集的時序資料必須符合模型的規範,包括所有時序資料的特徵質量。

2、流計算:

對可用的時序資料進行預聚合、取樣和後聚合。

3、資料儲存:

儲存系統允許冷熱資料分離和高效的範圍查詢,提供高吞吐量、大容量和低成本的儲存。

4、元資料檢索:

支援多種檢索方法,例如儲存和檢索數千萬到數億的時間線元資料。

5、資料分析:

最後一步實時分析和計算時序資料。

三、時序資料庫的優缺點

3.1 優點

  • 可以很好地處理高速資料
  • 一次可以掃描大量資料
  • 有很多時序資料庫開源免費,選擇性比較靈活

3.2 缺點

  • 管理和設定方面沒有關係型資料庫方便,操作相對複雜
  • 由於資料大小的不定,所以所要的空間要相對大一些

總體來說,不能說時序資料庫不好或者好,根據場景和需求來選擇。

四、時序資料庫應用場景

4.1 物聯網

物聯網技術的發展,意味著連線的水錶、能源、溫度計、健康監測器和可穿戴裝置等聯網裝置產生的資料量呈指數級增長,時序資料庫可以應對高度可擴充套件的資料庫架構的需求。

4.2 效能和健康監控

應用程式效能、按鈕點選、熱圖、跳出率……所有這些都可以通過時序資料庫進行測量和監控,以便開發人員可以跟蹤使用者習慣和效能趨勢,識別瓶頸並簡化複雜的流程。

4.3 金融趨勢和零售預測

時序資料庫對於跟蹤和分析市場波動至關重要,檢測相關事件之間的因果關係並與歷史資料交叉引用可以在股市中獲利,並幫助零售商店預測未來趨勢以預測庫存需求。

4.4 自動駕駛資料

自動駕駛汽車在駕駛過程中會產生令人難以想象的資料量,時序資料庫可以處理這些大量的實時資料,有助於提高駕駛安全性。

4.5 DevOps/伺服器/容器監控

系統通常會收集有關不同伺服器或容器的指標:CPU 使用率、空閒/已用記憶體、網路 tx/rx、磁碟 IOPS 等,每組指標都與時間戳相關聯,那麼這些資料可以用時序資料庫進行儲存和分析。

4.6 網路安全

網路安全對於企業來說非常重要,被黑客攻擊的事件經常會發生,企業減輕安全威脅的一種方法是不斷監控其網路上的活動,而時序資料庫可以儲存更細粒度的資料,並允許實時監控該資料。當前資料可以與歷史資料進行比較,並且可以快速檢測到異常情況,來防止或減少安全漏洞的影響。

五、時序資料庫產品

根據權威網站db-engines的統計,直至2022年9月全球排名前30的時序資料庫有:

統計資料來源於db-engines.com網站

統計資料來源於db-engines.com網站

一般我們常用的也就是排名在前10的產品:

  • InfluxDB
  • Kdb+
  • Graphite
  • Prometheus
  • TimescaleDB
  • Apache Druid
  • RRDtool
  • OpenTSDB
  • DolphinDB

六、時序資料庫和普通資料庫的區別

這裡說的普通資料庫一般就是指關係型資料庫。

6.1 資料壓縮情況

普通資料庫將它們的資料按行儲存在磁碟上,不同的資料型別彼此相鄰,這限制了可以使用什麼型別的壓縮演算法以及可以壓縮多少資料。

而時序資料庫通常以相同型別的資料點彼此相鄰的方式儲存資料,這樣的話可以使用最佳壓縮演算法,大大節省了儲存成本。

6.2 資料庫架構

普通資料庫底層是定義好模式的,所以對於表本身,不管是修改還是刪除某一列,都會影響到資料庫的模式,在底層相當於要進行”資料庫遷移“。

而時序資料庫往往是無模式的,允許快速輕鬆地新增新欄位。

6.3 可用性和冗餘

普通資料庫可以通過叢集儲存的方式提供高可用性,但它們容易受到網路可用性的影響,如果連線斷開,資料收集將停止。

而時序資料庫通過收集器的冗餘可以確保良好的可用性,時序資料庫一般帶有儲存轉發技術,如果發生中斷,該技術會在收集器處緩衝資料,當伺服器自動重連時,緩衝區最終會同步上傳,確保不會丟失資料。

6.4 資料安全

資料庫被黑客和病毒攻擊的事件頻繁發生,中槍的大多數是知名的關係資料庫,常見的攻擊比如有:SQL 注入。

而時序資料庫一般不允許通過標準介面插入、更新或刪除資料,此外,時序資料庫會跟蹤所有更改,包括使用訪問、配置、安全違規和系統警報。

七、總結

時序資料庫現在出場率越來越高,我們在選型時序資料庫的時候要根據自己專案需求來進行選擇。對於時序資料庫,本文著重介紹了時序資料和時序資料庫的術語解釋、時序資料庫的優缺點、時序資料庫應用場景、時序資料庫和普通資料庫的區別。希望本文的介紹對您學習時序資料庫有幫助,有任何問題可以在下方評論區與我討論。