海量資料分析類系統的設計主要面臨2個大問題:
優勢和劣勢:
加入了hadoop體系的生態圈,更加容易被接受,同時省去了研發分布式儲存系統的麻煩,更多的是在分布式查詢上做優化。但無法在儲存上做更加深度的優化,比如沒有倒排索引支援,過濾查詢速度可能相對弱些,後面會重點分析下opentsdb的困局。
優勢和劣勢:
可以在儲存上進行深度的優化,為自己特定資料模型進行定製。代價就是自己要實現分布式儲存
2 如何對海量資料進行快速分析?
劃分後的好處就是:可以做一些儲存上的優化,比如自動對維度列建立倒排索引,不需要使用者使用關係型資料庫那樣針對某一列或者多列手動建立索引。總的來說:雖然給使用者帶來了分割槽維度列和指標列的麻煩,但是帶來的收益確實非常大的。
2 需要支援海量資料的實時寫入與查詢
時序資料庫使用最多的場景就是監控領域,訂單量的實時監控、機器的cpu、記憶體、網路等實時監控
要做到這點目前來說基本上需要實現乙個lsm樹儲存模型,上述幾個時序資料庫基本都有。
3 在查詢資料時都有時間範圍
在儲存的設計上都會按照時間進行分片儲存,按照時間範圍查詢時可以快速過濾掉無關的資料。
下面就簡述下目前的幾個時序資料庫如何去解決前面提到海量資料分析的2大問題。
opentsdb依賴了其他儲存系統,在資料規模小的時候還能忍受,資料規模大了,查詢速度就慢很多,想改變卻又因底層儲存不支援自己特定需求的原因而困難重重。
不過opentsdb將metric、tagk、ta**轉換成id的方式確實可以省去很多的儲存容量,這部分值的借鑑。
這裡只是重點來說elasticsearch在海量資料的聚合分析領域的應用,這裡並不涉及到全文搜尋(這是elasticsearch立足的主戰場,鮮有對手,但是在海量資料的聚合分析領域elasticsearch對手就很多)
在一定程度上kylin也會被用做時序方面的資料分析。
在調研了上述諸多系統之後,來看看lindb的設計
b 在時間範圍過濾上,lindb底層儲存就是按照時間範圍進行物理劃分的,所以可以快速過濾
c 在預聚合上,先總結下其他系統的預聚合:
要實現這個目標並不簡單,查詢的資料量大小主要有2方面的因素:組合數的大小*每個組合數的點數,比如100個host,每個host 32個核,每個host的每個核 1s乙個點,那麼查詢所有host 7天內的所涉及的資料量大小為 (100*32) * (7*24*3600)。為了減少這個資料量的大小,就需要從下面2個方向入手:
我們可以看到influxdb、kylin等rollup的實現是將時間維度預聚合和組合數預聚合合併在乙個功能中,雖然簡化了開發,但是卻麻煩了使用者。我們則必須要把他們分開,我們將時間維度預聚合完全自動化,使得幾乎所有的使用者不用陷入如何優化的煩惱中,針對極個別的使用者我們之後再通過組合數預聚合讓使用者參與優化。總之,lindb在功能設計上都以簡化使用者使用為目標。
特別有意思的是很多系統在自己特定領域站穩腳跟後都會進行擴張到其他相關領域,比如oltp的資料庫向olap擴張,再比如elasticsearch在全文搜尋領域站穩腳跟後擴張到時序資料庫領域,如果在設計之初就能考慮到其領域的關鍵點的話,那麼擴張可能會順利很多,比如時序資料庫中非常重要的倒排索引和預聚合
未來對資料的實時寫入和實時查詢要求會越來越高,因此時序資料庫相比依賴於hdfs的hive、sparksql、impala等優勢很大,但是目前時序資料庫的查詢豐富性方面相比它們還差很多,通常都是對單指標的filter和group by查詢,比如對多指標的join暫時暫時都不支援。在監控場景下,join的需求不是很強烈,但是時序資料庫要想走向其他場景下的資料分析領域,瓜分他們的地盤,join還是必不可少的功能,這時對時序資料庫的分布式sql查詢要求也就變高了,如果能做到的話才更容易走出時序資料分析領域,向其他資料分析領域進軍
1 opentsdb文件
2 influxdb文件
3 influxdb系列解析
4 druid文件
5 druid storage 原理
6 elasticsearch rollups
7 elasticsearch技術研討知乎專欄
8 roaring bitmaps
python 時序資料分析
時序資料有四種主要的組成方式 1.trend 趨勢 可以是線性的也可以是非線性的,但可以研究其引數 2.seasonality 季度變化 可以是加法型的,也可以是乘法型的 3.noise 噪音 噪音一般都是資料中的一段,所以找到方法來減小噪音是分析過程的關鍵 4.其他 例如意外值,缺失值等等 有這四...
時序資料庫
看到這類資料處理基本是要對乙個時間範圍的資料,根據時間段,維度進行歸類,做一些聚合運算。時序資料庫要解決的問題就是如何能在海量資料中,快速響應使用者的此類查詢。序資料庫的一些基本概念 不同的時序資料庫稱呼略有不同 metric 度量,相當於關係型資料庫中的table。data point 資料點,相...
時序資料庫介紹
什麼是時序資料庫 先來介紹什麼是時序資料。時序資料是基於時間的一系列的資料。在有時間的座標中將這些資料點連成線,往過去看可以做成多緯度報表,揭示其趨勢性 規律性 異常性 往未來看可以做大資料分析,機器學習,實現 和預警。時序資料庫就是存放時序資料的資料庫,並且需要支援時序資料的快速寫入 持久化 多維...