Druid 简介

Druid是一款开源的,为实时和离线数据的亚秒级查询设计的数据存储引擎。它主要用于对事实数据(event data)进行商业智能OLAP分析。Druid提供低延时(实时)数据导入,灵活的数据探索(data exploration)和快速的数据聚合。目前Druid可以适用于万亿条和PB级的数据量,Druid最常用于面向用户的数据分析应用中。

关键词
  • 亚秒级OLAP查询
  • 实时数据流的导入
  • 多用户同时查询
  • 成本和性能的平衡
  • 高可用性
  • 可扩展性
Druid是否适合我?

这部分提供了Druid适合满足的需求。如果我们要开发的应用正好有相同的需求,那么Druid是一个很好的选择。

  • 快速聚合和OLAP查询的应用
  • 实时数据分析(当然,Druid同样可以满足离线数据分析的需求)
  • 海量数据(万亿条,PB级)
  • 始终可用的数据存储引擎
Druid与其他引擎的比较

这里将Druid和其他常见的数据存储和查询引擎进行对比,以便于更好的理解Druid使用场景。

  • Druid vs Elastichsearch
Druid Elasticsearch
整体定位 OLAP引擎,提供高性能、低成本的数据分析操作 用于搜索系统,提供全文本的搜索功能
数据格式 结构化数据,需要提前定义好数据schema 非结构化数据,可以导入任意schema的数据
存储要求 可以在数据导入时进行汇总聚合,缩减数据量 原始日志级的存储,存储增长较快
聚合特性 专门为数据聚合查询优化 也可以支持数据聚合查询,但资源开销较大
  • Druid vs Key/Value Stores(HBase..)
Druid Key/Value Stores
OLAP查询方式 支持任何维度下的指标聚合查询 聚合查询需要将所有可能的查询集合预计算并保存,需要大量的预计算和存储开销。Range scan的聚合方式由于没有针对维度和时间列进行索引,需要扫描大量的数据行,当数据量增加时,查询性能会大幅降低
  • Druid vs SQL-on-Hadoop(Impala/Drill/Spark SQL/..)
Druid SQL-on-Hadoop
查询方式 数据在每个server查询,查询结果在servers之间传输 数据从存储层到计算层,存在一定的延迟(serde time)
数据导入 支持实时数据的导入,并可以立即查询 基于HDFS的存储方式,限制了数据导入的速率
查询灵活性 Druid的查询语句偏底层,SQL的支持上存在不完善(不支持JOIN) 对SQL查询支持良好
总结

Druid最适合的场景是,对海量实时数据,从Kafka导入到Druid中,并进行OLAP查询。当然,Druid同时也支持离线数据的导入和查询,也可以达到很高的查询性能。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容