時序數據簡介
1 什麽是時序數據
生活中,我們經常會接觸到需要對某些指標或者狀態按時間序列進行統計和分析的場景,典型的如股票大盤走勢、氣象變化、內存監控等。
這些依賴於時間而變化,可以用數值來反映其變化程度的數據就叫時序數據。時序數據具有兩個關鍵的指標:監測時間和監測數值。
2 時序數據模型
時序數據按照其數據組織形式可以分為單值模型和多值模型兩種。
2.1 單值模型
單值模型一條監測記錄只對應一個指標的數據,如下表所示,每行數據為一條監測記錄,每條記錄只能反映一個監測指標的信息。
metric | timestamp | tags | value | |
---|---|---|---|---|
server | city | |||
cpu | 2017-09-27T16:55:01Z | server1 | hangzhou | 0.1 |
memory | 2017-09-27T16:57:12Z | server2 | shanghai | 0.2 |
2.2 多值模型
多值模型一條監測記錄可以對應多個指標的數據,如下表所示,每行數據為一條監測記錄,每條記錄可以反映不同監測指標的信息。
timestamp | tags | metrics | ||
---|---|---|---|---|
server | city | cpu | memory | |
2017-09-27T16:55:01Z | server1 | hangzhou | 0.1 | 0.2 |
2017-09-27T16:57:12Z | server2 | shanghai | 0.2 | 0.3 |
2.3 小結
單值模型和多值模型在數據表示上可以進行相互轉化,如多值模型可以用多條記錄的單值模型來表示,同時多值模型也可以退化為只記錄一項指標。因此,不管是單值模型還是多值模型都可以解決實際當中時序數據相關的問題。但是需要指出的是,兩種模型在具體實現上還是有一些差異的,需要根據實際的業務場景選擇合適的時序數據庫。
3 時序數據的處理
時序數據在實際的業務需求中一般降采樣、插值、聚合三種方式。
3.1 降采樣
時序數據在實際當中是連續的數據,理論上給定任意的時刻都能查詢得到其對應的值,但是計算機在存儲數據的時候只能按照一定精度進行采樣,存儲采樣到的離散的數值。
降采樣的示意如上圖所示。在具體的業務場景當中,我們也往往不需要太高的精度,比如查看一年的股票走勢,我們把精度下降到天為單位就能滿足需求,同時也能提高處理速度。
3.2 插值
時序數據可能會因為采樣精度和存儲過程中的錯誤導致丟失部分業務需要的數據,這個時候我們可以利用時許數據的特點對其進行插值,來近似獲取這部分丟失的數據。
如上圖所示,利用線性插值來計算時間點為x的監測值得。
3.3 聚合
很多業務場景常常需要對時序數據進行聚合處理,常用的聚合方法如求和、均值、最大值、最小值、計數等。與普通數據庫的聚合不同的是,時序數據庫的聚合針對的是抽象的時間線。
如上圖所示,不同監測項或者同一個監測項不同標簽可以按時間序列抽象出不同的時間線,對其進行聚合可以得到新的時間線。
時序數據簡介