(经网上资料整理后)
OLAP(在线分析处理)这个名词是在1993年由E.F.Codd提出来的。OLAP专门用于支持复杂的分析操作,侧重对决策人员和高层管理人员的决策支持,可以应分析人员要求快速、灵活地进行大数据量的复杂查询处理,并且以一种直观易懂的形式将查询结果提供决策人员。
1993年,E.F.Codd 将这类技术定义为OLAP。鉴于Codd 关系数据库之父的影响。OLAP 的提出引起了很大反响,OLAP作为一类产品同OLTP明显区别开来。
Codd提出OLAP的12条准则来描述OLAP系统:
* 准则1 OLAP模型必须提供多维概念视图
* 准则2 透明性准则
* 准则3 存取能力推测
* 准则4 稳定的报表能力
* 准则5 客户/服务器体系结构
* 准则6 维的等同性准则
* 准则7 动态的稀疏矩阵处理准则
* 准则8 多用户支持能力准则
* 准则9 非受限的跨维操作
* 准则10 直观的数据操纵
* 准则11 灵活的报表生成
* 准则12 不受限的维与聚集层次
OLAP产品不少,本文将主要涉及Cognos(Powerplay)、Hyperion (Essbase)、微软(Analysis Service)以及MicroStrategy几大厂商的产品。
单纯从成本角度考虑,微软的产品算是最能节省成本的,Cognos和MicroStrategy则在同一水平线,都比微软贵一些。而Hyperion (Essbase)产品比较独立,也曾占有美国OLAP市场最大的份额,其产品价格又要更高一些。
从市场份额来看,就国外的市场报告分析,微软、Cognos、Hyerion三家占据主流。在国内,目前还没有权威的市场报告,如果仅从所接触到的项目来看的话,用Cognos的很多,买Essbase的也不少。这些年都是一些大企业建设BI项目,有足够的预算,多选用Cognos、Essbase;而Microstrategy,进入中国不算早,这几年在政府、金融行业也颇有建树。
若论开发应用,微软的产品向来以友好的用户界面著称,上手迅速。在OLAP产品上,微软依然发扬了这一优良传统,并有进一步标准化的趋势,开发了OLE DB for OLAP以及MDX(Multi-Dimensional Express多维表达式);参与XMLA(XML for Analysis)规范制定,也是想作为OLAP服务器和前端分析应用的数据传输标准。
而Cognos以桌面OLAP开始,一直以轻便、快捷的操作闻名。所谓桌面OLAP,是可以用客户端将cube下载到本地进行访问。虽然Poweplay早已演变成C/S结构的OLAP服务器,但其轻便的特点还是延续下来,而且提供可以简洁部署且具有交互性的PowerPlay Web Explorer界面。从互联网上,我们可以很快搜索出许多基于PowerPlay Web的分析应用。
Essbase作为老牌的OLAP服务器,是一个比较复杂的产品。所谓复杂,有两层意思,一是提供了丰富的API,让你可以充分定制开发;二是开发的难度较大,部署起来不容易。这也是国内很多用户难以将这个产品用好的一大原因。
比较Essbase和Powerplay,会发现截然相反的两个特点:Essbase的复杂和Powerplay的简洁。对于这两者,单独说哪一种更好都不够客观,因为当你抱怨Essbase繁杂的接口时,也有人在抱怨Powerplay的定制功能怎么如此之少。这种情形其实跟这两种产品的定位有关,Essbase比较专注于高性能的多维存储服务,而Powerplay则更专注于快捷的多维访问。换句话讲,Essbase之于Powerplay正像专业相机之于傻瓜相机,在选哪一个更好的问题上,不同的人肯定有不一样的答案。
当然,如果你想在找复杂和简洁之间找一个中间者,我想微软的 Analysis Service就是这样的产品。不过要注意的是,这个产品和SQL Server绑定得比较紧,这是微软的一贯策略。
根据多维数据存储的位置,OLAP一般分为MOLAP(Multi-Dimensional OLAP)和ROLAP(Relational OLAP)两种,此外,还有混合的HOLAP(Hybrid OLAP)。rolap 中的r是relational的意思,使用关系数据库RDBMS,所以性能的更多是靠RDBMS的性能和技巧,ROLAP支持更多的用户和数据量,ROLAP将多维数据库的多维结构划分为两类表:一类是事实表,用来存储数据和维关键字(外键);另一类是维表,每个维至少使用一个表来存放维的层次,所谓的'"星型模式"就是指维表和事实表通过主关键字和外关键字联系在一起。对于层次复杂的维,为避免冗余数据占用过大的存储空间,可以使用多个表来描述, 这种星型模式的扩展称为“雪花模式”。
rolap和molap的比较:
rolap使用现有的RDBMS,相对容易建模和控制。相应速度比MOLAP慢,数据装载的速度快,储存空间小,没有文件大小的限制,数据库可以做很多优化.
molap性能好,反映速度快,但是建模的难度很大,而且无法支持维度的动态变化,文件大小有限制,没有象关系型数据库那样有标准的访问接口比如JDBC,ODBC之类的。
HOLAP 是混合OLAP。
DOLAP 是 Desktop的OLAP , 应用不是很广,了解一下就够了。
其中, Cognos的Powerplay、Hyperion 的Essbase和微软的Analysis Service这些产品都是MOLAP产品。这类产品将数据从关系数据库(甚至是文本文件、Excel文件)中抽取出来,存储在自己的数据库中。这种数据库跟平常我们所见的Oracle、DB2这类关系数据库不同之处在于,它是专有格式的,且没有标准的访问接口。因此,这些产品如何实现多维存储也都不尽相同,大致的原理是以编程语言中多维数组的方式存放数据。度量值存放在数组的单元格中,而数组每个维就对应一个维度,其中,维元素就维的坐标。
可以想象,多维数据库的单元格跟维度、维元素的多少有莫大关系,而随着维度增加,数据库也迅速膨胀。因此,对于MLOAP产品,多维存储的存储空间、性能自然是比较关键的。Essbase在这方面提供很多优化工作,但有时候也会显得过于复杂。Powerplay也提供某些选项,诸如cube分区等,这是比较简单的优化方法。
OLAP产品的核心功能是提供多维存储,另外就是能够将OLAP访问操作转换为对数据的请求并返回,这些OLAP访问操作大多是用户通过前端发出的,因此要考虑OLAP产品能够和哪些前端工具对接。
Cognos Powerplay是个相对封闭的产品,它有自己的客户端和Web Explorer,你也甭想着用其他前端来访问它。Hyperion和微软都采用开放式接口,提供丰富的访问API,第三方可以用这些API访问其数据库。上文曾提到微软开发的MDX和参与的XMLA(XML for Analysis)规范,事实上,一些第三方的前端工具正是基于这样的标准和OLAP产品对接,比如可以用BO WebI连接Essbase。更有甚者,微软的服务器还提供用MDX来查询多维数据,就像用SQL来访问关系数据库一样。
诚然,这看起来的确比较酷,但有一点也要明确:目前虽然有XMLA、MDX这样的标准,但还不是非常成熟,且并非唯一标准。所以即使有第三方前端工具访问这些OLAP服务器,但只能说是多了一些选择,真正在前端功能上,并不能保证比封闭结构更丰富。
如果说OLAP产品市场几乎都被MOLAP占领,那么,有一家公司肯定不同意,那就是MicroStrategy,它几乎是目前唯一一家还占据一定市场份额的ROLAP产品。这是一件非常奇怪的事情,从第一个ROLAP产品Metaphor到Metacube、WhiteLight、MicroStrategy,这些独立的ROLAP厂商似乎都是难以生存下去,只有MicroStrategy坚挺到现在。究竟是它的产品厉害,还是市场做得到位?目前还不得而知。
从原理上讲,ROLAP将数据存放在关系数据库中,当然要求关系模型要非常严格,比如要遵循星型模式或雪花模式,才能定义出维度、度量、事实表、聚集表等元数据。但这样就增加了部署的难度,并且如果聚集表构建得不好,最后的访问性能就难以保证。恐怕这也是ROLAP难以生存下去的原因吧。
目前,很多OLAP产品都会混合MOLAP和ROLAP,特别是那些本身就做关系数据库的厂商,在现有数据库上面增加一些ROLAP的特性并不困难。IBM在与Essbase终止OEM合同之后,推出一个名为CubeViews的产品,就可以说是一个ROLAP产品。
虽然国内市场上已经涌现出这么多产品,但实际上,OLAP并没有被广泛接受,即使在已经建设BI系统好几年的电信行业也是如此。