zoukankan      html  css  js  c++  java
  • 开源OLAP引擎对比

    什么是olap

    01、绝大多数请求都是读请求

    02、数据以相当大的批次(>1000行)更新,而不是单行更新;或者它根本没有更新

    03、数据已添加到数据库,但不会进行修改

    04、对于读取,每次查询都从数据库中读取大量的行,但是同时又仅需要少量的列

    05、表格“宽”,意味着它们包含大量列

    06、查询相对较少(通常每台服务器数百个查询或每秒更少)

    07、对于简单查询,允许延迟大约50毫秒

    08、列中的数据相对较小:一般来说,都是数字和短字符串(例如,每个URL 60个字节)

    09、处理单个查询时需要高吞吐量(每个服务器每秒最多数十亿行)

    10、Transactions不是必需的

    11、对数据一致性要求低

    12、每个查询有一个大表。所有其他表都很小,除了这个大表

    13、查询结果明显小于源数据。换句话说,数据被过滤或聚合后能够被盛放在单台服务器的内存中

    mysql: 少量结构化数据的针对单条记录的增删改查
    hbase: 针对海量数据的key-value增删改查 
    redis: 基于内存的针对key-value类型的增删改查,热数据的缓存
    mongodb: 文档数据库 elasticsearch: 针对文件做全文检索的(倒排索引)
    clickhouse: 针对海量数据的大量行少量列的聚合查询分析的请求
    
    • Druid:由广告公司 MetaMarkets 开源的实时大数据分析引擎,2011 年创建,并于 2012 年开源。主要用于大规模事件流数据(Event Stream Data)的存储和分析。Druid 被阿里、小米、网易、优酷、微博等公司广泛应用。
    • Presto:Facebook 2013 年开源的 OLAP 工具。Airbnb 和 Dropbox、京东、有赞、微博等公司使用该工具。
    • Clickhouse:第一大搜索引擎 Yandex 开发的列式储存数据库。 ClickHouse 比 Vertica 约快5倍,比 Hive 快 279 倍。比 My SQL 快 801 倍。字节跳动、阿里、微博......几乎所有主流互联网公司,都会使用到 ClickHouse。

    Druid

    优点

    1. Druid 支持实时数据摄入,且可以立即查询;
    2. 类似其他 OLAP 工具,摄入数据时先预计算,以节省数据存储量级;
    3. 列式存储。区别传统行式存储,每次查询要加载整个表,列式存储只需加载指定列数据,大大提升性能。由于列式存储这个优势,目前主流 OLAP 都采用列式存储;
    4. 水平扩展。可部署到几十甚至几百台集群,支持万亿条记录查询。

    缺点

    1. 查询中涉及多个大表之间 join,即:Druid对表关联操作支持很有限。
    2. 数据查询对延时要求不高,但对用户某具体行为颗粒度的场景分析。因为预计算会损失用户行为的个性化信息,所以这种情况是不容许进行预计算操作的。

    Presto

    1. 快!Presto 最大的特点是快,它的设计初衷是解决快速查询大数据问题,期望查询时间是在几秒或者几分钟,因此速度是 Hive 的 10 倍以上;
    2. Presto 可以查询完全基于内存计算的分布式 SQL 查询引擎。所有查询、计算都可以在内存中进行;
    3. Presto 可以接入数据源,包括 Hive、Kafaka、MySQL、Redis 等;
    4. Presto 为标准 SQL,支持复杂 SQL 查询。

    缺点

    1. 我们知道 Presto 运算时是将查询任务拆分到多个 Worker 机器上去分别进行内存运算。其中哪怕一个 Worker 由于各式各样的原因挂掉(比如内存溢出等),整个 Presto 查询任务就会失败。相比较而言,Hive 的容错性能就要好很多。一台机器挂掉或者被其他计算任务抢占,计算也并不会因此失败。它会重新向 Master 申请资源,继续计算。
    2. Presto 属于纯内存计算,不适合大表之间的多表 join 操作。否则容易引起内存溢出 OOM,造成查询任务失败。
    3. Presto 采用 MPP(Massively Parallel Processing:大规模并行处理)架构,本身 MPP 架构使用场景就是秒级、毫秒级的查询场景,速度很快。但 MPP 有个明显缺点,即短板效应。如果一个 Worker 节点计算慢于其他节点,那整个计算任务都会受限于该节点。在实际工作中,Presto 接入的很可能就是 HDFS 数据源,不同节点的数据不一定分布均匀,这使得不同 Worker 干活效率不一样。而 Hive、Spark 等采用的批处理系统则会避免这一点。

    ClickHouse

    1. 提供极致的查询性能。比传统数据处理引擎快 100~1000 倍,数据吞吐能力高达50MB~200MB/s。使用体验非常好。
    2. 大数据的极低存储成本。ClickHouse 针对 OLAP 场景,开发高效列式存储、数据压缩算法,可以将原数据压缩 10 倍,极大提高单机数据存储和计算能力。可以简单理解为,原来一台机器存储 1TB 原始日志,而采用 ClickHouse 可以存储 10TB 原始日志。
    3. 支持 SQL 查询,并同时支持 join 等复杂计算逻辑。ClickHouse 之所以能拥有极致的计算性能,即使简单的查询,ClickHouse 也会使用服务器一半的 CPU 去执行,所以其充分利用了机器的计算资源,并实现单机多核并行计算、集群分布式计算、列存储且列计算等。

    缺点

    1. 不支持事务操作,即数据的删除、更新。
    2. 不支持高并发,建议 QPS 为 100。即每秒查询操作不要超过 100 个。

    参考: 奈学教育笔记

  • 相关阅读:
    上下文有关文法
    sqlserver cte 速度慢
    hibernate tools eclipse 安装
    sts java nullpointer exception
    Oracle RAC集群体系结构
    bean scope scoped-proxy
    hibernate persist不能插入到表中
    system.out 汉字乱码
    NoSQL数据库(转)
    在PowerShell中获取本地的RAM信息(容量)
  • 原文地址:https://www.cnblogs.com/weijiqian/p/13994863.html
Copyright © 2011-2022 走看看