基于销售系统的联机分析处理设计
来源:岁月联盟
时间:2010-08-30
1 OLAP概述
1993年,E.F.Codd提出了多维数据库和多维分析的概念,即OLAP[3][4] [5]。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。1.1 OLAP技术的特性
(1)快速性:用户对OLAP的快速反应能力有很高的要求。 (2)可分析性:OLAP系统应能处理与应用有关的任何逻辑分析和统计分析。 (3)多维性:多维性是OLAP的关键属性。系统必须提供对数据的多维视图和分析,包括对层次维和多重层次维的完全支持。 (4)信息性:不论数据量有多大,也不管数据存储在何处,OLAP系统应能及时获得信息,并且管理大容量信息。1.2 OLAP的分类
按照存储方式可分为三类:ROLAP、MOLAP、HOLAP;按照地理位置可分为两类:Sever OLAP、Client OLAP。 下面主要介绍一下按照存储方式所分的三类。主流的数据组织方式有3种:基于关系型数据库的;基于多维数据库的;基于关系型数据库与多维数据库的混合方式。针对不同的数据组织方式这些OLAP技术相应的称为ROLAP(基于关系型数据库的)、MOLAP(基于多维数据库的)、HOLAP(基于关系型数据库与多维数据库的)。1.2.1 ROLAP ROLAP(Relational OLAP)表示基于的数据存储在传统的关系型数据库中。每一个ROLAP分析模型基于关系型数据库中一些相关的表。这些相关的表中有反映观察角度的维度表,有含有指标值的事实表,这些表在关系型数据库中通过外键相互关联,典型的组织模型有星型模型与雪花型模型。1.2.2 MOLAP MOLAP(Multidimensional OLAP)表示基于的数据存储在多维数据库中。多维数据库有时也称数据立方体。多维数据库可以用一个多维数组表示。举例来说:包含时间维度、地区维度、品牌维度、销售指标的数据模型通过多维数据集合可表示成(时间维度、地区维度、品牌维度、销售指标)。通过这种方式表示数据可以极大提高查询的性能。表一给出了ROLAP和MOLAP的比较。1.2.3 HOLAP HOLAP表示基于的数据存储是混合模式的(Hybrid OLAP)。ROLAP查询性能较MOLAP差,存储却较MOLAP节省。这两种方式的OLAP技术各有利弊,为了同时兼有MOLAP与ROLAP的优点,提出一种HOLAP将数据存储混合,粒度较大的高层数据存储在多维数据库中,粒度较小的细节层数据存储在关系型数据库中。这种HOLAP具有更好的灵活性[2]。 表1 ROLAP与MOLAP的比较MOLAP | ROLAP | |
查询性能 | 查询响应速度快 | 响应速度较快 |
分析能力 | 在支持时间连续的分析或静态分析时优势明显 | 因SQL制约而带来一些分析上的障碍 |
数据存储 | 基于多维数据库,容量小 | 基于关系数据库,容量大 |
数据存取 | 利用多维查询语言 | 利用关系表,用SQL实现 |
灵活行 | 使用过程中很难修改,不灵活 | 在使用时可修改可迅速满足用户要求 |
2 OLAP系统的开发技术
2.1 DTS包
许多的组织都需要将他们的数据集中起来以提高决策的合作程度,然而他们的数据可能以不同的格式存储在不同的地方。数据转换服务(DTS)提供了一系列的工具管理这些重要的信息。它可以把不同的数据来源中的数据结合起来,并利用自身的数据转换功能,把这些结合后的数据放入数据仓库之中[4]。 在使用DTS进行数据转换或者是将数据导入导出到数据仓库中时,必须考虑以下四个过程,如图1所示。2.2 MDX
MDX是OLAP多维立方体查询语言,在功能上类似于关系数据库查询语言SQL,是OLAP服务器与外界交互的专用语言主要语法如下:SELECT <SET> [<dimension_properties>] ON <axis_name>FROM <CUBE_NAME>WHERE (slicer_specification )<axis_name>被定义成:
2.3 Analysis Services
Analysis Services是用于OLAP和数据挖掘的中层服务器,可以构造用于分析数据的多维数据集,同时还提供对多维数据集信息的快速客户端访问。它将数据仓库中的数据组织成包含预先聚合数据的多维数据集,为复杂的分析查询提供快速解答,用其可以在多维和关系数据源中创建数据挖掘模型,还可以对这两类数据应用数据挖掘模型。 Analysis Services这个产品可以独立于SQL Services在其他系统上运行。它提供了一个功能强大的OLAP环境,这些功能包括: ⑴ 一个多维数据库引擎,可以通过只读或读写接口使用Multidimensional Expressions(多维表达式,简称为MDX)来存储和访问数据。 ⑵ 一个可扩展的管理工具,Analysis Manage(分析管理器),它提供了一个基于MMC的用户接口,可以完成相应的管理功能,包括创建和编辑多维数据集、维度和度量。 ⑶ 一个称为Decision Support Objects(决策支持对象,简称DSO)的COM的组件库,可以通过编程的方式实现对管理层的访问(甚至更多)。 ⑷ 一个PivotTable(数据透视表)服务使其他支持用于OLAP的OLE DB应用程序能够存储并访问处于本地的OLAP多维数据集[4]。3 OLAP系统的设计
本系统在逻辑结构上采用了三层C/S模式,即数据仓库层、OLAP引擎层和前端应用程序层,如图2所示。三层模式把工程项目(Project)划分为三部分服务:用户、事务、数据。用户服务是与用户应用程序通信有关的一切服务,通常是用户接口。事务服务包含事务逻辑,并通常组成事务对象。将三者分开可以增加系统的可重用性,事务服务组件可以重复利用。这样系统从底层数据库中获取数据存储到数据仓库中。OLAP服务器从数据仓库中抽取数据,提供给客户端使用,相关人员利用前端PC机上的客户软件,通过局域网访问数据仓库上的数据。
4 OLAP系统的实现
一个完整的OLAP分析系统由以下几部分组成:提取、清洗数据组成数据仓库;根据需求利用OLAP引擎建立相应的OLAP立方体(也叫主题);使用前端开发工具访问立方体包含的对象和集合。4.1 数据仓库层的详细设计
4.1.1 数据准备 本系统是基于一个小型的钢筋销售的数据作为源数据的。它通过一定的供应商提供不同型号的钢筋,然后在卖给不同的客户。因此,在数据库中共有8个表,分别是Order定单信息,Order Details定单明细信息,Customer客户信息, Products产品信息, Categories产品类别信息Shipper发货信息,Supplies供应商信息,Employees员工信息。 4.1.2 建立NW_Mart数据仓库 设计一个多维模型的四大步骤,如下: ⑴ 定义OLAP的数据集市:包括使用星型模式或雪花模式。 ⑵ 事实的选择:通过事实表的共有特性及四种常见样式来选择适当的事实种类。 ⑶ 维的创建:需了解维的共同特性、维分层结构以及当维数据有变化时的解决方式。 ⑷ 聚合体的设计:聚合体(Aggregation)为维复杂的查询提供了一个预先好的汇总来提高分析速度。 在建立数据仓库的过程中,以Order及Order Details两个表的连接作为事实表的主轴,并建立NW_Mart的五个维表:Time_Dim、Customerv_Dim、Products_Dim、Employee_Dim及Shipper_Dim,它们各自都增加一个唯一值的代理键,并采用标识(Identity),如此可避免数据重复及Null的问题。 下图给出了NW_Mart的星型结构示意图。
4.2 OLAP引擎层及前台的详细设计
在本系统的实现过程中,通过使用微软的Excel中的透视表服务功能来创建本地立方体文件,使我们能够在OLAP服务出现异常的时候也能够实现对数据的分析,同时也可以用第三方控件来建立本地多维数据集。 创建本地多维数据集最简单的方法就是使用OLAP Cube Wizard。它是作为Office 2000组成部分的Microsoft Excel的一个组件。利用Excel中的连接外部数据源技术与分析服务器连接,在根据向导中的提示选择数据源、选择立方体、针对某个立方体选择维度和度量值(可以选择其中的一部分也可以全选)。通过以上几个主要的步骤后,即可创建本地多维数据集了。 对于前台的功能要求有以下几个方面:要能够连接后台数据库,将数据提取出来;要能够连接本地多维数据集,读取数据。然后对读取的数据进行分析处理,以得出相应的结论。对数据的处理包括:切片、切块(Dice)、下钻、上翻(Roll-up)和旋转(Rotate)等操作。同时也要能够给出数据的图表显示,以一种直观的方式将数据显示出来。下图就是前台显示数据的工作图。