1、1,在线教务辅导网:http:/,教材其余课件及动画素材请查阅在线教务辅导网,QQ:349134187 或者直接输入下面地址:,http:/,第四章 联机分析处理(OLAP),3,第四章 目录,4.1 OLAP概念 4.2 OLAP的基本操作 4.3 OLAP的数据模型 4.4 OLAP分类和服务器类型 4.5 基于多维数据库的OLAP(MOLAP) 4.6 基于关系数据库的OLAP(ROLAP) 4.7 OLAP实现 4.8 OLAP的衡量和特性 4.9 本章小结,4,数据仓库是管理决策分析的基础,要有效地利用数据仓库的信息资源,必须要有强大的工具对数据仓库的信息进行决策分析。On-line
2、 Analytical Processing(在线分析处理或联机分析处理)就是一个应用广泛的数据仓库使用技术。它可以根据分析人员的要求,迅速灵活地对大量的数据进行复杂的查询处理,并以直观的容易理解的形式将查询结果提供给各种决策人员,使他们能够迅速准确地掌握企业的运营情况,了解市场的需求。,5,第四章 联机分析处理(OLAP),4.1 OLAP概念 4.1.1 什么是OLAP 4.1.2 OLAP的相关基本概念 4.1.3 OLAP和OLTP的区别 4.1.4 OLAP和数据仓库的区别 4.2 OLAP的基本操作 4.3 OLAP的数据模型 4.4 OLAP分类和服务器类型 4.5 基于多维数据
3、库的OLAP(MOLAP) 4.6 基于关系数据库的OLAP(ROLAP) 4.7 OLAP实现 4.8 OLAP的衡量和特性 4.9 本章小结,6,4.1 OLAP概念,OLAP发展背景:60年代,关系数据库之父E.F.Codd提出了关系模型,促进了联机事务处理(OLTP)的发展(数据以表格的形式而非文件方式存储)。1993年,E.F.Codd提出了OLAP概念,认为OLTP已不能满足终端用户对数据库查询分析的需要,SQL对大型数据库进行的简单查询也不能满足终端用户分析的要求。用户的决策分析需要对关系数据库进行大量计算才能得到结果,而查询的结果并不能满足决策者提出的需求。因此,E.F.Cod
4、d提出了多维数据库和多维分析的概念,即OLAP。,7,4.1.1 什么是OLAP,定义4.1 OLAP(联机分析处理)是针对某个特定的主题进行联机数据访问、处理和分析,通过直观的方式从多个维度、多种数据综合程度将系统的运营情况展现给使用者。 定义4.2 OLAP(联机分析处理)是使分析人员、管理人员或执行人员能够从多角度对信息进行快速、一致、交互地存取,从而获得对数据的更深入了解的一类软件技术。(OLAP委员会的定义) OLAP的目标是满足决策支持或者满足在多维环境下特定的查询和报表需求,它的技术核心是“维”这个概念,因此OLAP也可以说是多维数据分析工具的集合。,8,OLAP 的特点: 多维
5、性 OLAP服务通过支持多维聚合路径(dimensional aggregation path)或层次结构和/或多重层次结构,提供了大量数据视图或多维的概念性视图。 容易理解 为OLAP 分析设计的数据仓库或数据集市可以处理与应用程序和开发人员相关的任何业务逻辑和统计分析,同时使它对于目标用户而言足够简单。 交互性 OLAP帮助用户通过对比性的个性化查看方式,以及对各种 “what-if”数据模型场景中的历史数据和预计算数据进行分析,将业务信息综合起来。用户可以在分析中定义新的专用 计算,并可以以任何希望的方式报告数据。 快速 OLAP服务常常以多用户的客户机/服务器模式实现,而且无论数据库的
6、规模和复杂性有多大,都能够对查询提供一致的快速响应。合并的业务数据可以沿着所有维度中的层次结构预先进行聚合,从而减少构建OLAP报告所需的运行时间。,4.1.1 什么是OLAP,9,4.1.2 OLAP的相关基本概念,1. 变量变量是从现实系统中抽象出来的,用于描述数据的实际意义,即描述数据“是什么”(人数、单价、销售额等)。变量都有一定的取值范围,比如“人数”的取值范围是“大于等于零的整数”。取值范围实际上是具体问题对变量的约束。 2. 维维是人们观察数据的特定角度,是考虑问题时的一类属性,属性集合构成一个维(时间维、地理维等)。 3. 维的层次(levels)人们观察数据的某个特定角度(即
7、某个维)还可以存在细致程度不同的各个描述方面(时间维:日期、月份、季度、年)。维度的层次性是人们观察数据细致程度不同造成的,维度层次的确定需要具体问题具体分析,不同分析应用对数据组织的详略程度不同,将使同一维度上的层次繁简不同。 4. 维的成员维成员也称维的取值。如果一个维是多层次的,那么该维的维成员是由各个不同维层次的取值组合而成,如“2004年6月30日”是在具有3个层次的时间维上的一个取值。 5. 多维数据集多维数据集是决策分析的支柱,OLAP的核心,有时也称立方体或者超立方。OLAP展现在用户面前的是一幅幅多维视图。多维数据集可以用一个多维数组来表示。,10,6. 多维数组图4.1 按
8、多维数组组织起来的三维立方体(multicube)多维数组是维和变量的组合表示。一个多维数组可以表示为:维1,维2,维n,变量,比如:图4.1所示的商品销售数据是按时间、地区和产品组织起来的三维立方体,加上变量“销售额”,就组成了一个多维数组(时间,地区,产品,销售额)。如果在图4.1的基础上扩展一个维“销售渠道”,就得到一个四维的结构。7. 数据单元(单元格)数据单元(单元格)是多维数组的取值。当多维数组的各个维都选中一个维成员,这些维成员的组合就唯一确定了一个变量的值,比如:2004年3月,昆明,笔记本电脑,$80000。,4.1.2 OLAP的相关基本概念,11,4.1.3 OLAP和O
9、LTP的区别,OLAP和OLTP的区别:OLAP面向的是市场,主要供企业的决策人员和中高层管理人员使用,用于数据分析。而OLTP是面向顾客的,主要供操作人员和低层管理人员使用,用于事务和查询处理。OLAP系统管理大量历史数据,提供汇总和聚集机制,并在不同的粒度级别上存储和管理信息。这些特点使得数据更容易用于决策分析。OLTP系统则仅管理当前数据,通常,这种数据太琐碎,难以用于决策。OLAP系统处理的是来自不同组织的信息,由多个数据存储集成的信息。由于数据量巨大,OLAP数据存放在多个存储介质上,不过,对OLAP系统的访问大部分是只读操作,尽管许多可能是复杂的查询。相比之下,OLTP系统则主要关
10、注企业或部门内部的当前数据,而不涉及历史数据或不同组织的数据。它们的区别概括于表4.1中。,12,4.1.3 OLAP和OLTP的区别,表4.1 OLAP和OLTP的区别,13,4.1.4 OLAP和数据仓库的区别,OLAP 是大多数数据仓库解决方案中使用的报告实现之一。OLAP 解决方案有时候被错误地称为数据仓库解决方案。在为某个部门或有限的用户群开发 OLAP 解决方案时,这种说法尤其容易引起误解。数据仓库最重要的特性是数据集成,而数据仓库最重要的用途是信息数据呈现。OLAP 服务并不是主要针对数据集成而设计的;但是,它是一种强大的数据呈现方法,在大多数数据仓库解决方案中都使用 OLAP。
11、,14,4.1.4 OLAP和数据仓库的区别,典型的 OLAP 服务常常源自一个或多个专门设计的数据集市。OLAP 服务应该被看作数据仓库解决方案的一部分,参见图 4.2。图4.2 数据仓库中的OLAP报告,15,第四章 联机分析处理(OLAP),4.1 OLAP概念 4.2 OLAP的基本操作 4.2.1 数据切片(SLICE) 4.2.2 数据切块(DICE) 4.2.3 数据上探/下钻(DRILL-UP/DRILL-DOWN) 4.2.4 数据旋转(PIVOT) 4.2.5 其它OLAP操作 4.3 OLAP的数据模型 4.4 OLAP分类和服务器类型 4.5 基于多维数据库的OLAP(
12、MOLAP) 4.6 基于关系数据库的OLAP(ROLAP) 4.7 OLAP实现 4.8 OLAP的衡量和特性 4.9 本章小结,16,4.2 OLAP的基本操作,OLAP的基本操作是指通过对多维形式组织起来的数据进行切片、切块、聚合、钻取、旋转等分析动作,以求剖析数据使用户能够从多种维度、多个侧面、多种数据综合度查看数据,从而深入地了解包含在数据中的信息、内涵。OLAP的操作方式迎合了人的思维模式,因此减少了混淆,降低了出现错误解释的可能性。下面我们逐一介绍OLAP的基本操作内容。,17,4.2.1 数据切片(SLICE),定义4.3 在多维数组的某一维上选定一个取值,则多维数组就从n维降
13、成了n1维,我们称多维数组的子集(维度1,维度2,维成员Vi,维度n,变量)(设维度i的维成员取Vi)为多维数组在维度i上的切片。 例4.1 图4.3所示是一个按产品维、城市维和时间维(年)组织起来的产品销售数据,用多维数组表示为(时间,城市,产品,销售额)。如果在城市维上选定一个维成员(设为“上海”或“广州”),就得到了在城市维上的一个切片;如果在产品维上选定一个维成员(设为“电视机”或“电冰箱”),就得到了在产品维上的一个切片。显然,这些切片的数目取决于每个维成员的个数。图4.3 数据切片示意图,18,按照定义4.3,一次切片一定使原来维数减1,因此所得的切片结果并不一定是二维的“平面”,
14、其切片结果的维数取决于原来的多维数组的维数。这样的切片定义不够通俗易懂,所以我们给出了切片的另一个定义(这两个定义是不等价的)。定义4.4 选定多维数组中两个维:维i和维j,在这两个维上取某一区间或任意的维成员,而将其余的维都分别取定一个维成员的动作称为多维数组在维i和维j上的一个切片,表示为:(维i,维j,变量)。,4.2.1 数据切片(SLICE),19,例4.2 对于例4.1,选定多维数组(时间,城市,产品,销售额)中的时间维度与产品维度,而在城市维上取定一个维成员(设为“上海”或“广州”),就得到了多维数组(时间,城市,产品,销售额)在时间和产品两维上的一个切片(时间,产品,销售额)。
15、它表示“上海”或“广州”地区各产品、每年的销售情况。相应地,选定时间维度与城市维度,而在产品维上取定一个维成员(设为“电视机”或“电冰箱”),就得到了多维数组(时间,城市,产品,销售额)在时间和城市两维上的一个切片(时间,城市,销售额)。 从定义4.4可以得出两点:1)一个多维数组的切片最终是由该数组中除切片所在平面的二个维之外的其他维的成员值确定的。2)维是观察数据的角度,那么切片的作用或结果就是舍弃一些观察角度,使人们能在两个维上集中观察数据。因为人的空间想象能力毕竟有限,一般很难想象四维以上的空间结构。所以对于维数较多的多维数据空间,数据切片是很有意义的。 定义4.4可以看成是定义4.3
16、的一个特例。对于一个n维数组,按定义4.3进行的n-2次切片的结果,就必定是对应于按定义4.4进行的某一次切片的结果。,4.2.1 数据切片(SLICE),20,4.2.2 数据切块(DICE),和切片相对应,我们对切块也下两个定义: 定义4.5 将多维数组某一维上的取值设定为一个区间(例如取“1999至2004年”)的维成员的动作称为切块。显然,当这一区间只取一维成员时,即得到一个切片(见定义4.3)。 定义4.6 选定多维数组中三个维:维i、维j和维k,在这三个维上取某一区间或任意的维成员,而将其余的维都分别取定一个维成员的动作称为多维数组在维i、维j和维k上的一个切块,表示为:(维i,维
17、j,维k,变量)。从另一个角度来讲,切块可以看成是由多个切片叠合而成。 例4.3 在图4.3中,如果将城市维上的取值设定为一个区间(例如取上海、北京、广州),而非单一的维成员时,就得到一个数据切块,它可以看成是上海、北京和广州三个切片叠合而成。,21,4.2.3 数据上探/下钻(DRILL-UP/DRILL-DOWN),维度是有层次性的,如时间维可能由年、季、月、日构成,维度的层次实际上反映了数据的综合程度。维度层次越高,代表的数据综合度越高,细节越少,数据量越少;维度层次越低,则代表的数据综合度越低,细节越充分,数据量越大。数据钻取包含向下钻取(drill-down)/下卷(roll-dow
18、n)和向上探取(drill-up)/上卷(roll-up)操作,上探是在某一维上将低层次的细节数据概括到高层次的汇总数据。而下钻则相反,它从汇总数据深入到细节数据进行观察。这两者都是改变维的层次和变换分析的操作。例4.4 在图4.4中,2004年某产品销售收入如表1,时间层次是“年”,如在时间维上进行下钻操作,可获得其下层各季度销售数据如表2所示,表2显示的是2004年某产品每季度的销售情况,显然,表2中各个季度的销售总和应当等于表1中一年的销量。同理,如果我们在季度层次上继续向下钻取,则可得到2004年该产品每季度、每月的销售情况,等等。相反,若进行上探,则可从表2得到表1的结果。,22,图
19、4.4 上探、下钻操作示意图显然,钻取的深度与维所划分的层次相对应。如果对时间维度上只定义了“年”、“季度”这两个层次关系,那么表2是我们能够得到的最细节的数据,不能再进一步下钻。如果对时间维度定义了“年”、“季度”、“月份”、“周”、“日”等更多的层次,则还可以进一步钻取。类似地,也可以在部门维度上进行钻取。,4.2.3 数据上探/下钻(DRILL-UP/DRILL-DOWN),23,4.2.4 数据旋转(PIVOT),数据旋转是改变维度的位置关系,通过旋转可以得到不同视角的数据。旋转可能交换行和列,也可能是在维度层次之间进行交换。例4.5 图4.5(a)的例子是一个行列交换示意图,横向的时
20、间维度和纵向的产品维度进行了交换,从而形成横向为产品,纵向为时间的表。图4.5(b)是一个三维旋转示例。图4.5(c)中的例子则是在维度层次之间进行了交换,这使得用户能够更好地对同产品不同城市,不同季度的数据进行比较。,24,4.2.4 数据旋转(PIVOT),25,4.2.5 其它OLAP操作,除了上述的OLAP基本操作外,有些OLAP系统还提供其他钻取操作。例如,钻过(drill_across)执行涉及多个多维数组(事实表)的查询;钻透(drill_thriugh)操作使用关系SQL机制,钻透数据立方体的底层,到后端关系表。其他OLAP操作可能包括列出表中最高或最低的N项,以及计算移动平均
21、值、增长率、利润、内部返回率、贬值、流通转换和统计功能。OLAP提供分析建模机制,包括推导比率、方差等以及计算多维度量的计算引擎。它能在每一粒度级和在所有维的交产生汇总、聚集和分层。OLAP也支持预测、趋势分析和统计分析函数模型。在这种意义下,OLAP引擎是一种强有力的数据分析工具。,26,第四章 联机分析处理(OLAP),4.1 OLAP概念 4.2 OLAP的基本操作 4.3 OLAP的数据模型 4.3.1 什么是数据立方体 4.3.2 多维数据模型的存在形式 4.4 OLAP分类和服务器类型 4.5 基于多维数据库的OLAP(MOLAP) 4.6 基于关系数据库的OLAP(ROLAP)
22、4.7 OLAP实现 4.8 OLAP的衡量和特性 4.9 本章小结,27,4.3 OLAP的数据模型,数据仓库和OLAP工具基于多维数据模型。这种模型将数据看作数据立方体形式。本节学习数据立方体如何对n维(n-D)数据建模。还将学习星形、雪花形、事实星座形和雪暴形等多维数据模型的存在形式等。,28,4.3.1 什么是数据立方体,数据立方体允许从多维对数据建模和观察。它由维和事实定义。维是人们观察数据的特定角度。例如,一个“销售(Sales)”数据仓库可能涉及维:时间(time)、地点(location)、商品(item)和商品的供应商(supplier)等。每个维都有一个表与之相关联,称为维
23、表,它进一步描述维。例如,“商品(item)”的维表可以包含属性商品名(item_name)、品牌(brand)、类型(type)和颜色(color)。维表可以由用户或专家设定,或者根据数据分布自动产生和调整。多维数据模型围绕中心主题(例如销售)组织。主题用事实表表示。事实一般是数值度量的。例如“销售(Sales)”数据仓库的事实包括销售额(dollars_sold(美元)和销售量(units_sold(个)。事实表包括事实的名称或度量,以及每个相关维表的码。尽管我们经常把数据立方体看作3维几何结构,但在数据仓库中,数据立方体是n维的。为了更好地理解数据立方体和多维数据模型,让我们从考察2维数
24、据立方体开始(见表4.2)。事实上,它是某商店的销售数据中在“大理”市每季度相关商品的销售额表。在这个2维表中,“大理”市的销售用时间(time)维(按季度组织)和商品(item)维(按所售商品的类型组织)表示。所显示的事实或度量是销售量(dollars_sold,单位:万人民币)。,29,4.3.1 什么是数据立方体,表4.2 某商店的销售数据在时间和商品维的2维视图表4.3 某商店的销售数据在时间、商品和地点维的2维视图,30,现在假定在表4.2的基础上,增加一维,以3维形式观察销售数据。例如,增加“地点”维来考察销售量。3维数据如表4.3所示。不难看出,表4.3的3维数据以2维数据表序列
25、的形式表示。从概念上讲,也可以用3维数据立方体的形式表示这些数据。如图4.6所示。,4.3.1 什么是数据立方体,31,假定再增加一个维,如供应商(supplier),以4维形式观察这组销售数据。观察4维事物变得有点麻烦,然而,可以把4维立方体看成3维立方体的序列,如图4.7所示。如果按这种方法继续下去,可以把任意n维数据看成(n-1)维“立方体”序列。数据立方体是对多维数据存储的一种可视化展示,这种数据的实际物理存储可以不同于它的逻辑表示。应注意的是:数据立方体是n维的,而不限于3维。,4.3.1 什么是数据立方体,32,上面所示的每个数据立方体称作一个方体(cuboid)。于是,给定维的集
26、合,可以对给定维的每个可能的子集产生一个方体。结果形成方体的格,每个方体在不同的汇总级或group by(即维的不同子集)显示数据。方体的格称作数据立方体。图4.8显示时间维(time)、地点维(location)、商品维(item)和供应商维(supplier)形成的数据立方体的方体格。存放最低层汇总的方体称作基本方体(base cuboid)。例如,图4.8中的4维方体是给定维时间、地点、商品和供应商的基本方体。图4.6是维时间、地点和商品的3维(非基本的)方体对所有的供应商汇总。0维方体存放最高层的汇总,称作顶点方体(apex cuboid)。在我们的例子中,这是总销售在所有的四个维汇总
27、。顶点方体通常用all标记。,4.3.1 什么是数据立方体,33,4.3.1 什么是数据立方体,34,4.3.2 多维数据模型的存在形式,实体-联系数据模型(ER模型)广泛用于数据库设计,其中数据库模式由实体集和它们之间的联系组成。这种数据模型适于联机事务处理(OLTP)。然而,数据仓库需要简明的、面向主题的模式,便于联机数据分析(OLAP)。最流行的数据仓库数据模型是多维数据模型。这种模型可以以星形模式、雪花形模式、事实星座形模式和雪暴形模式形式存在。通过将事实表和维表进行连接,我们就可以得到“星形结构(star schema)”。,35,4.3.2 多维数据模型的存在形式,例4.6 “销售
28、”数据仓库的星形模式显示在图4.9中。该模式包含一个中心事实表(fact table)“销售事务表”和4个维表(dimension table):时间维表(time table)、销售商品维表(item table)、销售地点维表(location table)和顾客维表(customer table)。在销售事务表中存储着四个维表的主码和三个度量“销售额”、“销售量”和“预算量”。这样,通过这四个维表的主键,就将事实表与维表联系在一起,形成了“星形模式”,完全用二维关系表示了数据的多维概念。,36,4.3.2 多维数据模型的存在形式,我们使用维表和事实表以及它们之间的关系,应用简单的连接运算
29、,就可以恢复出数据立方体。图4.10形象地说明了星形模式是关系数据库和数据立方体之间的桥梁。图4.10 星形模型成为关系数据库和数据立方体间的桥梁 这就是说,建立数据仓库的“星形模式”后,就可以在关系数据库中模拟数据的多维查询。即:通过维表的主键,对事实表和每个维表做连接操作,这样一次查询就可以得到数据的值以及对数据的多维描述。比如图4.9的例子,如果从时间维角度考虑问题,得到的是各个时间段上公司的销售情况。如果增加一个考虑的因素销售商品,从时间和销售商品角度考虑问题,得到的是在各个时间段上各个销售商品公司的销售情况。事实表记录的就是在这些因素限定下对问题的考虑结果。,37,4.3.2 多维数
30、据模型的存在形式,2. 雪花形模式在上面介绍的星形模式中,每维只用一个表表示,而每个表包含一组属性。例如,销售地点维表包含属性集location_id(地点标识), street(街道), city(市),province(省),country(国家)。这种模式可能造成某些冗余。例如,“大理”和“丽江”都是中国云南省的城市,于是,销售地点维表中这些城市实体的属性province(省)和country(国家)中会有冗余,即(,大理,云南,中国),(,丽江,云南,中国)。在冗余成为问题的时候,这些维表需要被规范化。 雪花形模式(snow flake schema)是星形模式的变种,其中某些维表是规
31、范化的,因而把数据进一步分解到附加的表中。结果模式图形成类似雪花的形状。 雪花形模式和星形模式的模型主要不同点雪花形模式的维表可能是规范化形式,以便减少冗余。这种表易于维护并节省存储空间。然而,与巨大的事实表相比,这种空间的节省可以忽略。此外,由于执行查询需要更多的连接操作,雪花形结构可能降低浏览的性能。这样,系统的性能可能相对受到影响。因此,尽管雪花形模式减少了冗余,但是在数据仓库设计中,雪花形模式不如星形模式流行。,38,4.3.2 多维数据模型的存在形式,例4.7 “销售”数据仓库的雪花形模式在图4.11给出。这里中心事实表(fact table)“销售事务表”与图4.9的星形模式相同。
32、两个模式的主要不同是维表的定义。星形模式中的“销售商品维表”在雪花形模式中被规范化,导致新的“销售商品维表”和“供应商维表”。例如,现在商品维表包含属性item_id、item_name、brand、type和supplier_id,其中,supplier_id连接到包含supplier_id和supplier_type信息的维表。类似地,星形模式中销售地点维表被规范化成两个新表:“地点维表”和“城市维表”。两个维表通过属性“city_id”连接。注意,如果需要,图4.11雪花形模式中的“province”和“country”还可以进一步被规范化。,39,3. 事实星座形在星形模式和雪花模式的
33、讨论中,我们注意到,它们都有多个维表,但是只能存在一个事实表。这是因为一个星形模式或雪花模式对应一个问题的解决(一个主题),我们在一个问题中通常只讨论“一件事”。比如,从不同时间、不同商品、不同地点、不同顾客讨论公司的销售额或销售利润。如果还想从不同时间、不同商品、不同供货地点、不同供货商来考察其供货额或供货量,那么,除同星形模式中的公司销售分析事实表外(见图4.9,4.11),还将出现供货分析事实表,并且供货分析也将同样涉及时间维、商品维和地点维,同时,还将涉及供货商维。3个维表中的信息对于这两个问题来说是共同的,可以考虑共享这部分数据,这种模式可以看作星形模式的汇集,因此称作星系模式(ga
34、laxy schema)或事实星座形模式。,4.3.2 多维数据模型的存在形式,40,例4.8 图4.12是一个较为典型的事实星座形模式。供货事实表有四个维或码:time_id、item_id、shipper_id和location_id;两个度量:供货额和供货数量。事实星座形模式允许事实表共享维表。事实表“销售”和“供货”共享时间维表、商品维表和地点维表。,4.3.2 多维数据模型的存在形式,41,4. 雪暴形模式在上述事实星座形模式的基础上,构造维表的多层结构,即“星座模式”和“雪花模式”的结合,就得到了“雪暴形模式”。例4.9 “销售”和“供货”的雪暴形模式在图4.13给出。这里,两个模
35、式(雪花形模式和雪暴形模式)的主要不同是维表的定义,即维表被规范化了。与在雪花模式中讨论的类似,由于查询所需的连接操作,性能将成为此模式的一个关键问题。当维和事实表变大时,必须采用有效的查询优化技术和各种索引技术来提高系统性能。事实上,“星形模式”是最基本的模式,一个“星形模式”有多个维表,但是只能存在一个事实表。在“星形模式”基础上,为了避免数据冗余,用多张表来描述一个复杂维,即在“星形模式”的基础上,构造维表的多层结构(或称维表的规范化),就得到“雪花形模式”。如果打破“星形模式”只有一个事实表的限制,且这些事实表共享部分或全部已有维表信息,这种结构被称为“事实星座形模式”。再继续扩展,具
36、有多个事实表和多层维表的结构,我们称之为“雪暴形模式”。如图4.14形象地给出这4个模型之间的区别和联系。,4.3.2 多维数据模型的存在形式,42,4.3.2 多维数据模型的存在形式,43,4.3.2 多维数据模型的存在形式,44,第四章联机分析处理(OLAP),4.1 OLAP概念 4.2 OLAP的基本操作 4.3 OLAP的数据模型 4.4 OLAP分类和服务器类型 4.4.1 OLAP的分类 4.4.2 OLAP的三层客户/服务器结构 4.4.3 ROLAP服务器 4.4.4 MOLAP服务器 4.4.5 HOLAP服务器 4.5 基于多维数据库的OLAP(MOLAP) 4.6 基于
37、关系数据库的OLAP(ROLAP) 4.7 OLAP实现 4.8 OLAP的衡量和特性 4.9 本章小结,45,4.4.1 OLAP的分类,在OLAP系统的实现中,按照OLAP的存储方式(数据组织方式)的不同,可将OLAP分成ROLAP(关系OLAP),MOLAP(多维OLAP)和HOLAP(混合OLAP)。按照进行OLAP分析动作处理地点的不同,可将OLAP分成Server OLAP和Client OLAP两种。图4.15显示了按照不同方式对OLAP进行的分类。从逻辑上讲,OLAP服务器为用户提供来自数据仓库或数据集市的多维数据,而不必关心数据如何存放和存放在何处。然而,OLAP服务器的物理
38、结构和实现必须考虑数据存放问题。,46,4.4.2 OLAP的三层客户/服务器结构,OLAP的具体实现方案通常采用三层客户/服务器结构如图4.16所示。第一层是数据仓库服务器,它实现与基层运营的数据库系统的连接,完成企业级数据一致和数据共享的工作;第二层是OLAP服务器,它根据最终客户的请求实现分解成OLAP分析的各种分析动作,并使用数据仓库中的数据完成这些动作;第三层是前端的展现工具,用于将OLAP服务器处理得到的结果用直观的方式,如多维报表、饼图、柱状图、三维图形等展现给最终用户。图4.16 OLAP的三层客户/服务器结构图 这种三层体系结构使数据、应用逻辑和客户应用分离开,有利于系统的维
39、护和升级。当系统需要修改功能或者增加功能时,可以只修改三层中的某些部分,而不需要像两层的客户/服务器体系那样做整体的改动。,47,4.4.3 ROLAP服务器,ROLAP服务器的体系结构如图4.17所示。使用关系或扩充关系的DBMS存储并管理数据仓库,而OLAP中间件支持其余部分。在接收用户的请求时,ROLAP服务器把多维查询转化成SQL查询,然后由数据仓库服务器对以关系形式存放的数据执行SQL查询,最终将数据返回给终端客户。 ROLAP服务器包括DBMS的后端优化,聚集导航逻辑的实现,附加的工具和服务。由于有强大的关系数据库技术的支撑,ROLAP技术比MOLAP技术具有更大的可伸缩性。例如,
40、Microstrategy的DSS服务器就采用ROLAP方法。,图4.17 ROLAP 体系结构,48,4.4.4 MOLAP服务器,这些服务器通过基于数组的多维数据库(MDDB)支持数据的多维视图。将多维视图直接映射到数据立方体数组结构。如图4.18所示,MOLAP服务器存储的是多维数据库(MDDB),MDDB将自动建立索引并进行预运算来提高查询存储性能(MDDB最终将数据存放回数据仓库,成为数据仓库数据的一部分)。当用户请求到来时,MOLAP服务器将对MDDB进行多维存取。使用数据立方体的优点是能够对预计算的汇总数据快速索引。,图4.18 MOLAP 体系结构,49,4.4.5 HOLAP
41、服务器,图4.19 HOLAP 体系结构,HOLAP结构如图4.19所示是ROLAP和MOLAP结构的混合模式。这种技术得益于ROLAP较大的可伸缩性和MOLAP的快速计算。例如,HOLAP服务器允许将大量详细数据存放在关系数据库中,而聚集保持在分离的MOLAP存储中。当用户查询到来时,或转化为SQL语句直接查询,或通过MOLAP服务器对MDDB进行直接存取。微软的SQL Server 2000支持HOLAP服务器。,50,第四章联机分析处理(OLAP),4.1 OLAP概念 4.2 OLAP的基本操作 4.3 OLAP的数据模型 4.4 OLAP分类和服务器类型 4.5 基于多维数据库的OL
42、AP(MOLAP) 4.5.1 多维数据库(MDDB(Multi-Dimensional DataBase) 4.5.2 维的分类(CATEGORIES) 4.5.3 多维数据库存储 4.6 基于关系数据库的OLAP(ROLAP) 4.7 OLAP实现 4.8 OLAP的衡量和特性 4.9 本章小结,51,在RDBMS中,数据总是以关系表的方式来组织。在多维数据库中,数据将以多维方式来组织,并以多维数据库方式来存储。多维数据库中的维是通过对问题的分析得到的。如图4.20,假如分析某企业各个产品在各个地方的销售情况,则可以选取产品维、地理维,以销售量作为度量变量,这样就形成了一个多维数据,如图4
43、.20(a)所示。通过“维”,多维数据直观地表达了客观世界中的“一对多”、“多对多”的关系。如企业各个产品在各个地区销售量的关系在多维表中能够直观地表现出来。而在关系数据库中,“多对多”的关系总是转化成多个“一对多”的关系,如图4.20(b)。在关系数据库中,将“多对多”的关系转化成多个“一对多”关系有利于数据的一致性和规范化,这符合事务处理系统的需求,但是这种方式并不能直观地反映人们对事物的感知。除了直观上的差异,同多维表相比,对于同样的数据,关系表需要更多的表项和存储空间。对于需要处理大量数据的OLAP来说,应当选择对存储容量需求较小的方式多维表。,4.5.1 多维数据库(MDDB(Mul
44、ti-Dimensional DataBase),52,图4.20 数据组织结构,4.5.1 多维数据库(MDDB(Multi-Dimensional DataBase),53,现在我们进一步讨论这两种表的差异,在OLAP中需要使用多种综合层次的数据,因此对数据进行聚合(求和)处理是非常普遍的,如果使用关系表求和,比如求所有产品在东北区的总销量,需要首先选择各种产品在东北区销售的相关条目,然后求和,这样大大增加了系统的响应时间,对于大数据量的处理,这个问题将更加严重。如果使用多维表进行求和,由于多维表本身就是按照维度组织的,因此只需将东北对应的一列求和即可,如图4.20(c)所示。同理,如果要
45、统计各个产品的总销售量,只需将多维表中的横向条目相加即可。利用多维表还可以进行多个层次的求和。如将冰箱的销售总和同彩电的销售总和相加,就可得到这两个产品的总销售量。至此,可以看出多维表在进行多层次数据统计上的优越性。在实际的OLAP系统中,系统通常先对用户常见请求进行预处理,当最终用户请求到来时,系统可以直接读取已经计算好的结果并展现给用户,这就是OLAP中著名的“空间换时间”技术。,4.5.1 多维数据库(MDDB(Multi-Dimensional DataBase),54,“空间换时间”这个思想在数据库系统中也有应用,比如存储过程,对于经常使用的查询、计算等,写成存储过程进行编译、优化后
46、存储成可执行代码,需要时直接执行。若对关系表也采用“空间换时间”技术,即将决策分析人员所需的综合数据都预先统计出来,存放在数据库中。例如,我们可以在关系数据库的表中加上一行总和的记录见图4.20(d)。在这张关系表中,由于预先对产品在各地区的销售量进行了求和(综合),查询时就不用再进行计算了。如果所求的所有总和都已经被综合的话,只要读取单个记录就可以回答按产品(或按地区)求和的问题了。这样处理似乎可以得到快速一致的查询响应。但事实上,“总和”项破坏了关系表中列定义的统一语义,例如图4.20(d)的地区列中的值表示的是地区名称,而“总和”就成为一个例外。查询时用户必须了解这种约定。综上所述,多维
47、数据库的优势不仅在于多维概念表达清晰,占用存储少,更重要的是它有着高速的综合速度。在MDDB中,数据可以直接按行或列累加,并且由于MDDB中不像关系表那样重复的出现产品和地区信息,因此其统计速度远远超过RDBMS,数据库记录数越多,其效果越明显。,4.5.1 多维数据库(MDDB(Multi-Dimensional DataBase),55,多维数据库的另一重要概念是维内元素的“类”概念。类是指按照一定的划分标准对维成员全集的一个划分。比如,产品可划分成“畅销”、“不畅销”;移动通信业务类型可划分为“通话”、“短信”。前面我们介绍了维的层次(levels),这里又介绍了维的分类,值得注意的是,
48、维的层次和类是两个不同的概念,维的层次主要是为了进行数据钻取分析(上探和下钻),让用户能够查看不同层次的数据。维的分类是对维取值的划分,其目的通常是为了在不同的类别间进行比较。比如“畅销”、“不畅销”产品各占产品总量的比重?“通话”、“短信”对移动公司的收益贡献分别是多少?,4.5.2 维的分类(CATEGORIES),56,我们总结维的层次和类的主要区别如下: 1. 层次和类表达的意义不同维层次表达的是维所描述的变量的不同综合层次。表现在层次图中,父子结点的关系就是层次关系(如图4.21所示)。维层次越高,对应综合程度越高,粒度也越大。维层次越多,粒度层次也越丰富。,4.5.2 维的分类(C
49、ATEGORIES),图4.21 维的层次和类,维成员的类表达的则是某一子集维成员的共同特征,这个共同特征是由类属性的某一值来表达的。表现在层次图中,父子结点之间不存在类的关系,同一层次的维成员才可以划分为类。如图4.21所示,商品中的“冰箱”、“彩电”、“空调”等有一个共同特征,即属于电子类,这个类的特征由类属性“商品大类”的值“电子类”来表达。,57,2. 在层次和类上进行的分析动作不同在多维数据分析中,既有按维的层次关系进行的分析,也有按维成员的类进行的分析。但这两类分析动作是不同的。在维的层次上进行的分析主要有两种:上探和下钻,他们都是跨越维层次的分析。而按照维成员的类进行的分析主要有
50、分类和归纳,他们是对兄弟结点之间关系的分析,因而不可能跨越不同的维层次。需要指出的是,在实际的多维数据分析应用中,往往是既要在维的层次关系上,又要在维成员的类上进行错综复杂的数据分析。这就要求将维的层次与类交叉、组合在一起,形成更为复杂的层次图。,4.5.2 维的分类(CATEGORIES),58,在多维数据库(MDDB)中二维数据很容易理解,当维数扩展到三维甚至更多维时,多维数据库将形成类似于超立方体的结构。那么,这些超立方体的结构是如何存储的?实际上,MDDB由许多经压缩的、类似于数组的对象构成,这种对象通常带有高度压缩的索引及指针结构。每个对象由聚集成组的单元块组成,每个单元块都按类似于
51、多维数组的结构存储,并通过计算偏移进行存取。在MDDB中,数据管理主要以维及维成员为主,大多数MDDB产品还提供了单元级控制,数据封锁可以达到单元块级。这些管理控制工作均由MDDB中数据管理层实现,一般不易绕过。在MDDB中,并非维间的每种组合都会产生具体的值。实际上,许多组合没有具体值,是空的或者值为零。另外,许多值重复存储,如一年中的价格可能一直不变。因此,MDDB必须具有高效的稀疏数据处理能力,能略过空值、缺省和重复数据。另外,在MDDB或数据仓库中,时间是最普遍的一个维。几乎每个人都希望掌握事物的趋势,包括销售趋势、金融趋势、市场趋势,等等。由于时间同其他维不同,时间往往包含着特有的周期,不同周期之间存在着转化规则。因此,一种方便的方法是采用时间序列数据类型,在通常只能存储一个数据的单元里存储一个时间序列的数据,如一个财政月的销售数据等。这样,就可以简化对时间的处理,给MOLAP产品的开发带来不少方便。,