摘 要: 本文提出了一种基于数据仓库的联机分析处理系统的解决方案,重点介绍了数据仓库的设计方法和联机分析处理方法。
关键词: 数据仓库 联机分析处理 决策支持系统 装备采购
我军的装备采购体系中存在着各种业务信息,随着时间的推移,这些业务系统积累了大量甚至是海量的业务数据。如何充分利用这些数据,为高层领导者提供辅助决策是当前所面临的问题。长期以来,军械装备采购决策一直沿用以手工为主的传统方法。这种方法周期长、费用高、投入人力多、效率低,人为因素占很大比例,已不能适应新形势的要求。因此,建立装备采购决策支持系统对于提高装备采购决策的科学性、实现我军装备保障信息化是相当必要的。装备采购联机分析处理系统作为决策支持系统的一部分,提供了一个多维的联机分析统计环境,具有分析预测形象、直观、效果好的优点。
1 数据仓库和联机分析处理技术
传统的数据库主要用于事务处理,通常对一个或一组数据完成增加、删除、修改、查询和一些基本统计操作,主要用于支持特定的应用服务,也称为操作型处理,侧重于响应时间、数据的安全性、一致性和完整性等方面。尽管在联机事务处理(On-Line Transaction Processing,OLTP)方面的应用获得了巨大的成功,但它对分析处理的支持一直不能令人满意。随着社会的进步和技术的发展,人们不再仅仅满足于获取多种信息和简单的使用信息,而是希望在深层次上利用长期积累的历史信息为企业的决策提供帮助。
20世纪90年代初,W.H.Inmon在其著作《Building the Data Warehouse》中提出了数据仓库的概念。他认为数据仓库是面向主题的、集成的、稳定的、随时间变化的数据集合,用来支持管理决策。数据仓库中包含大量数据,这些数据可能来自企业或组织内部,也可能来自外部。这些数据组织为数据仓库的目的是为了能够更好地支持决策。目前,数据仓库在银行、股票、保险、电信、航空、医疗保健、零售及制造等领域都有应用。
联机分析处理(On-Line Analytical Processing,OLAP)是专门为特殊的数据存取和分析而设计的技术。它能够实现数据仓库基础上的多维数据分析。通过创建用于分析的多维数据集,进一步采用切片、切块、下钻、上翻及旋转等多维分析操作,帮助用户发现不同侧面、不同层次上的有用信息,从而使用户更加直观地理解和分析数据。
目前,许多数据库厂商都推出了自己的数据仓库产品。本文采用的是Informix公司的Red Brick,它是为数据仓库和联机分析处理应用程序设计的关系数据库管理系统(Relational Database Management System,RDBMS)。该产品能够快速地装入和检索数据,特别是它的自动聚集对前台应用程序的开发是全透明的,极大地提高了常规分析的响应时间。另外,在众多的OLAP分析工具中,本文选择了Informix公司的MetaCube,它采用星型模式,为用户现有的关系数据库提供一个直观的多维视图,而无需专用多维数据库。Metacube具有如下的技术特点:(1)易扩展性。Metacube的元数据及计算中间表结构简单清晰,方便数据仓库的扩展;(2)开放性。Metacube在数据仓库的各个部分都是开放的,包括RDBMS服务器、客户端应用开发工具、随机查询工具和报表生成工具。另外,用户可以用自己喜欢的开发环境(如VB、VC、PB等)或前端应用(Microsoft Word、Microsoft Excel等)作为数据仓库的前端平台;(3)具有强有力的查询优化功能,可以最大限度地提高效率。
2 系统设计
2.1 系统的总体框架
数据仓库为联机分析处理和决策支持提供了有效的数据存储和处理环境。通过对事务数据库的数据和外部数据的抽取、净化和转换,形成面向全局的数据视图,同时也解决了数据不统一的问题。前端的联机分析(OLAP)工具对这些数据进行分析处理。基于数据仓库的装备采购联机分析处理系统的总体框架如图1所示。
2.2 数据仓库设计
下面介绍数据仓库设计的步骤。
(1)确定用户需求。我军的装备采购业务系统积累了大量的历史数据,这些数据主要包括采购时间、装备名称、生产厂家、用途、采购经费、采购数量、采购价格等。如何对其进行分析研究,从而得出内在规律是一个相当重要的问题。为此,本文确定了装备购置费研究、装备采购量研究、装备采购价格研究和生产厂家分布规律研究等主题。
(2)逻辑设计。数据模型是数据仓库的核心问题之一。传统的数据模型(如实体模型和关系模型)不能有效地表示数据仓库中的数据结构和语义,也难以支持OLAP应用。而多维数据模型和多维建模技术的提出解决了上述问题。在多维数据模型中存在维度表和事实表二类数据表。其中维度表存放的是该维各层次的对照关系数据和各层次的描述信息;事实表存放的是量度和对应各维的维码信息。量度可分为存储量度和计算量度:存储量度在数据仓库表中有实际的字段存放数据;而计算量度在数据仓库中没有相应的字段,而是在SQL查询语句中通过聚集函数获得。
本文设计多维数据模型的主要步骤是:①确定事实表和维度表;②设计事实表;③设计维度表。
多维数据模型有二种最基本的结构:星型结构和雪花结构。图2所示为本系统数据仓库的雪花模型。
(3)物理设计。在确定了雪花模型后,需要将逻辑模型变成物理模型。物理模型建立数据仓库存储与备份、分段、检索、聚集策略等。由于数据仓库中存放着大量甚至海量的数据,为适应对这些数据处理的要求,现将性能优化的一些关键技术做简要的介绍:
索引:索引主要用于优化查询性能,对于数据装入的参照完整性检查阶段也相当重要。Red Brick包括B型树索引、TARGETindex和STARindex三种不同类型的索引。在Red Brick Decision Server数据库中生成表格时(基础表和临时表),如果表格定义了关键字,则关键字自动生成B树索引。TARGETindex是Red Brick Decision Server中的位图或位向量索引。这些类型的索引有二种用途:弱选择性维度列和事实表中的TARGETjion处理。STARindex是建立在事实表的外部关键字之上的惟一多列索引结构。
对于事实表来说,应该为它的所有外键建立TARGETindex,并要建立至少包含所有外键的STARindex。如果一个TARGETindex包含惟一标识每个事实行所需的列,则可以删除主关键字索引。如果不删除,则应使其尽量小。
对于维表来说,不要删除主关键字的B树索引。对每个外部关键字列生成B树索引对维度中作为悬臂表外部关键字的列应当检查,对查询中经常限制的列生成TARGETindex与树索引。
分段:分段是个数据管理工具,合理的分段有助于查询性能的改进。数据库越大,分段提供的好处就越大。段的类型有二种,即默认段和命名段,二者各有不同的功能。可以按连接某个事实表的任意维度的主关键字将数据仓库分段,大多数仓库按某种时间定义分段,例如日、周、月、季、年等。
聚集:决策支持查询中最常见的操作之一是计算聚集汇总,如果没有聚集,则这些查询需要读取成千上万行数据才能计算和组合结果,查询运行时,将需较长时间等待结果。例如,如果要按年度求客户的总销售额,则可能要读取几亿行细节才能得到结果。运行读取大量细节行的查询时,最快的方法是根本不运行它,而是对小表运行同一查询。这个小表中已经有需要的信息(SUM、AVG、MIN、MAX之类的聚集),只要读取几行就可以了。对聚集表运行查询具有更高效率。Red Brick Decision Server用独特的方法处理聚集:Vista子系统自动、透明地改写包含聚集函数的查询,提供另一类索引,在决策支持环境中提高偶发查询性能。
2.3 数据的抽取、净化、装入
数据的抽取、净化、装入的过程如下:
(1)从业务数据中抽取数据。首先,确保所抽取的数据适用于当前的业务问题,避免抽取那些对做决策没有作用的数据。然后,把数据拷贝到一个中间数据库或者通过做一个简单的应用程序,把数据保存在其他文件中(例如文本文件、Word文件、Excel文件等)。
(2)净化数据。数据净化主要考虑以下三个方面:①确保所有值准确有效;②所有列中都具有有意义的值,没有缺失值;③每一行都保持参照完整性。
(3)装入数据。Red Brick Decision Server数据库从外部装入数据,应首先装入维表,然后再装入事实表。它提供的TMU实用程序能够快速地装入数据,具有良好的性能。TMU由指定输入与输出操作的控制脚本驱动。通过命令行调用TMU时,控制脚本作为命令行参数提供,TMU读取这个脚本,然后完成必要的工作。
例如:执行命令
rb_tmu -d <db_name> <control_filename> <username>
<password>
控制文件 Example.TMU 格式为:
load data
inputfile ′/apps/redbrick/sample_input/aroma_class.txt′
replace
format separated by ′!′
discardfile′/classn/stunnn/class.discards′
discards 10
into table class (
classkey integer external(2),classkey integer external,
class_type char(12),type character,
class_desc char(60) description character)……);
其中aroma_class.txt为之前抽取的数据文件。
Red Brick Decision Server的装入器有二个版本:串行(TMU)和并行(PTMU)。并行装入器主要用于多个CPU的装入和联机装入,并行装入比串行装入速度快。
2.4 多维联机分析设计
多维数据的联机分析处理就是从不同的角度和层次查询满足分析需求的数据。OLAP分析的基本操作动作有:切片、切块、旋转和钻取。如图3所示为“时间、装备、厂家”的三维立方体,可以在上面完成上述操作。
(1)切片。切片就是在多维模型的某一维上选定一维成员。例如在厂家维上选择一个维成员(设为“厂家1”),就得到了厂家维上的一个切片。这个切片表示厂家1每年生产各种装备的情况。
(2)切块。切块可以看成是在切片的基础上,进一步确定各个维成员的区间得到的片段体,即由多个切片叠合起来。例如在时间维上设定一个区间(例如取“1990年至2000年”)。
(3)旋转。旋转是改变维度的位置关系,使最终用户可以从多角度来观察数据。如将横向的时间维和厂家维进行交换,从而形成横向为部门、纵向为时间的报表。
(4)钻取。如果维度是有层次的,则可以采取钻取,包括向上钻取(roll up)和向下钻取(drill down)。roll up是在某一维上将低层次的细节数据概括到高层次的汇总数据,或者减少维数;而drill down则相反,它从汇总数据深入到细节数据进行观察 。例如装备维上可以从装备大类向装备中类钻取,装备中类再向装备小类钻取。
本文所采用的Metacube Explorer是为最终用户随机查询提供的决策支持产品。它具有界面友好、操作简单的特点,用户通过简单的拖—放操作即可完成数据库访问、报表生成、做统计图以及与已有的前端应用进行连接。
用户可以在Metacube Explorer中指定显示哪一维,可以在任意坐标轴上查看不同维、不同层次的信息或者数据仓库上的其他有关信息。它所生成的报表和统计图形象直观,便于用户进行对比、分析。其开放性可以使开发人员利用前端工具进行开发,以满足具体的要求。
3 系统开发
该系统采用C/S模式,服务器操作系统是Windows 2000 Server,客户端操作系统采用Windows 98、Windows 2000 Professional或Windows XP,中心数据仓库产品采用Informix Red Brick,OLAP分析工具为Informix Metacube,前端应用程序采用Visual Basic 6.0开发。
4 结束语
该系统是数据仓库技术在装备采购业务中的一个有益尝试,使原有的分析工作更加方便高效、形象直观。作为装备采购决策支持的一部分,该系统还需要进一步的设计和完善,在现有数据仓库的基础上,开发数据挖掘模块。随着系统的逐步完善,必将能够为我军装备采购决策人员提供科学的依据,从而推动我军装备采购决策现代化的进程。
参考文献
1 张维民.数据仓库原理与应用.北京:电子工业出版社,2002
2 Inmon W H著,王志海译.数据仓库.北京:机械工业出版社,2003
3 Robert J.Hocutt Informix/Red Brick数据仓库开发指南.北京:电子工业出版社,2001
4 李中华,张力军,郭颖.基于数据仓库的中国专利审查联机分析处理系统.计算机工程与应用,2003;(24)
5 曹钰,张文俊,郝娜等.数据仓库和联机分析处理技术在装备器材保障中的应用.计算机应用与软件,2004;(5)