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会将时间很久的一些数据行聚合在一起,所有的查询都需要指定查询的时间范围。

维度列

维度列用来标识事件的维度。

事件列

用于聚合和计算的列,是业务的量化指标。

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