pop6 's Notes
1
Toggle navigation
pop6 's Notes
主页
About Me
归档
标签
OLAP笔记
2021-02-23 11:51:38
548
0
0
pop6
> 参考: > * [WHAT IS THE DEFINITION OF OLAP?](https://olap.com/olap-definition/) * [TYPES OF OLAP SYSTEMS](https://olap.com/types-of-olap-systems/) * [数据立方体与OLAP](http://webdataanalysis.net/web-data-warehouse/data-cube-and-olap/) * [OLAP分类的基本概念和基本操作](https://blog.csdn.net/chen517611641/article/details/78851515?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.nonecase) * [数据仓库介绍 1 -- Cube(立方体)、Dimension(维度)、Hierarchy(层次)、Level(级)](http://blog.sina.com.cn/s/blog_51f45d410102xocs.html) * [Wiki:OLAP cube](https://en.wikipedia.org/wiki/OLAP_cube) # 什么是OLAP OLAP即 Online Analytical Processing(在线分析处理)是一种数据处理技术,主要**面向多维度的数据分析**,广泛的应用于`DW、BI`等领域。 # OLAP的意义 所有企业都使用许多不同的业务系统来收集数据,在大数据时代,企业要基于这些大量的数据提取出准确、可靠、有效的的信息,从而做出决策产生商业价值,而OLAP就提供了快速分析多维数据的能力,因此**可以理解OLAP的意义就是帮助企业决策者为公司做出更快、更好的决策。** # 多维数据集 - Cube 多维度并不是表字段的维度,而是从`数据分析的维度`,是**考虑问题时的一类属性,属性集合构成一个维(时间维、地理维等)**。例如一个商品销售表可以分为商品维度、销售维度、地域维度、时间维度、用户维度等。 OLAP专注于多维数据的分析,在OLAP中多维数据集被称作Cube(数据立方体),可以使用多维数组存储。(立方体只有三维,但多维数据不止有三维,称作数据立方体只是为了和传统的关系数据库的二维表作区分) 如下图所示,是个三维数据集(商品维、地域维、时间维): ![](https://leanote.com/api/file/getImage?fileId=61652727ab644142b43bc1ce) Cube的基本概念如下: * **维度(Dimension)**:维度就是数据分析的角度,表示一类属性,用户通过维度分析度量数据。比如上图中的三个维度:时间、产品、地域。 * **度量(Measure)**:度量表示用来聚合分析的数字信息,`度量的集合组成了一个特殊的维度 —— 度量维度` 。如商品数量、销售额等。 * **层次(Hierarchy)**:维度的层次结构,要注意的是存在两种层次:`自然层次`和用户`自定义层次`。对于时间维而言,(年、月、日)是它的一个自然层次,(年、季度、月)是它的另一个自然层次,一个维可以有多个层次,层次可以理解为单位数据聚合的一种路径。比如(省-电子产品-年-月)是一个用户自定义层次。 * **级别(Level)**:级别组成层次。对于时间维的一个层次(年、月、日)而言,年是一个级别,月是一个级别,日是一个级别,显然这些级别是有父子关系的。 * **成员(Member)**:一个成员是维度上某一级别的值。如上图时间维度上“年”级别的成员就包含:2000,2001,2002,2003...月级别的成员包含:1、2、3等。 * **计算度量**:是一种运行通过特殊表示式动态计算的成员。也就形成了度量(Measures)的结果。计算成员不影响现有的Cube数据,它基于cube数据,通过各种数学表达式和各种函数定义,可以创建复杂的表达式。任何动态分析功能,都可以通过计算成员实现,比如实现占比,同期比等等。 > 1. 层次和级别的关系? 对于一个维度而言,可以存在多种层次。例如时间维,(年、月、日)是一个层次,(年、季、周)算一个层次、(年、月)也算是一个层次。**层次是维度中一些级别组成的集合,层次中的级别具有父子关系,而级别则是层次中的具体的某个字段。** 这里的Cube就是多维模型中的事实表(Fact Table),它会引用所有相关维的维主键作为自身的联合主键,加上度量(Measure)和计算度量(Calculated Measure)就组成了立方的结构: ![](https://leanote.com/api/file/getImage?fileId=61652727ab644142b43bc1cf) # OLAP和OLTP的对比 数据处理类型 | OLTP | OLAP --|--|-- 面向对象| 业务开发人员| 分析决策人员 应用场景| 日常事务处理| 面向分析决策 数据模型| 关系模型 | 多维模型 数据存储量 | GB/TB| TB/PB 操作类型| 查询、插入、更新、删除| 查询为主 # OLAP的主要类型 ## HTAP (Hybrid) > Gartner在2014年初的一篇论文中创造了HTAP(Hybrid Transaction / Analytical Processing,混合事务/分析处理)一词,以描述同时执行在线事务处理(OLTP)和在线分析处理(OLAP)的新型内存数据系统。 因为OLTP和OLAP的业务场景和存储的差异,一般都是位于不同数据库进行的,例如MySQL和Doris。若想对数据进行分析,就必须将OLTP的数据同步到OLAP,这样不可避免会出现时延,例如几分钟甚至几小时,并且一致性无法保证,不适合实时性高的场景。HTAP数据库应运而生,融合了OLTP和OLAP的业务场景。 HTAP的主要特点: * MPP架构,支持弹性扩容 * 支持行式存储、列式存储 * 底层数据只有一份,或者支持高效复制 HTAP的典型代表如`PingCAP TiDB`,OLTP的数据行式存储在TiKV上,OLAP的数据列式存储在TiFlash上,TiKV和TiFlash的数据高效的进行同步。 ## MOLAP (Multi) `基于多维数组`的存储模型,但需要对数据进行预处理才能形成多维结构,典型代表如`Apache Kylin`。 多维数据在存储中将形成“数据立方体(Cube)”的结构,此结构在得到高度优化后,可以最大程度地提高查询性能。随着源数据的更改,MOLAP 存储中的对象必须定期处理以合并这些更改。两次处理之间的时间将构成滞后时间,在此期间,OLAP对象中的数据可能无法与当前源数据相匹配。维护人员可以对 MOLAP 存储中的对象进行不中断的增量更新,MOLAP的优势在于由于经过了数据多维预处理,分析中数据运算效率高,主要的缺陷在于数据更新有一定延滞。 ## ROLAP (Relational) 比较常见的OLAP类型,`ROLAP是完全基于关系数据库进行存放的`,例如`Apache Doris`。在ROLAP中,数据存储在两种表:`事实表`和`维表`。 * 事实表是用来记录具体事件的,包含了每个事件的具体要素,以及具体发生的事情 * 维表则是对事实表中事件的要素的描述信息。 > 注:事实表存储`度量(数值)`以及`维度表的id`,维度表存储的是`维度的成员(字符串、时间等类型)`。 比如一个事件会包含时间、地点、人物、事件,事实表记录了整个事件的信息,但对时间、地点和人物等要素只记录了一些关键标记。 如下所示,商品销售事实可以划分5个维度: ![](https://leanote.com/api/file/getImage?fileId=61652727ab644142b43bc1d3) 基于事实表和维表就可以构建出多种多维模型,包括`星形模型`、`雪花模型`和`星座模型`。 1. **星型模型** 所有维度表直连在事实表上。 ![](https://leanote.com/api/file/getImage?fileId=61652727ab644142b43bc1d4) 2. **雪花模型** `当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时`,其图解就像多个雪花连接在一起,故称雪花模型。雪花模型是对星型模型的扩展,它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的 " 层次 " 区域,这些被分解的表都连接到主维度表而不是事实表。 ![](https://leanote.com/api/file/getImage?fileId=61652727ab644142b43bc1d5) 3. **星座模型** 多个事实表共享维表,这种模式可以看作星座模式集,星座模型是把共享的维合并。 ## HOLAP (Hybrid) `ROLAP和MOLAP的混合使用`,用户可以根据自己的业务需求,选择哪些模型采用ROLAP,哪些采用MOLAP。一般来说,会将维度灵活或者明细的数据使用ROLAP方式,而维度固定或者高度聚合的数据使用MOLAP方式。 比如实践中,将聚合维度固定的数据使用`Apache Kylin`预构建,查询时直接查询结果数据;聚合维度灵活的数据集使用`Doris`存储,查询时才进行计算。 # OLAP的基本操作 OLAP即联机分析处理,**除了支持基本的分析操作(使用count、sum、avg等聚合函数),还要`支持多维分析操作`**,有如下几种: ![](https://leanote.com/api/file/getImage?fileId=61652727ab644142b43bc1d1) **1. 钻取** 分为上钻(上卷)和下钻: * 上卷:**从细粒度数据向高层的聚合**,如将江苏省、上海市和浙江省的销售数据进行汇总来查看江浙沪地区的销售数据,如上图。 * 下钻:**将汇总数据拆分到更细粒度的数据**,比如通过对2010年第二季度的总销售数据进行下钻来查看2010年第二季度4、5、6每个月的消费数据,如上图;当然也可以钻取浙江省来查看杭州市、宁波市、温州市……这些城市的销售数据。 **2. 切片** 选择维度中特定的成员进行分析,比如选择2010年第二季度的数据。 **3. 切块** 选择维中特定区间的数据或者某批特定值进行分析,比如选择2010年第一季度到2010年第二季度的销售数据,或者是电子产品和日用品的销售数据。 **4. 旋转** 即维的位置的互换,就像是二维表的行列转换,如图中通过旋转实现产品维和地域维的互换。
上一篇:
[模板] 技术文档
下一篇:
SpringBoot笔记(9)-异步调用
0
赞
548 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网
提交评论
立即登录
, 发表评论.
没有帐号?
立即注册
0
条评论
More...
文档导航
没有帐号? 立即注册