常见OLAP对比

Olap(On-line Analytical Processing,联机分析处理):是在基于数据仓库多维模型的基础上实现的面向分析的各类操作的集合。可以比较下其与传统的OLTP(On-line Transaction Processing,联机事务处理)的区别来看一下它的特点:

OLAP的优势是基于数据仓库面向主题、集成的、保留历史及不可变更的数据存储,以及多维模型多视角多层次的数据组织形式。

常见的OLAP介绍:

Hive、SparkSql、FlinkSql、ClickHouse、ES、Druid、Kylin、Impala、Doris。

以上列举的引擎各有优缺点,需要根据自己的实际需求进行选择。

Hive:

Hive是一个分布式SQL on Hadoop方案,底层依赖MapReduce计算模型执行分布式计算。Hive擅长执行长时间运行的离线批处理,数据量越大,优势越明显。Hive在数据量大、数据驱动需求强烈的互联网大厂比较流行。近2年,随着clickhouse的逐渐流行,对于一些总数据量不超过百PB级别的互联网数据仓库需求,已经有多家公司改为了clickhouse的方案。clickhouse的优势是单个查询执行速度更快,不依赖hadoop,架构和运维更简单。

SparkSql和FlinkSql:

在大部分场景下,Hive计算还是太慢了,别说不能满足那些要求高QPS、低查询延迟的的对外在线服务的需求,就连企业内部的产品、运营、数据分析师也会经常抱怨Hive执行ad-hoc查询太慢。这些痛点,推动了MPP内存迭代和DAG计算模型的诞生和发展,诸如Spark SQL、Flink SQL、Presto这些技术,目前在企业中也非常流行。Spark SQL、Flink SQL的执行速度更快,编程API丰富,同时支持流式计算与批处理,并且有流批统一的趋势,使大数据应用更简单。(QPS低)

Clickhouse:

ClickHouse部署架构简单,易用,不依赖Hadoop体系(HDFS+YARN)。它比较擅长的地方是对一个大数据量的单表进行聚合查询。Clickhouse用C++实现,底层实现具备向量化执行(Vectorized Execution)、减枝等优化能力,具备强劲的查询性能。目前在互联网企业均有广泛使用,比较适合内部BI报表型应用,可以提供低延迟(ms级别)的响应速度,也就是说单个查询非常快。但是Clickhouse也有它的局限性,在OLAP技术选型的时候,应该避免把它作为多表关联查询(JOIN)的引擎,也应该避免把它用在期望支撑高并发数据查询的场景,OLAP分析场景中,一般认为QPS达到1000+就算高并发,而不是像电商、抢红包等业务场景中,10W以上才算高并发,毕竟数据分析场景,数据海量,计算复杂,QPS能够达到1000已经非常不容易。例如Clickhouse,如果如数据量是TB级别,聚合计算稍复杂一点,单集群QPS一般达到100已经很困难了,所以它更适合企业内部BI报表应用,而不适合如数十万的广告主报表或者数百万的淘宝店主相关报表应用。Clickhouse的执行模型决定了它会尽全力来执行一个Query,而不是同时执行很多Query。

ES:

用Elasticsearch作为OLAP引擎,有几项优势:(1)擅长高QPS(QPS > 1K)、低延迟、过滤条件多、查询模式简单(如点查、简单聚合)的查询场景。(2)集群自动化管理能力(shard allocation,recovery)能力非常强。集群、索引管理和查看的API非常丰富。

用Elasticsearch作为OLAP引擎,有几项劣势:多维度分组排序、分页。不支持Join。在做aggregation后,由于返回的数据嵌套层次太多,数据量会过于膨胀。

Impala:

Impala 是 Cloudera 在受到 Google 的 Dremel 启发下开发的实时交互SQL大数据查询工具,是CDH 平台首选的 PB 级大数据实时查询分析引擎。它拥有和Hadoop一样的可扩展性、它提供了类SQL(类Hsql)语法,在多用户场景下也能拥有较高的响应速度和吞吐量。它是由Java和C++实现的,Java提供的查询交互的接口和实现,C++实现了查询引擎部分,除此之外,Impala还能够共享Hive Metastore,甚至可以直接使用Hive的JDBC jar和beeline等直接对Impala进行查询、支持丰富的数据存储格式(Parquet、Avro等)。此外,Impala 没有再使用缓慢的 Hive+MapReduce 批处理,而是通过使用与商用并行关系数据库中类似的分布式查询引擎(由 Query Planner、Query Coordinator 和 Query Exec Engine 三部分组成),可以直接从 HDFS 或 HBase 中用 SELECT、JOIN 和统计函数查询数据,从而大大降低了延迟。Impala经常搭配存储引擎Kudu一起提供服务,这么做最大的优势是点查比较快,并且支持数据的Update和Delete。

Doris:

现代化MPP架构

支持大规模数据集、集群灵活扩展

支持高并发小查询

强悍的SQL执行引擎、全新的预聚合技术

支持亚秒级OLAP多维分析

现代化MPP架构

一支持大规模数据集、集群灵活扩展一支持高并发小查询

强悍的SQL执行引擎、全新的预聚合技术一支持亚秒级OLAP多维分析

支持高效快速的多表关联分析

基于LSM的列式存储引擎、MVCC事务隔离机制

支持数据高效的实时导入

支持数据批量、实时更新

Druid:

Druid 是一种能对历史和实时数据提供亚秒级别的查询的数据存储。Druid 支持低延时的数据摄取,灵活的数据探索分析,高性能的数据聚合,简便的水平扩展。Druid支持更大的数据规模,具备一定的预聚合能力,通过倒排索引和位图索引进一步优化查询性能,在广告分析场景、监控报警等时序类应用均有广泛使用。

  • Druid实时的数据消费,真正做到数据摄入实时、查询结果实时
  • Druid支持 PB 级数据、千亿级事件快速处理,支持每秒数千查询并发
  • Druid的核心是时间序列,把数据按照时间序列分批存储,十分适合用于对按时间进行统计分析的场景
  • Druid把数据列分为三类:时间戳、维度列、指标列
  • Druid不支持多表连接
  • Druid中的数据一般是使用其他计算框架(Spark等)预计算好的低层次统计数据
  • Druid不适合用于处理透视维度复杂多变的查询场景
  • Druid擅长的查询类型比较单一,一些常用的SQL(groupby 等)语句在druid里运行速度一般
  • Druid支持低延时的数据插入、更新,但是比hbase、传统数据库要慢很多

与其他的时序数据库类似,Druid在查询条件命中大量数据情况下可能会有性能问题,而且排序、聚合等能力普遍不太好,灵活性和扩展性不够,比如缺乏Join、子查询等。

Kylin:

Kylin自身就是一个MOLAP系统,多维立方体(MOLAP Cube)的设计使得用户能够在Kylin里为百亿以上数据集定义数据模型并构建立方体进行数据的预聚合。

适合Kylin的场景包括:

  • 用户数据存在于Hadoop HDFS中,利用Hive将HDFS文件数据以关系数据方式存取,数据量巨大,在500G以上
  • 每天有数G甚至数十G的数据增量导入
  • 有10个以内较为固定的分析维度

简单来说,Kylin中数据立方的思想就是以空间换时间,通过定义一系列的纬度,对每个纬度的组合进行预先计算并存储。有N个纬度,就会有2的N次种组合。所以最好控制好纬度的数量,因为存储量会随着纬度的增加爆炸式的增长,产生灾难性后果。

Hive

Spark/FlinkSQL

ClickHouse

Impala

Kylin

Doris

Druid

ES

延迟

分钟

明细查询较低,单表查询性能

高,Join在一些情况下性能不佳

物化视图查询延迟非常低

亚秒

毫秒

亚秒

SQL

较完善

较完善

有限

有限

有限

较完善

较完善

有限

发展定位

Mpp

On hadoop

mpp

明细动态聚合查询 物化视图

Mpp

On hadoop

完全预聚合立方体

MPP

整合Google Mesa(数据模型),Apache Impala(MPPQuery Engine) 和 Apache ORCFile (存储格式,编码和压缩) 的技术

 位图索引查询、编码。预聚合技术,但是只聚合最细的维度组合,在此基础进行聚合

主要是搜索引擎

Join

支持

支持

部分支持

支持

支持

支持

不成熟

不支持

优点

可靠性高

较hive快

单表性能极佳

多表关联性能不错

超大数据集

使用成本低

超大数据集

QPS高

缺点

性能不突出

多表关联性能不佳,使用成本高

占内存

灵活性差,数据膨胀

单表性能较CK差

不适合复杂查询

不适合关联查询

 参考:实际应用中如果作为报表工具,如果依赖hadoop,对时间敏感可选择impala,kylin等,如果对时间不敏感可选择spark,hive等。如果不依赖hadoop,可从clickhouse和doris中进行选择,clickhouse相对来说功能更强大,对应的也是运维和开发成本高,单机性能更优秀,但性能较依赖服务器的核数,且与单台服务器的内存有关;doris与clickhouse对比,单表性能ck更好,多表或者复杂的sql场景,diris性能更好,doris使用和运维成本低,与MySQL协议兼容,支持直接使用MySQL客户端连接,非常易用的数据应用对接。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/351898.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言第十弹---函数(上)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 函数 1、函数的概念 2、库函数 2.1、标准库和头文件 2.2、库函数的使用方法 2.2.1、功能 2.2.2、头文件包含 2.2.3、实践 2.2.4、库函数文档的⼀般格式 …

Unity中URP下额外灯的距离衰减

文章目录 前言一、额外灯的距离衰减二、DistanceAttenuation函数的传入参数1、distanceSqr2、distanceAndSpotAttenuation3、_AdditionalLightsAttenuation4、GetPunctualLightDistanceAttenuation函数三、DistanceAttenuation函数的程序体 前言 在上一篇文章中,我…

组件冲突、data函数、组件通信

文章目录 1.组件的三大组成部分 - 注意点说明2.组件的样式冲突(用 scoped 解决)3.data是一个函数4.组件通信1.什么是组件通信?2.不同的组件关系 和 组件通信方案分类 5.prop详解prop 校验①类型校验②完整写法(类型,非…

计算机毕业设计 | SSM 凌云招聘平台(附源码)

1,绪论 人力资源是企业产生效益、创造利润的必不可少的、最重要的资源。人作为人力资源的个体可看作是一个承载着有效知识、能力的信息单元。这样的信息单元可看作是一个为企业产生价值和利润的个体。从而使得这样的信息单元所具有的信息就是一个有价值的信息。 校…

什么是SQL,什么是MYSQL?MYSQL的架构以及SQL执行语句的过程是什么?有哪些数据库的类型?一篇文章带你弄懂!

文章目录 前言一、为什么需要数据库二、数据库的相关概念1.什么是结构化查询语言 (SQL)2.什么是数据库管理系统 (DBMS)3.什么是 MySQL 数据库 三、数据库分类1.关系型数据库(SQL)2.非关系型数据库(NoSQL) 四、MYSQL架构1.各组件功…

初识MQRabbitMQ快速入门

一、同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。 异步通讯:就像发邮件,不需要马上回复。 两种方式各有优劣,打电话可以立即得到响应,但是你却不能…

「JavaSE」类和对象4

类和对象4 🍉内部类🍌实例内部类🍌静态内部类🍌局部内部类🍌匿名内部类 🍉总结 🍉内部类 在 Java 中,我们可以将一个类定义在另一个类或者一个方法的内部,前者称为内部类…

IS-IS:04 DIS

IS-IS 协议只支持两种网络类型,即广播网络和点到点网络。与 OSPF 协议相同, IS-IS 协议在广播网络中会将网络视为一个伪节点 ( Pesudonde,简称 PSN),并选举出一台DIS (Designated IS&#xff09…

探索Pyecharts之美-绘制多彩旭日图的艺术与技巧【第37篇—python:旭日图】

文章目录 引言准备工作绘制基本旭日图调整颜色和样式添加交互功能定制标签和标签格式嵌套层级数据高级样式与自定义进阶主题:动态旭日图数据源扩展:外部JSON文件总结 引言 数据可视化在现代编程中扮演着重要的角色,而Pyecharts是Python中一个…

Tomcat怎么优化

目录 性能方面的优化: 安全方面的优化: 引言:面试官问到的Tomcat怎么优化,这两个方面直接得到他认可!! 性能方面的优化: 内存优化:-Xms java虚拟机初始化时的最小内存、-Xmx java虚…

操作系统的引入

操作系统 【1】什么是操作系统 操作系统是一种管理的计算机硬件的软件资源的程序。它充当了计算机系统和应用程序之间的接口。使得计算机用户能够地使用计算机系统来完成各种任务。操作系统是负责管理和分配计算机的处理器、内存、硬盘等等硬件资源,同时也提供一些…

Vue3在css中使用v-bind绑定js/ts变量,也可以在scss和less中使用方式

主要介绍Vue3中的新增的v-bind()的常用使用方式,主要包括在css,less,scss中的使用,可以参考官方文档查看:Vue3官方文档 特别提醒 如果你想在scss中或者less中使用,可能会报各种乱七八糟的错误,最快最好用的方式就是单…

Android P 背光机制流程分析

在android 9.0中,相比android 8.1而言,背光部分逻辑有较大的调整,这里就对android P背光机制进行完整的分析。 1.手动调节亮度 1.1.在SystemUI、Settings中手动调节 在界面(SystemUI)和Settings中拖动进度条调节亮度时,调节入口…

[docker] Docker的私有仓库部署——Harbor

一、Docker原生私有仓库—— Registry 1.1 Registry的简单了解 关于Docker的仓库分为私有库和公有仓库,共有仓库只要在官方注册用户,登录即可使用。但对于仓库的使用,企业还是会有自己的专属镜像,所以私有库的搭建也是很有必要的…

那些年与指针的爱恨情仇(一)---- 指针本质及其相关性质用法

关注小庄 顿顿解馋 (≧∇≦) 引言: 小伙伴们在学习c语言过程中是否因为指针而困扰,指针简直就像是小说女主,它逃咱追,我们插翅难飞…本篇文章让博主为你打理打理指针这个傲娇鬼吧~ 本节我们将认识到指针本质,何为指针和…

将Html页面转换为Wordpress页面

问题:我们经常会从html源码下载网站上获得我们想要的网站内容框架,以及部分诸如联系我们,About 等内页,但是在文章的发布上,则远不如Wordpress简便。而Wordpress尽管有各种模板,但修改又比较麻烦。解决方法…

day34WEB 攻防-通用漏洞文件上传黑白盒审计逻辑中间件外部引用

目录 一,白盒审计-Finecms-代码常规-处理逻辑 黑盒思路:寻找上传点抓包修改突破获取状态码及地址 审计流程:功能点-代码文件-代码块-抓包调试-验证测试 二,白盒审计-CuppaCms-中间件-.htaccess 三,白盒审计-Metin…

CVE-2024-23897 Jenkins 任意文件读取漏洞

项目介绍 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。Jenkins是开源CI&CD软件领导者, 提供超过1000个插…

guhub访问

问题 访问不了guhub 解决过程 可以正常访问了 总结 此方法参考微软官方的方法,修改dns服务器网址,由原本的自动分配改为指定微软dns服务器网址

深度强化学习(王树森)笔记02

深度强化学习(DRL) 本文是学习笔记,如有侵权,请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接:https://github.com/wangshusen/DRL 源代码链接:https://github.c…