多维联机分析处理
1.什么是多维联机分析处理
多维联机分析处理(多维OLAP)是一个直接编入多维数据库的联机分析处理(OLAP)。一般来说,一个OLAP应用程序以多维方式处理数据。用户可以观察数据集合体的不同方面,例如销售时间,地点和产品模型。如果数据贮存在相关的数据库里,那么它能被多维的观察,但是只能用连续的访问和处理数据集合体的一个方面的表格的方式。MOLAP处理已经存贮在多维列表里的数据,在列表里数据可能的结合都被考虑,每个数据都在一个能够直接访问的单元里。因为这个原因,对大多数用途来说,MOLAP都比关系型联机分析处理(Relational Online Analytical Processing)要更快和更受用户欢迎。也有HOLAP(混合OLAP),结合了ROLAP和MOLAP的一些特性。
多维OLAP,基于多维数据存储的在线分析处理,MOLAP服务器提供数据存储管理,一般是放在物理的“立方块(Cube)”当中。
MOLAP常常用作数据仓库应用程序的一部分。
MOLAP使用一种持久稳固的立方体结构,与关系型数据库是分离的。Hyperion Essbase、Microsoft Analysis Services、Cognos PowerPlay都是使用了这种方法。因为一个立方体包含一个预先计算好的数据子集,所以与DOLAP和ROLAP相比响应时间更快速且可以预测。 MOLAP数据库传统上还具有更大程度的多维计算,比ROLAP中也更容易实现。例如,Hyperion Essbase使用一个@DESCENDANTS功能,让你将一个特定级别中的成员指向同一层次(如,一月、二月、三月并列是第一季度的下一级)。尽管一些关系数据库具有CASE功能,也可以使你在一个计算中指向这些行,但并不是所有都能做到,而且计算并不一定都是直截了当。
MOLAP的大幅下降是因为它是需要IT支持、管理、维护的另外一种数据存储。公司抱怨维护200个立方体需要很多努力,或公司拥有的是花费一个星期重新计算的设计不良的立方体,这都是很平常的。当一个维空间改变,如增加一个新的产品或改组业务单元,你可能就不得不重新计算整个MOLAP立方体。
MOLAP是事先生成多维立方体,供以后查询分析用,而ROLAP是通过动态的生成Sql,去做查询关系型数据库,如果没有做性能优化,数据量很大的时候,性能问题就会显得比较突出了。
以多维数据组织方式为核心,也就是说,MOLAP使用多维数组存储数据。多维数据在存储中将形成“立方块(Cube)”的结构,在MOLAP中对“立方块”的“旋转”、“切块”、“切片”是产生多维数据报表的主要技术。
2.多维联机分析处理的特点
在MOLAP中,不但把多维实视图在概念上看成一个超立方体,而且在物理上把多维实视图组成一个多维数据库,而不像ROLAP那样,以表的形式存储实视图。
在MOLAP中,维的属性值被映射成多维数组的下标值或下标的范围,而总结数据作为多维数组的值存储在数据的单元中。维可以看作为自变量,总结数据称为因变量。自变量相当于关系中的主关键字,由多个维组成,总结数据是由自变量的值决定的。
ROLAP在节省存储空间、灵活性、与关系数据库保持一致等方面有明显的优势;MOLAP则在性能和管理的简便性方面有其优点。虽然MOLAP的查询速度比较快,但是在实现时也有下面3方面的限制:
1) 用多维数组实现多维实视图,需要很大的存储空间。在实际的数据仓库中,每维的属性值个数可达数万,乃至更多。例如几万种产品、几万个连锁店等。而实际的维数可能多达几十乃至几百。耗费的存储空间相当可观,由此带来加载、维护等问题。
2) 在多维数组中,很可能有些单元是空白的,例如节假日商店不营业;某些产品在某些地区不销售等。
3) MOLAP与关系数据库系统从存储结构到查询语言都有相当大的差别,不可能在RDBMS的基础上实现。
3.多维联机分析处理与关系型联机分析处理比较
Rolap | Molap |
---|---|
沿用现有的关系数据库的技术 | 专为olap所设计 |
响应速度比molap慢:现有关系型数据库已经对olap做了很多优化,包括并行存储、并行查询、并行数据管理、基于成本的查询优化、位图索引、sql 的olap扩展(cube,rollup)等,性能有所提高 | 性能好、响应速度快 |
数据装载速度快 | 数据装载速度慢 |
存储空间耗费小,维数没有限制 | 需要进行预计算,可能导致数据爆炸,维数有限;无法支持维的动态变化 |
借用rdbms存储数据,没有文件大小限制 | 受操作系统平台中文件大小的限制,难以达到tb 级(只能10~20g) |
可以通过结构化查询语言(sql)实现详细数据与概要数据的存储 | 缺乏数据模型和数据访问的标准 |
不支持有关预计算的读写操作:sql无法完成部分计算;无法完成多行的计算;无法完成维之间的计算 | 支持高性能的决策支持计算:复杂的跨维计算;多用户的读写操作;行级的计算 |
维护困难 | 管理简便 |