数据仓库的对比和选择

整理了一些相关的产品,包括:java

商业系统sql

  • InfoBright
  • Greenplum(已开源)、HP Vertica、TeraData、Palo、ExaData、RedShift、BigQuery(Dremel)

开源实现数据库

  • Impala、Presto、Spark SQL、Drill、Hawq
  • Druid、Pinot
  • Kylin

presto、druid、sparkSQL、kylin的对比segmentfault

  • presto和spark sql都是解决分布式查询问题,提供SQL查询能力,但数据加载不必定能保证明时;
  • Druid是保证数据实时写入,但查询上不支持SQL,或者说目前只支持部分SQL,我我的以为适合用于工业大数据,好比一堆传感器实时写数据的场景;
  • Kylin是MOLAP,就是将数据先进行预聚合,而后把多维查询变成了key-value查询。基本思路是预先对数据做多维索引,查询时只扫描索引而不访问原始数据从而提速;

  presto:facebook开源的一个java写的分布式数据查询框架,原生集成了Hive、Hbase和关系型数据库,Presto背后所使用的执行模式与Hive有根本的不一样,它没有使用MapReduce,大部分场景下比hive快一个数量级,其中的关键是全部的处理都在内存中完成。
  Druid:是一个实时处理时序数据的Olap数据库,由于它的索引首先按照时间分片,查询的时候也是按照时间线去路由索引。
  spark SQL:基于spark平台上的一个olap框架,本质上也是基于DAG的MPP, 基本思路是增长机器来并行计算,从而提升查询速度。
  kylin:核心是Cube,cube是一种预计算技术,基本思路是预先对数据做多维索引,查询时只扫描索引而不访问原始数据从而提速。框架

这几种框架各有优缺点,存在就是合理,如何选型我的见解以下:
从成熟度来说:kylin > spark sql > Druid > presto
从超大数据的查询效率来看:Druid > kylin > presto > spark sql
从支持的数据源种类来说:presto > spark sql > kylin > Druid分布式

大数据查询目前来说能够大致分为三类:学习

  1. 基于hbase预聚合的。适合相对固定的业务报表类需求。须要指定预聚合的指标,在数据接入的时候根据指定的指标进行聚合运算,只须要统计少许维度便可知足业务报表需求。好比Opentsdb,Kylin,Druid等
  2. 基于Parquet列式存储的,基本是彻底基于内存的并行计算,Parquet系能下降存储空间,提升IO效率,以离线处理为主,很难提升数据写的实时性,超大表的join支持可能不够好。spark sql也算相似,但它在内存不足时能够spill disk来支持超大数据查询和join。好比Presto, Drill,Impala等
  3. 基于lucene外部索引的,好比ElasticSearch和Solr,可以知足的的查询场景远多于传统的数据库存储,但对于日志、行为类时序数据,全部的搜索请求都也必须搜索全部的分片,另外,对于聚合分析场景的支持也是软肋



欢迎订阅「K叔区块链」 - 专一于区块链技术学习

博客地址: http://www.jouypub.com
简书主页: https://www.jianshu.com/u/756c9c8ae984
segmentfault主页: https://segmentfault.com/blog/jouypub
腾讯云主页: https://cloud.tencent.com/developer/column/72548
相关文章
相关标签/搜索