一文读懂OLAP

1、什么是OLAP

OLAP(On-line Analytical Processing,联机分析处理)是一种用于分析和查询大规模数据集的计算机处理技术。OLAP技术主要用于多维数据分析数据挖掘,通过提供多维数据模型和多维查询功能,帮助用户从不同角度和层次上对数据进行分析和查询,侧重分析决策

  • BI模块

数据可视化组件。为用户提供拖拽式的数据分析操作页面,以及各种报表、图表的展示。本质上它就类似一个客户端,通过配置连接到各种OLAP引擎上(可以直白的理解为各种DB)来完成数据的分析和查询。通常一种BI组件都支持若干种OLAP引擎,比如superset可以连接clickhouse、druid、mysql等。

  • OLAP引擎

大数据存储引擎。可以直白的理解为就是存储数据的地方,但是不同引擎的存储数据原理、支持数据量级、查询性能、适用场景等都有很大区别。引擎的选择也决定着底层数仓的建设选型,比如你选择了clickhouse,那数仓最终也一定是基于clickhouse的建表原则去建若干ck表。

  • 数据仓库

数据建设。初级的理解就是建表,将业务数据、日志数据、消息队列数据等,通过各种调度任务写入到表里供OLAP引擎使用。但要想建好数仓也是一个复杂、庞大的工程,比如要考虑:数据清洗、数据建模(星型模型、雪花模型、宽表模型、主题、维度、指标)、数据时效性(实时、T+1)、延迟容错、机器资源等。

1.1、常见操作

上卷(Roll Up)/聚合:选定某些维度,根据这些维度来聚合事实,如果用SQL来表达就是select dim_a, aggs_func(fact_b) from fact_table group by dim_a.
e.g. 风控场景:点赞场景,决策REJECT,UV多少

下钻(Drill Down):上卷和下钻是相反的操作。它是选定某些维度,将这些维度拆解出小的维度(如年拆解为月,省份拆解为城市),之后聚合事实。
e.g. 风控场景:点赞场景,命中规则A,决策REJECT,UV多少

切片(Slicing、Dicing):选定某些维度,并根据特定值过滤这些维度的值,将原来的大Cube切成小cube。如dim_a in ('CN', 'USA')
e.g. 风控场景:点赞场景,命中规则A、规则B,规则C,决策REJECT,UV是多少

旋转(Pivot/Rotate):维度位置的互换

1.2、OLAP分类

a. Relational OLAP
ROLAP提倡存储明细数据,适用于查询模式不固定,查询灵活性较高的场景。ROLAP的代表:Clickhosue、Presto、Doris、Hive、SpartSQL、FlinkSQL、Impala、GreenPlum等。
优势:ROLAP收到Query请求时,会先解析Query,生成执行计划,扫描数据,执行关系型算子,在原始数据上做过滤(Where)、聚合(Sum, Avg, Count)、关联(Join),分组(Group By)、排序(Order By)等,最后将结算结果返回给用户,整个过程都是即时计算,没有预先聚合好的数据可供优化查询速度,拼的都是资源和算力的大小。
ROLAP不需要进行预聚合,因此查询的灵活性、可扩展性更好。
使用成本低,与关系型数据库一脉相承,”群众基础“好。
劣势:当数据量较大(时间跨度大)、查询较复杂(多表join)时,查询性能较差,因为所有的计算都是即时触发(没有预处理),会消耗更多的计算资源。

b. Multi-dimensional OLAP
MOLAP提倡存储预聚合数据,适用于查询模式固定并且对查询性能要求较高的场景。MOLAP的代表主要有Druid、Kylin。MOLAP一般会根据用户事先定义的数据维度、指标在数据写入时就计算好预聚合数据,这样在Qeury到来时,直接查预聚合数据即可,无需基于明细数据实时计算,性能提升明显。
优势:查询性能极好:数据写入时即完成了预聚合,避免了查询过程中的大量计算,极大提升查询性能。
劣势:灵活性较差:因为预先定义了聚合维度和指标,所以只能用于较固定的查询模式,不支持明细查询。
存储成本较高:不同维度、指标的预聚合会产生冗余数据,增大存储成本。

c. Hybrid OLAP
HOLAP即混合OLAP,是MOLAP和ROLAP的一种融合,兼顾查询性能与灵活性。当查询固定模式的聚合数据时使用MOLAP技术,当查询明细数据或较灵活场景使用ROLAP技术。
优势:兼顾查询性能、灵活性、存储空间
劣势:系统结构复杂:要同时支持ROLAP和MOLAP,BI组件、OLAP引擎、数仓建设都要做好融合,尤其是底层数据的建模也比较复杂。
适用场景少:与其提高系统复杂度,很多用户宁愿选择拆分为两类(ROLAP和MOLAP)单独实现,使用HOLAP的场景较少。

d. Other
除此之外,还包含一些其他分类,包括启用Web的OLAP(WOLAP),桌面OLAP(DOLAP),移动OLAP(MOLAP)和空间OLAP(SOLAP)。但总体上不太流行,故此不再进行介绍。

1.3、与OLTP的关系

a. 什么是OLTP
OLTP(OnLine Transaction Processsing 联机事务处理)是与功能、业务强相关的事务查询系统,要保证高并发场景下低时延的查询和处理效率。举例来说:我们日常买火车票的12306系统,包括用户注册、登录、购票等功能,每次的注册、登录都涉及跟DB打交道,insert或者update,而每一次这样的操作都是一次OLTP。

b. OLAP v.s. OLTP

2、OLAP主流框架对比

2.1、Clickhouse

ClickHouse由俄罗斯第一大搜索引擎Yandex于2016年6月发布,开发语言为C++,是一个面向联机分析处理(OLAP)的开源的面向列式存储的DBMS,简称CK,与Hadoop、Spark这些巨无霸组件相比,ClickHouse很轻量级,查询性能非常好。目前国内社区火热,各个大厂纷纷跟进大规模使用。

最快开源OLAP引擎!ClickHouse在头条的技术演进
Clickhouse 在腾讯的应用实践
Clickhouse 在快手的大规模应用与架构改进
每天十亿级数据更新,秒出查询结果,ClickHouse 在携程酒店的应用

ClickHouse从OLAP场景需求出发,定制开发了一套全新的高效列式存储引擎,并且实现了数据有序存储、主键索引、稀疏索引、数据Sharding、向量执行、剪枝优化、主备复制等丰富功能。以上功能共同为ClickHouse极速的分析性能奠定了基础。

2.2、Presto

Presto 是 Facebook 推出分布式SQL交互式查询引擎,采用MPP架构,完全基于内存的并行计算。Presto比Hive快的原因就在于不在落盘,而是全内存操作。Presto在支持的SQL计算上更加通用,更适合ad-hoc查询场景,然而这些通用系统往往比专用系统更难做性能优化,所以不太适合做对查询QPS(参考值QPS > 1000)、延迟要求比较高(参考值search latency < 500ms)的在线服务,更适合做公司内部的查询服务和加速Hive查询的服务。

2.3、Doris/StarRocks

Doris是由百度开源的一款MPP数据库,实现了MySQL协议,集成Google Mesa 和Apache Impala 的技术。DorisDB是基于 Apache Doris 做的闭源商业化产品,后该产品又基于Elastic License 2.0开源并更名为StarRocks。

Apache Doris声明: ApacheDoris:你们想知道的 一切,都在这里了
tarRocks回应: 关于StarRocks相关疑问的解答

2.4、Spark SQL

Spark是UC Berkeley AMP lab开源的类MapReduce的通用的并行计算框架。SparkSQL 是 Spark 处理结构化数据的模块。本质上也是基于 DAG (有向无环图,Directed Acyclic Graph的缩写,常用于建模) 的 MPP。

2.5、Kylin

Kylin 是2014年由 eBay 中国研发中心开源的OLAP引擎,提供 Hadoop/Spark 之上的 SQL 查询接口及多维分析能力以支持超大规模数据,它能在亚秒内查询巨大的Hive表。其核心技术点在于预计算和Cube(立方体模型)的设置:首先, 对需要分析的数据进行建模,框定需要分析的维度字段;然后通过预处理的形式,对各种维度进行组合并事先聚合;最后,将聚合结果以某种索引或者缓存的形式保存起来(通常只保留聚合后的结果,不存储明细数据)。这样一来,在随后的查询过程中,就可以直接利用结果返回数据。

2.6、Druid

Druid是由广告公司 MetaMarkets 于2012年开源的实时大数据分析引擎。Druid 作为MOLAP引擎,也是对数据进行预聚合。只不过预聚合的方式与Kylin不同,Kylin是Cube化,Druid的预聚合方式只是全维度进行Group-by,相当于是Kylin Cube 的 base cuboid。Druid 支持低延时的数据摄取,灵活的数据探索分析,高性能的数据聚合,简便的水平扩展。Druid支持更大的数据规模,具备一定的预聚合能力,通过倒排索引和位图索引进一步优化查询性能,在广告分析场景、监控报警等时序类应用均有广泛使用

关于Kylin和Druid的对比

3、如何进行技术选型


关于OLAP的数仓建设,那将是另一个话题了……


附:关于MPP、Map Reduce、MPPDB
MPP (Massively Parallel Processing)、MapReduce 和 MPPDB(Massively Parallel Processing Database)是三个不同的概念和技术,三者定义如下:

MPP(Massively Parallel Processing):MPP是一种并行计算架构,用于处理大规模数据。MPP系统将数据分割成多个分片,每个分片由独立的计算节点处理。每个节点负责处理自己的数据分片,然后将结果合并。这种并行计算架构可以提高数据处理的速度和效率。

MapReduce:MapReduce是一种编程模型和分布式计算框架,用于处理大规模数据集。它由两个主要阶段组成:Map阶段和Reduce阶段。在Map阶段,数据被分割成多个小块,每个小块由独立的计算节点进行处理,并生成中间结果。在Reduce阶段,中间结果被合并和聚合,生成最终的结果。MapReduce适用于批量处理大规模数据,如日志分析、离线数据处理等。

MPPDB(Massively Parallel Processing Database):MPPDB是一种基于MPP架构的分布式数据库系统。它将数据分割成多个分片存储在不同的节点上,并利用并行计算能力进行查询和分析。MPPDB具有高度可扩展性和并行处理能力,可以处理大规模数据集,并提供高性能的查询和分析功能。

三者区别如下:
MPP是一种并行计算架构,而MapReduce是一种编程模型和分布式计算框架。
MapReduce适用于批量处理大规模数据,而MPPDB是一种分布式数据库系统,适用于实时查询和分析大规模数据。

MPPDB基于MPP架构,具有高度可扩展性和并行处理能力,而MapReduce可以在各种分布式计算框架中实现,如Hadoop。 MPPDB提供高性能的查询和分析功能,而MapReduce更适用于离线数据处理和复杂计算任务。

总的来说,MPP是一种并行计算架构,MapReduce是一种编程模型和分布式计算框架,而MPPDB是一种基于MPP架构的分布式数据库系统。它们在处理大规模数据和分布式计算方面有各自的原理和应用场景。


参考资料:
[1]. 技术争鸣——关于OLAP引擎你所需要知道的一切
[2]. 史上最全OLAP对比
[3]. 什么是OLTP、OLAP、数据库和数据仓库
[4]. mapreduce vs mpp 并行数据库
[5]. 数据仓库系列4-维度表

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OLAP(联机分析处理)。 什么是联机分析处理(OLAP) 联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的,他同时提出了关于OLAP的12条准则。 OLAP的提出引起了很大的反响,OLAP作为一类产品同联机事务处理 (OLTP) 明显区分开来。 当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP (On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。 OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。 下表列出了OLTP与OLAP之间的比较。 OLTPOLAP用户操作人员,低层管理人员决策人员,高级管理人员功能日常操作处理分析决策DB 设计面向应用面向主题数据当前的, 最新的细节的, 二维的分立的历史的, 聚集的, 多维的集成的, 统一的存取读/写数十条记录读上百万条记录工作单位简单的事务复杂的查询用户数上千个上百个DB 大小100MB-GB100GB-TB OLAP是使分析人员、管理人员或执行人员能够从多角度对信息进行快速、一致、交互地存取,从而获得对数据的更深入了解的一类软件技术。 OLAP的目标是满足决策支持或者满足在多维环境下特定的查询和报表需求,它的技术核心是"维"这个概念。 “维”是人们观察客观世界的角度,是一种高层次的类型划分。“维”一般包含着层次关系,这种层次关系有时会相当复杂。通过把一个实体的多 项重要的属性定义为多个维(dimension),使用户能对不同维上的数据进行比较。因此OLAP也可以说是多维数据分析工具的集合。 OLAP的基本多维分析操作有钻取(roll up和drill down)、切片(slice)和切块(dice)、以及旋转(pivot)、drill across、drill through等。 ·钻取是改变维的层次,变换分析的粒度。它包括向上钻取(roll up)和向下钻取(drill down)。roll up是在某一维上将低层次的细节数据 概括到高层次的汇总数据,或者减少维数;而drill down则相反,它从汇总数据深入到细节数据进行观察或增加新维。 ·切片和切块是在一部分维上选定值后,关心度量数据在剩余维上的分布。如果剩余的维只有两个,则是切片;如果有三个,则是切块。 ·旋转是变换维的方向,即在表格中重新安排维的放置(例如行列互换)。 OLAP有多种实现方法,根据存储数据的方式不同可以分为ROLAP、MOLAP、HOLAP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值