采用预计算的方式,主要解决的是对于大量的基于时序的数据进行聚合查询。数据可以实时摄入,进入到Druid后立即可查,同时数据几乎不可变的。
Druid还是一个实时处理时序数据的OLAP数据库,索引按照时间分片,查询时也是按照时间线去路由索引的
应用场景
- 点击流分析
- 服务器指标存储
- 供应链分析
- 数字营销/广告分析
使用范围
- 插入率很高,但更新很少
- 大多数查询都是聚合查询
- 查询等待时间为100ms到几秒
- 数据具有时间成分
- 有多个表,但每个查询仅仅只命中一个大的分布式表
- 具有高基数数据列(例入uid),并且需要对其进行快速计数和排名
- 数据来源为kafka,HDFS,之类的对象存储
功能特性
- 列式存储格式
- 可扩展的分布式系统
- 大规模并行处理
- 实时或批量摄取
- 自我修复,自我平衡,易于操作
- 云原生的容错架构,不会丢失数据
- 用于快速过滤的索引
- 基于时间的分区
- 近似算法(性能高,有误差)
特点
- Druid实时的数据消费,真正做到数据摄入实时,查询结果实时
- Druid支持PB级数据,千亿级事件快速处理,支持每秒数千查询并发
- Druid的核心是时间序列,把数据按照时间序列分批存储,十分适合用于对按照时间进行统计分析的场景
- Druid把数据分为三类:时间戳,纬度列,指标列
- Druid不支持多表链接
- Druid中的数据一般是使用其他计算框架(Spark等)预计算好的低层次统计数据
- Druid不适合用户处理透视纬度复杂多变的场景
- Druid擅长的查询类型比较单一,一些常用的SQL(group by等)语句在Druid里运行速度一般