Druid爲啥這麼好用?

一、Druid設計原則

(1)快速查詢能力:部分數據聚合(Partial Aggregate) + 內存化(In-Memory)+索引(Index)

(2)水平擴展能力:分佈式查詢(Distributed Data) + 並行化查詢(Parallelizable Query)

(3)實時分析能力:不可變的過去(Immutable Past),只追加的未來(Append-Only Future)。

部分聚合:Partial Aggregate

Druid默認會對明細數據按最明細的全維度組合,以及指標,進行預先聚合。聚合方式是預定義的,聚合粒度是按時間聚合,可以是從1分鐘到1天。

內存化

使用Bitmap 和各種壓縮技術。

索引

通過倒排索引,加速 AND / OR

算子可並行化查詢

提供可並行化查詢的聚合操作,如Count,Mean,Variance等。

對於不能並行化的操作,如Median,Druid暫時不支持。

對基數的查詢提供近似算法(HyperLoglog,DataSketches),以保證快速相應。

捨棄耗時的Join操作

使用druid時,其輸入數據需要是串聯好的寬表,因爲druid不支持Join操作,以保障響應性能。同時,Druid是一種時序數據庫,在入庫時會按照一定的時間粒度對數據進行聚合,以加快分析查詢速度。

二、Druid的基本概念

時間列

Druid會將時間很久的一些數據行聚合在一起,所有的查詢都需要指定查詢的時間範圍。

維度列

維度列用來標識事件的維度。

事件列

用於聚合和計算的列,是業務的量化指標。

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