OLAP基础


 联机实时分析(OnlineAnalytical Processing, OLAP (/ˈoʊlæp/))技术是快速响应多维分(Multidimensionalanalysis, MDA)的一种解决方案。

  首先,解释下什么是多维分析:多维分析是一种数据分析过程,在此过程中,将数据分成两类:维度(dimensions)和度量(metrics/measurements)。维度和度量的概念都出自于图论(graph theory),维度指能够描述某个空间中所有点的最少坐标(coordinate)数,即空间基数;度量指的是无向图中顶点(vertices)间的距离。在多维分析领域,维度一般包括字段值为字符类或者字段基数值较少且作为约束条件的离散数值类型;而度量一般包括基数值较大且可以参与运算的数值类字段,一般也称为指标。

  OLAP技术可以看作是广义概念上的商业智能(Business Intelligence, BI)的一部分,而传统的OLAP分析应用通常包含了关系型数据库(relational database)、商业报告(business reporting)以及数据挖掘(data mining)等方面。

  下面介绍OLAP分析中两个重要的基本概念:OLAP cube和维度模型(Dimensional modeling,DM),这两个概念也是划分OLAP类型的重要标识。

1.1 OLAP cube

  OLAP cube在数据库理论(database theory)中的定义为:RDBMS关系映射的一种抽象描述(An abstract representation of a projection ofan RDBMS relation)。数学描述如下:


  OLAP cube可以简单描述为“多维数据集”。cube,我们可以想象为数据指标根据多维度封装成的一个立方体结构(以三维空间为例,如果维度数超过3,我们则称为“Hypercube”),如图1.1所示,图中的Time、Products、Cities就是OLAP分析中提取的三个维度,而这个立方体封闭区域所代表的含义就是在这三种维度下,某项指标的度量值,根据上述映射关系可以描述为:


  在OLAP分析中,我们通常也会对维度指标进行分层组织(Level),即一系列的parent-child关系(Hierarchy);父类维度可以看作是子类维度的聚合。例如:2016年7月是2016年第三季度这个父类维度的子类维度,同时2016年第三季度又可以看作是2016年这个父类维度的子类维度。


1.2 维度模型

  维度模型的概念出自于数据仓库领域,是数据仓库建设中的一种数据建模方法。维度模型主要由事实表和维度表这两个基本要素构成。

  事实表是维度模型的基本表,用于存放大度量值,术语“事实”代表了一个度量值。举一个例子:查询某个客户在某个机构下某个产品合约账户的某个币种的某个时点余额,在各维度值(客户、产品合约、账户、机构、币种、日期)的交点处就可以得到一个度量值。维度值的列表定义了事实表的粒度,同时又确定了度量值的取值范围。

  事实表的一行对应一个度量值,事实表的所有度量值必须具有相同的粒度。而事实可能是半加性质的,也可能是非加性质的,半加性事实表示度量值可以沿着某些维度由子类维度向父类维度进行聚合;非加性事实则完全不能相加,比如状态事实,对于这种非加性事实,我们只能采用计数或者求平均值,或者打印出全部事实行的方法进行分析。

  所有事实表有两个或者两个以上的外关键字(如图1.2中FK符号标记的部分),外关键字用于连接到维度表的主关键字。例如,事实表中的“产品合约关键字”总是匹配产品合约这个维度表的一个特定“产品合约关键字”。如果事实表中的所有关键字都能分别与对应维度表中的主关键字正确匹配,就可以说这些表满足引用完整性的要求。事实表要通过与之相连的维度表进行存取。

  维度表是事实表不可分割的部分。如图1.3所示,维度表包含有业务的文字描述。在一个设计合理的维度模型中,维度表会包含许多列或者属性,我们称之为维度属性。对于维度表来说,包含50到100个维度属性的情形并不少见。维度表倾向于将行数做得相当少(通常少于100万行),而将列数做得特别大。每个维度用单一的主关键字(如图1.2中PK符号标记的部分)进行定义,主关键字是确保同一与之相连的任何事实表之间存在引用完整性的基础。

  维度表是进入事实表的入口。丰富的维度属性给出了丰富的分析切割能力。维度给用户提供了使用数据仓库的接口。最好的属性是文本的和离散的。属性应该是真正的文字而不应是一些编码简写符号。应该通过用更为详细的文本属性取代编码,力求最大限度地减少编码在维度表中的使用。

  最后简单说明下维度表和事实表的融合。二者的融合也就是“维度模型”,“维度模型”一般采用“星型模式”或者“雪花模式”,如图1.4所示为“星型模式”,而“雪花模式”可以看作是“星型模式”的拓展,表现为在维度表中,某个维度属性可能还存在更细粒度的属性描述,即维度表的层级关系。


1.3 基本分析操作

  OLAP允许用户从多种角度分析多维数据,主要包括以下五种基本操作:上卷(consolidation/roll-up)、下钻(drill-down)、切片(slice)、切块(dice)和旋转(pivot)。

1.3.1 上卷(consolidation/Roll-up)

  上卷表示沿着某一维度按照一定的规则(rule)对数据进行聚合(aggregation)操作,沿着某一维度,即按照层级关系从子类维度向父类维度作聚合。

1.3.2 下钻(Drill-down)
  下钻和上卷正好相反,允许用户从已聚合的数据集中提取出所关注的细节。下图表示了从“Outdoor-Schutzausrüstung”这个父类维度中抽取出三个子类维度的下钻过程。


1.3.3 切片(Slice)

  切片表示通过选择某个维度的单一值(value),从OLAP cube中抽取出一个分片的过程。下图表示了从原始OLAP cube中抽取出time = 2004分片的过程。


1.3.4 切块(Dice)
  切块表示通过选择多个维度的某些值(或者区间),从OLAP cube中抽取出子cube的过程。下图表示了从原始OLAP cube中抽取某个维度中多值对应的子cube的过程。

1.3.5 旋转(pivot)
  旋转操作允许用户通过旋转(rotate)OLAP cube,重新选择目标分析维度,通常表现为交换坐标轴操作。在下图中,原始的OLAP cube的X轴是产品名称,Y轴是地区名称,Z轴是年份;经过旋转操作后cube表示了每个产品在不同年份、不同地区的统计情况。


1.4 OLAP 与OLTP的区别


1.5 OLAP技术路线分类

  常见的OLAP系统可以分为以下三类:关系型联机实时分析系统(Relational-OLAP,ROLAP),多维联机实时分析系统(Multidimensional-OLAP,MOLAP),混合型联机实时分析系统(Hybrid-OLAP,HOLAP)。

1.5.1 关系型联机实时分析(ROLAP)

  ROLAP的核心依赖于关系型数据库,允许用户使用维度模型进行数据分析,将维度值存储在维度表中,将度量值存储在事实表中,通过关系型数据库访问数据,使用SQL进行查询分析。ROLAP的一般使用模式概括如下:根据用户的需求,对不同维度进行分析后,将分析数据导入到另一张数据库表中。

ROLAP的优势:

(1)处理高基数列具有更好的扩展性;

(2)擅长处理非聚合类的原始数据,生态圈内用于原始数据入库的ETL工具众多,同时比MOLAP入库速率更高;

(3)由于数据存储在关系型数据库中,所以支持标准SQL接口,查询便捷;

ROLAP的劣势:

(1)根据OLAP survey(http://www.olapreport.com/survey.htm)在2001-2006年连续6年的调研显示,工业界普遍认为ROLAP的性能要低于MOLAP。但也有人提出质疑,争议包含两方面:ROLAP的用户数是MOLAP的7倍多,那么抱怨产品性能差的比例自然更高;其他因素的影响,上述调研报告并没有将ROLAP产品和MOLAP产品放在同一个维度模型上进行比较,所以该报告结论并不具有权威性;

(2)处理已聚合的数据,需要使用定制的ETL工具,开发量大且不具有通用性;如果采用原始数据入库,将非常影响查询性能,如果想要提升查询性能,需要将已入库的原始数据重新聚合后再导入到新的表中进行查询分析;

(3)ROLAP的性能很大程度上依赖于使用的关系型数据库的查询与缓存性能;同时对于所有分析操作,都依赖于SQL语句,对于重计算类的分析模型,转换后的SQL就会变得复杂,对分析者的SQL语句的调优要求较高,而在某些无法使用SQL的场景下,ROLAP类产品则变得无能为力。

1.5.2 多维联机实时分析(MOLAP)

  MOLAP是OLAP的经典使用模式,所以经常用MOLAP来指代OLAP。MOLAP和ROLAP具有一定的相似性,二者都可以使用维度模型进行数据分析,但是MOLAP并不将数据存储在维度表或者事实表中,而是对原始数据进行预计算(比如聚合操作),将计算结果存储在OLAP cube中。

MOLAP的优势:

(1)由于MOLAP不采用关系型数据库进行数据存储,所以必须采用特殊的存储手段,例如:压缩存储、索引(例如位图索引)以及缓存技术等,查询速率更快;

MOLAP的劣势:

(1)数据导入较慢,需要使用定制的ETL入库工具;

(2)由于没有维度表和事实表,所以对于更新操作以及明细查询,效率要比ROLAP低很多。

1.5.3 混合型联机实时分析(HOLAP)

  HOLAP充分利用了ROLAP与MOLAP的各自优势,从纵向角度,既允许用户将部分数据(比如聚合类数据)使用MOLAP进行存储,从而获得更快的查询性能;又允许部分数据(比如原始数据)使用ROLAP进行存储,使用户能够查看细粒度数据。从横向角度,使用MOLAP存储最近较热的数据,从而提升查询性能;而使用ROLAP存储历史较冷的数据。

  目前,商业类的OLAP产品更偏向于HOLAP,因为大厂既不想丢弃一直使用的关系型数据库,又想在数据分析能力上获得进一步提升,所以HOLAP类产品近几年也是百花齐放。
  • 12
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值