什么是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 个。

参考: 奈学教育笔记

开源OLAP引擎对比的更多相关文章

  1. 大数据OLAP引擎对比

    Presto:内存计算,mpp架构   PB级别数据 presto适合pb级的海量数据查询分析,不是说把pb的数据放进内存,比如一张pb表,查询count,vag这种有个特点,虽然数据很多,但是最终的 ...

  2. Camunda开源流程引擎快速入门——Hello World

    市场上比较有名的开源流程引擎有osworkflow.jbpm.activiti.flowable.camunda.由于jbpm.activiti.flowable这几个流程引擎出现的比较早,国内人用的 ...

  3. 六大主流开源SQL引擎

    导读 本文涵盖了6个开源领导者:Hive.Impala.Spark SQL.Drill.HAWQ 以及Presto,还加上Calcite.Kylin.Phoenix.Tajo 和Trafodion.以 ...

  4. 六大主流开源SQL引擎总结

    本文涵盖了6个开源领导者:Hive.Impala.Spark SQL.Drill.HAWQ 以及Presto,还加上Calcite.Kylin.Phoenix.Tajo 和Trafodion.以及2个 ...

  5. [转帖]OLAP引擎这么多,为什么苏宁选择用Druid?

    OLAP引擎这么多,为什么苏宁选择用Druid? 原创 51CTO 2018-12-21 11:24:12 [51CTO.com原创稿件]随着公司业务增长迅速,数据量越来越大,数据的种类也越来越丰富, ...

  6. 6大主流开源SQL引擎总结,遥遥领先的是谁?

    根据 O’Reilly 2016年数据科学薪资调查显示,SQL 是数据科学领域使用最广泛的语言.大部分项目都需要一些SQL 操作,甚至有一些只需要SQL.本文就带你来了解这些主流的开源SQL引擎!背景 ...

  7. 你需要知道的MySQL开源存储引擎TokuDB

    在四月份的Percona Live MySQL会议上, TokuDB庆祝自己成为开源存储引擎整一周年.我现在仍能记得一年前它刚创建时的官方声明与对它的期望.当时的情况非常有意思,因为它拥有帮助MySQ ...

  8. OLAP了解与OLAP引擎——Mondrian入门

    一.  OLAP的基本概念 OLAP(On-Line Analysis Processing)在线分析处理是一种共享多维信息的快速分析技术:OLAP利用多维数据库技术使用户从不同角度观察数据:OLAP ...

  9. 分布式大数据多维数据分析(olap)引擎kylin[转]

    Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay 开发并贡献至开源社区.它能在亚秒内查询巨大的Hiv ...

随机推荐

  1. 下载并破解IntelliJ IDEA(2017)

    idea的下载:https://www.jetbrains.com/idea/download/#section=windows 破解链接:http://blog.csdn.net/nn_jbrs/a ...

  2. SQL server分页的四种方法(算很全面了)

      这篇博客讲的是SQL server的分页方法,用的SQL server 2012版本.下面都用pageIndex表示页数,pageSize表示一页包含的记录.并且下面涉及到具体例子的,设定查询第2 ...

  3. jmeter简单的压力测试

    Jmeter是一个非常好用的压力测试工具.  Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测试需要的脚本写好.相比LR来说操作简单方便,关键是免费,基于JAVA开发,所以需 ...

  4. HTML+JavaScript画函数图像

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. 《Spring Boot 实战纪实》之如何攥写需求文档

    目录 前言 (思维篇)人人都是产品经理 1.需求文档 1.1 需求管理 1.2 如何攥写需求文档 1.3 需求关键点文档 2 原型设计 2.1 缺失的逻辑 2.2 让想法跃然纸上 3 开发设计文档 3 ...

  6. z-index失效原因分析——由一个bug引发的对层叠上下文和z-index属性的深度思考

    新年刚开工就被一个bug虐得整个人都不好了,特地记录下. (一)bug描述 在一个fixed-data-table(一个React组件)制作的表格中,需要给表头的字段提示的特效,所以做了一个提示层,但 ...

  7. CentOS下如何用nmon收集系统实时运行状况

    #赋予执行权限 chmod +x nmon 执行./nmon可以查看实时的系统状态有提示的,d看磁盘,n看网络,c看cpu #如果不想看实时的,想收集系统长时间运行情况然后分析,可用这个 nohup ...

  8. String、StringBUffer和StringBuilder的区别与使用

    一.区别 String是一个不可变的类,即创建String对象后,该对象中的字符串是不可变的,平时我们改变String对象中的字符串实际上是通过StringBuffer实现的,所以StringBuff ...

  9. 利用canvas阴影功能与双线技巧绘制轨道交通大屏项目效果

    利用canvas阴影功能与双线技巧绘制轨道交通大屏项目效果 前言 近日公司接到一个轨道系统的需求,需要将地铁线路及列车实时位置展示在大屏上.既然是大屏项目,那视觉效果当然是第一重点,咱们可以先来看看项 ...

  10. springsecurity实现前后端分离之jwt-资料收集

    https://www.jianshu.com/p/5b9f1f4de88d https://www.jianshu.com/p/725d32ab92f8 https://blog.csdn.net/ ...