1.Druid概念
Druid是一个快速的列式分布式的支持实时分析的数据存储系统。它在处理PB级数据、毫秒级查询、数据实时处理方面,比传统的OLAP系统有了显著的性能改进。
Druid的官方网站是http://druid.io。
注意:阿里巴巴也曾创建过一个开源项目叫作Druid(简称阿里Druid),它是一个数据库连接池的项目。阿里Druid和本文讨论的Druid没有任何关系,它们解决完全不同的问题。
2.Druid特点
3.应用场景
4.Druid对比Impala/Presto/Spark SQL/Kylin/Elasticsearch
对比项目 | Druid | Kylin | Presto | Impala | Spark SQL | ES |
---|---|---|---|---|---|---|
亚秒级响应 | Y | Y | N | N | N | N |
百亿数据集 | Y | Y | Y | Y | Y | Y |
SQL支持 | N(开发中) | Y | Y | Y | Y | N |
离线 | Y | Y | Y | Y | Y | Y |
实时 | Y | N(开发中) | N | N | N | Y |
精确去重 | N | Y | Y | Y | Y | N |
多表Join | N | Y | Y | Y | Y | N |
JDBC for BI | N | Y | Y | Y | Y | N |
1)Druid:是一个实时处理时序数据的OLAP数据库,因为它的索引首先按照时间分片,查询的时候也是按照时间线去路由索引。
2)Kylin:核心是Cube,Cube是一种预计算技术,基本思路是预先对数据作多维索引,查询时只扫描索引而不访问原始数据从而提速。
3)Presto:它没有使用MapReduce,大部分场景下比Hive快一个数量级,其中的关键是所有的处理都在内存中完成。
4)Impala:基于内存运算,速度快,支持的数据源没有Presto多。
5)Spark SQL:基于Spark平台上的一个OLAP框架,基本思路是增加机器来并行计算,从而提高查询速度。
6)ES:最大的特点是使用了倒排索引解决索引问题。根据研究,ES在数据获取和聚集用的资源比在Druid高。
7)框架选型:
(1)从超大数据的查询效率来看:
Druid > Kylin > Presto > Spark SQL
(2)从支持的数据源种类来讲:
Presto > Spark SQL > Kylin > Druid