1. 程式人生 > >時序資料庫及應用場景簡介

時序資料庫及應用場景簡介

時間序列資料庫簡稱時序資料庫(Time Series Database),用於處理帶時間標籤(按照時間的順序變化,即時間序列化)的資料,帶時間標籤的資料也稱為時間序列資料。

時序資料的幾個特點

1. 基本上都是插入,沒有更新的需求。

2. 資料基本上都有時間屬性,隨著時間的推移不斷產生新的資料。

3. 資料量大,每秒鐘需要寫入千萬、上億條資料

業務方常見需求

1. 獲取最新狀態,查詢最近的資料(例如感測器最新的狀態)

2. 展示區間統計,指定時間範圍,查詢統計資訊,例如平均值,最大值,最小值,計數等。。。

3. 獲取異常資料,根據指定條件,篩選異常資料

常見業務場景

監控軟體系統: 虛擬機器、容器、服務、應用

監控物理系統: 水文監控、製造業工廠中的裝置監控、國家安全相關的資料監控、通訊監控、感測器資料、血糖儀、血壓變化、心率等

資產跟蹤應用: 汽車、卡車、物理容器、運貨托盤

金融交易系統: 傳統證券、新興的加密數字貨幣

事件應用程式: 跟蹤使用者、客戶的互動資料

商業智慧工具: 跟蹤關鍵指標和業務的總體健康情況

在網際網路行業中,也有著非常多的時序資料,例如使用者訪問網站的行為軌跡,應用程式產生的日誌資料等等。

一些基本概念(不同的時序資料庫稱呼略有不同)

Metric:  度量,相當於關係型資料庫中的 table。

Data point:  資料點,相當於關係型資料庫中的 row。

Timestamp:時間戳,代表資料點產生的時間。

Field:  度量下的不同欄位。比如位置這個度量具有經度和緯度兩個 field。一般情況下存放的是隨時間戳而變化的資料。

Tag:  標籤。一般存放的是不隨時間戳變化的資訊。timestamp 加上所有的 tags 可以視為 table 的 primary key。

例如採集有關風的資料,度量為 Wind,每條資料都有時間戳timestamp,兩個欄位 field:direction(風向)、speed(風速),兩個tag:sensor(感測器編號)、city(城市)。第一行和第三行,存放的都是 sensor 編號為86F-2RT8的裝置,城市是深圳。隨著時間的變化,風向和風速發生了改變,風向從56.4變為45.6,風速從2.9變為3.6。

需要解決的幾個問題

時序資料的寫入:如何支援每秒鐘成千上億條資料的寫入。

時序資料的讀取:如何支援在秒級對上億條資料的分組聚合運算。

成本敏感:海量資料儲存帶來的成本問題。如何以更低成本儲存資料,將成為時序資料庫需要解決的重中之重。

常見時序資料庫

時序資料庫出現的時間較晚,目前較成熟的時序資料庫都僅有2、3年的歷史。

InfluxDB(單機版免費,叢集版收費)最成熟,Kairosdb(底層使用Cassandra),OpenTsdb(底層使用HBase),beringei(Facebook開源),TimeScaleDB(底層基於PostgreSQL),TSDB(百度開源),HiTSDB(阿里開源,底層是PostgreSQL)。