联机分析处理(OLAP)技术的研究
喻钢 周定康 万方数据

1 引 言

    随着计算机技术的飞速发展和企业界不断提出新的需求,数据仓库技术应运而生传统的数据库技术工单的数据资源,即以数锯库为中心,进行事务处理、批处理到决策分析等各种类型的数据处理工作。近年来,随着计算机应用的发展网络计算开始向两个不同的方向拓展,一是广度计算,一是深度计算。广度计算的含义是把计算机的应用范围尽量扩大,同时实现广泛的数据交流,互联网就是广度计算的特征;另一方面就是人们对以往计算机的简单数据操作提出了更高的要求,希望计算机能够更多地参与数据分析与决策制定等领域,特别是数据库处理可以大致地划分为两大类:操作型处理和分析型处理(或信息型处理)。这种分离划清了数据处理的分析型环境与操作型环境之间的界限,从而由原来钓以单一数据库为中心的数据环境发展为一种新环境:体系化环境,而基于数据仓库技术上的联机分析处理(OLAP,On-Line Analytical Processing)技术就是其中一个关键的技术。

    联机分析处理的概念最早是由关系数据库之父E.F.Codd于1993年提出的。当时,Codd认为联机事务处理(OLTP)已不能满足终端用户对数据库查询分析的需要,SQL对大数据库进行的简单查询也不能满足用户分析的需求,用户的决策分折需要对关系数据库进行大量计算才能得到结果,而查询的结果并不能满足决策者提出的需求,因此Codd提出了多维数据库和多维分析的概念,即OLAP。

    根据OLAP产品的实际应用情况和用户对OLAP产品的需求,人们提出了一种对OLAP更简单明确的定义,即共享多维信息的快速分析,OLAP主要有以下一些特点:

    快速性  用户对OLAP的快速反应能力有很高的要求,系统应能在5秒内对用户的大部分分析要求做出反应,这也是OLAP的一个显著的特点。

    可分析性  OLAP系统应能处理与应用有关的任何逻辑分析和统计分析,用户无需编程就可以定义新的专门计算,将其作为分析的一部分,并以用户理想的方式给出报告。用户了以在OLAP平台上进行数据分析,也可以连接到其他外部分析工具上,如时间序列分析工具、成本分配工具、意外报警、数据开采等。

    多维性  多维性是OLAP的关键属性,系统必须提供对数据分析的多维视图和分析,包括对层次维和多重层次维的完全支持。事实上,多维分析是分析企业数据最有效的方法,是OLAP的灵魂。

    信息性  不论数据量有多大,也不管数据存储在何处,OLAP系统应能及时获得信息,并且管理大容量信息,这里有许多因素需要考虑,如数据的可复制性、可利用的磁盘空间、OLAP产品的性能及与数据仓库的结合度等。

    共享性  在大量的用户群中共享潜在的数据是实现安全需求的需要。

2 OLAP的基本概念和术语

    2.1 OLAP数据模型(OLAP Data Model)

    在一个OLAP数据模型中,信息被抽象视为一个立方体(Cube),它包括维(Dimenmion)和度量(Measure),这个多维的数据模型使终端用户提交的复杂查询、报表数据的分类排列、概要数据向详细数据的转化和过滤、数据的切片等工作变得简单。多维结构是决策支持的支柱,也是OLAP的核心,OLAP展现在用户面前的是一幅幅多维视图。

    2.2 维和度量

    维是相同类数据的集合,也可以理解为变量。假定某个百货零售商,有一些因素会影响他的销售业务、如商品、时间、商店或流通渠道,更具体一点,如品牌、月份、地区等。对某一给定的商品,也许他想知道该商品在各商店和各段时间的销售情况。对某一商店,也许他想知道各商品在各段时间的销售情况。在某一时间,也许他想知道各商店各产品的销售情况。因此,他需要决策支持来帮助制定消售政策,这里,商店、时间和产品都是维。各个商店的集合是一维,时间的集合是一维,商品的集合是一维。维有自己固有的属性,如层次结构(对数据进行聚合分析时要用到)、排序(定义变量时要用到)和计算逻辑(是基于矩阵的算法,可有效地指定规则),这些属性对进行决策支持是非常有用的。

    度量是一个定量值。假定在一个含有销售信息的立方体中,典型的度觉应该包含悄售总额、商品单价、商品库存、支出、收入等数值。

    2.3 活动数据的存储

    用户对某个应用所提取的数据称为活动数据,它的存储有以下三种形式:

    关系数据库  如果数据来源于关系数据库,则活动数据被存储在关系数据库中,在大部分情况下,数据以星型结构或雪花结构进行存储。

    多维数据库  在这种情况下,活动数据被存储在服务器上的多维数据库中,包括来自关系数据库和终端用户的数据。通常数据库存储在硬盘上,但为了获得更高的性能,某些产品允许多维数据结构存储在RAM上。有些数据被提前计算,计算结果以数组形式进行存储。

    基于客户的文件  在这种情况下,可以提取相对少的数据放在客户机的文件上,这些数据可预先建立,如Web文件。与服务器上的多维数据库一样,活动数据可放在磁盘或RAM上,这三种存储形式有不同的性能,其中关系数据库的处理速度大大低于其他两种。

    2.4 OLAP数据的处理方式

    OLAP有三种数据处理方法,事实上,多维数据计算不需要在数据存储位置上进行。

    关系数据库  即使活动的OLAP数据存储在关系数据库中,采用在关系数据库上完成复杂的多维计算也不是较好的选择。因为SQL的单语句并不具备完成多维计算的能力,要获得即使是最普通的多维计算功能也需要多重SQL。在许多情况下,一些OLAP工具用SQL做一些计算,然后将计算结果作为多维引擎输入。多维引擎在客户机或中层服务器上做大部分的计算工作,这样就可以利用RAM来存储数据,提高响应速度。

    多维服务引擎  大部分OLAP应用在多维服务引擎上完成多维计算,并且具有良好的性能。因为这种方式可以同时优化引擎和数据库,而服务器上充分的内存为有效地计算大量数组提供了保证。

    客户机  在客户机仁进行计算,要求用户具备性能良好的PC机,以此完成部分或大部分的多维计算。对于日益增多的瘦型客户机,OLAP产品将把基于客户机的处理移到新的Web应用服务器上。

    2.5 OLAP的分类

    OLAP技术发展到今天,OLAP产品可以依据数据存储的数据库管理系统(DBMS)分为:MOLAP、ROLAP、HOLAP。

    MOLAP产品计算速度快但支持的数据容量小。MOLAP是指OLAP数据存储在多维数据库上,从概念上讲是将数据存储在多维数组的单元中,例如可以把一个销售系统中的数据视为一个三维数组,分别对应于产品、顾客和时期,各单元中的值表示在相应的时期内出售的相应产品的数量。MOLAP的物理存储方式称其逻辑组织是十分相似的,而且此类产品中还会提供大量的统计和数学函数、可视化工具和报表生成工具,不过此类声品尚在发展中,目前还没有多维查询语言的标准,同时多维数据库也没有类似规范化的科学理论基础。

    ROLAP产品支持更成熟的可缩放性、并发控制和管理控制。ROLAP是指OLAP数据存储在传统的SQL数据库,即关系数据库中。目前此类产品是三种中最成熟的,因为它本身有一套完备的关系数据库理论作为基础,使它可以通过二维的关系表来创建多维视图,而且提供强大的SQL查询工具来支待复杂的多维分析。

    HOLAP产品是最近发展起来的一种解决方案,它将MOLAP和ROLAP的优点融合在一起。它在关系数据库上维护大量的详细的记录,具有优越的执行速度和广泛的扩展性。

    现在用户常用的OLAP产品是Informix公司、DB2公司、Oracle公司、Microsoft公司等几家的。下面以Microsoft公司的OLAP Services产品为例介绍OLAP技术在实际产品中的应用。
3 SQL Server 7.0的OLAP Senvices

 

    3.1 体系结构

    SQL Sever 7.0提供的OLAP Senvices是SQL Sever 7.0的一个组件,它的目的是当用户对数据库里的数据进行查询时,给出一个迅速的应答。对于这些查询操作,尤其是那些为了获得总结性信息的查询,可以采用一些方法提供决速的访闷应答。这些方法包括汇总信息的预运算(简称为集合),以及将汇总信息存储在数据结构里供用户使用,OLAP Senvices支持CUBE结构的多维数据结构以及在该结构中使用的一种简便导航语言,这两种特性与其他支持性服务、向导和对象模型结合构成了OLAP环境(见图1)。
 

 
OLAP Senver的OLAP Senvices包括服务端和客户端。服务端具有可以创建和管理OLAP数据,通过透视表(PivotTable)向客户端提供数据的能力。它的操作包括从基于关系数据库的数据仓斤中创建多维数据立方体和将其存储到多维立方体结构、关系数据库和两者的结合中。多维立方体结构中的元数据被存放在关系数据库的存储单元中。客户端中关键的部分是透视表服务(PivotTable Service),通过它可以和OLAP Senver相联,为用户的客户端应用程序提供一个接口从服务端获取OLAP数据。

    3.2 具体应用

    在实际的应用中,OLAP Services包括很多方面的内容,而本人认为透视表的应用有着很重要的意义,所以本部分只介绍透视表的简单应用(透视表的体系结构见图2)。
 

 

 
 
图2 透视表的体系结构


    PivotTable Services在SQL Server的OLAP Services环境中扮演着双重角色首先它是一个OLE DB提供者,这使得客户机应用怪序能与一个OLAP服务器通信,此时它相当于OLAP服务器的一个客户。同时,PivotTable Services能作为一个独立的在线桌面OLAP服务器,提供在线和本地数据分析,并能访问OLAP数据。透视表服务可以创建本地的CUBE文件,该文件所包含的数据来源于服务端或关系数据库。本地的CUBE文件可以作为多维CUBE文件存储在客户机上。

    同基于服务器的立方体结构不同本地立方体结构仅仅提供两种存储方式:MOLAP和ROLAP。如果你创建一个MOLAP本地立方体结构,所有成员和度量数据都被局部地存储在立方体结构中,当这些立方体结构与一个OLAP服务器称数据源断开连接时,它们仍然可以被分析。如果选择的是ROLAP存储方式,维成员被存储在立方体结构中,但是度量数据却被存放在数据源中,因此查询本地ROLAP立方体结构要与其数据源建立连接,所以MOLAP的查询性能要更强。本地立方体结构和基于服务器的立方体结构的另一个不同之处在于对本地立方体的查询不是多线程的,而且不包含集合设计。另外程序员在用户接口应用程序中可以使用C++的OLE DB接口,VB的ADO对象模型和PivotTable连接来浏览OLAP数据,在完成这部分的工作时我们会用到一个或多个MDX查询函数,使用这些函数可以从立方体数据结构(CUBE)或虚拟立方体数据结构(VIRTUAL CUBE)中访间所需的数据多维表达式(MDX)是由OLE DB为OLAP定义的一种语言,用来处理多维数据存储。

    在这里只给出了PivatTable Services的两个简单但常用的功能,它的功能远不止这些,如果能充分利用它的话,我们所设计的OLAP服务的功能将是非常强大的。
 

 

 

CIO之家 www.ciozj.com 公众号:imciow
关联的文档
也许您喜欢