時序數據庫簡介

這個小文章裏儘量避免使用數據挖掘的概念, 爭取用簡單的語言解釋出來, 如果以後有時間, 再仔細介紹幾種開源時序數據庫的結構和關鍵技術。

時序數據簡單的說, 就是隨着時間流而不斷產生的數據, 比如一臺服務器的cpu負載, 或者一個應用的log文件等。 對於這種時序數據, 有一些常用的操作, 比如統計每分鐘的平均值, 中位數等。所謂時序數據庫, 就是針對這類場景做了優化的一類數據存儲查詢系統。在OLAP中, 此類時序數據的統計有着重要的應用。 

我們用例子來說明時序數據以及對這些數據的處理。比如我們就以 cpu 使用率這個數據爲例。假設我們一個集羣有近百臺服務器, 對於每臺服務器, 我們每秒採集一次數據, 數據是服務器cpu 當前的 us sy id wa st 。那麼, 我們採集到的數據除了這幾個值之外一定還有數據的一些其它屬性, 比如採集時間, 服務器編號, 服務器物理配置,服務器上主要的應用。 這些屬性一般叫做維度(dimension)。此類數據實時產生, 我們最常用的查詢可能類似這樣:

最近1小時內, 每5分鐘cpu使用率的平均值。-----在一個時間範圍內, 按照時間段歸類, 計算均值(也可能是中位數, 最大最小值, topN等)

最近6小時內, 每5分鐘每種服務器類型cpu使用率的平均值。 最近1小時內, 每1分鐘每臺服務器的cpu使用率的平均值

最近1小時內, 每1分鐘所有跑web service 應用的服務器的cpu使用率的平均值

綜上, 我們看到這類數據處理基本是要對一個時間範圍的數據, 根據時間段, 維度進行歸類,做一些聚合運算。

時序數據庫要解決的問題就是如何能在海量數據中, 快速響應用戶的此類查詢。

補充一種時序數據常用的操作, count distinct(基數統計), 比如從web 服務器的log裏統計獨立訪問ip數量, 這種需求時序數據庫也必須要解決。

時序數據庫面臨的主要困難是, 數據量大, 數據的維度多, 統計查詢複雜, 需要快速響應查詢。

時序數據有一個比較大的特點, 就是數據的價值隨着時間流逝而逐步降低。

時序數據庫解決這些問題的主要的技術手段有:分佈式處理, 按照時間分片存儲,按照維度條件做哈希, 通過位圖索引優化查詢, 儘量保證最新數據在內存中, 使用統計算法。後面我們以druid (http://druid.io/)爲例來具體介紹這些技術的實現。 順便提一下, druid 的文檔寫的不好, 甚至還有錯誤,如果想要測試druid, 要文檔和 google group 結合起來。


廣告時間

  大數據處理招聘了

  要求算法 數據結構等基礎知識紮實

  良好的編程功底

  瞭解大數據解決方案

  有過高併發高壓力系統設計開發經驗

  熟練使用Linux系統 瞭解Linux內核

  工作地點在大連

  工作內容 line 相關大數據處理

  聯繫方式 簡歷發送至    dl_server_developer_recruit%nhn.com

  

  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章