Druid

Druid是什么

upload successful
也是基于列存的。

对比时间序列数据库TSDB

upload successful

对比分布式OLAP数据库

upload successful
es本身是检索(全恩)系统,现在也可以增强聚合计算,不过olap上有些短板。
kylin是需要预计算的,批量构建cube的过程很难满足低延时的数据写入。
presto需要起一堆的进程去查hdfs文件,一般也很难做到低延时的数据写入以及快速交互式查询。不过可以考虑presto+hbase

Druid的优缺点

upload successful
数据写入前预聚合
目前版本0.12.0

不支持join
明细查询也要瓶颈,当然也可以关掉预计算rollup,直接查明细数据,但是这样会增大数据量存储,对检索效率有影响。bit本身的索引结构只有bitmap索引,不适合明细查询。不像其他明细查询的数据库有B+等,LSM树等,没有这种索引类型

是否需要druid

upload successful
一定要处理时间序列的数据,druid是对时间进行分片的。
实时报表类的,各种即席查询。
需要提前定义schema

Druid概念与特性

upload successful

数据模型

事件

upload successful
时间字段
维度列
指标列,数值字段

roll-up

upload successful
此图是按照分钟级聚合的。
在指定的时间粒度内,把维度列相同的数据,将他们的指标列按照用户指定的方式进行聚合。
对数据压缩有很大所用

数据存储

upload successful
segment官方推荐大小300-700M

维度列

upload successful
维度列中包含一个字典,对所有值进行编码。

upload successful

数据写入

实时

upload successful
kafka可追加segment
traquality会抛弃迟到的数
??

离线

upload successful
??

数据查询

查询模式

upload successful

upload successful

upload successful

Druid vs ES

upload successful

Druid vs KV存储(hbase)

upload successful

Druid vs SQL on Hadoop(presto,spark sql)

upload successful
druid做distinct是先group by 然后在count
预聚合是在内存中做的。

Druid架构以及原理

upload successful

外部依赖

upload successful

角色节点

upload successful

Coordinator

upload successful

Historical

upload successful

Broker

upload successful

Indexing Service

upload successful

upload successful

upload successful

upload successful

第三方依赖

Zookeeper

upload successful

upload successful

upload successful

upload successful

元数据

upload successful

DeepStorage

upload successful