第一章数据仓库和联机分析处理(OLAP)概述1.1数据仓库的概念及其特点“什么是数据仓库?”这恐怕是每一个刚刚开始接触数据仓库的技术人员都会提出的一个问题。有人认为数据仓库就是一个大的数据库,也有人认为数据仓库是一项数据管理和分析的技术。这些定义都从一定的侧面反映了数据仓库的概念,但并不全面。目前,业界公认的数据仓库定义是由数据仓库之父W.H.Inmon在《BuildingtheDataWarehouse》[7]一书中给出:“数据仓库是面向主题的、集成的、随时间变化的、稳定的数据集合,用以支持管理中的决策制定过程。”正如Inmon所描述的,数据仓库具有如下特点[6,7]:(1)数据仓库的数据是面向主题的与传统数据库面向应用进行数据组织的特点相对应,数据仓库中的数据是面向主题进行组织的。所谓主题,是指在较高层次上将企业信息系统中的数据综合、归类并进行分析利用的抽象。在逻辑意义上,它是对应企业中某一宏观分析领域所涉及的分析对象。(2)数据仓库的数据是集成的建立数据仓库的主要目的就是为用户提供易于访问的商业信息。为了减少用户查询的响应时间,应该把数据从数据源中提取出来,放到数据仓库中去。在数据进入数据仓库之前,必须经过加工和集成,使原始数据结构做一个从面向应用到面向主题的大转变。(3)数据仓库的数据是不可更新的数据仓库的数据主要供企业决策分析之用,所涉及的数据操作主要是数据查询,一般情况下并不进行修改操作。数据仓库的数据不可更新使得数据仓库管理系统DWMS相比数据库管理系统DBMS而言要简单得多,同时也使我们可以对数据仓库进行最大限度的性能优化。(4)数据仓库的数据是随时间不断变化的数据仓库中的数据不可更新是针对应用来说的,也就是说,数据仓库的用户进行分析处理时是不进行更新操作的。但并不是说,在从数据集成输入数据仓库开始到最终被删除的整个数据生存周期中,所有的数据仓库数据都是永远不变的。数据仓库会随时间的变化不断增加新的数据内容和删去过时的数据内容。当然,数据仓库通常还具有一些其它的特点,如数据仓库中的数据量很大、数据仓库对系统软硬件的要求较高等等。1.2数据集市数据仓库面向整个企业,不管是规模还是成本常常是巨大的。这时候,一种小型的、面向部门或工作组的数据仓库——数据集市就应运而生。不少人认为数据仓库就是数据集市的集合,这种观点是错误的,正如数据仓库之父Inmon在1998年所说:“你可以在大海中捕到很多的小鱼并堆积起来,但它们仍然不是鲸。”数据集市是指具有特定应用的小型数据仓库,它专注于特定的主题域、特定的部门或特定的业务需求,而数据仓库中存储的则是整个企业内非常详细的数据[5,6]。数据集市的结构通常比较简单,数据量也少,所以管理起来也比较容易。在一个企业中,可能存在多个数据集市,它们分别按照所属的部门业务分类来组织数据,这些数据集市可以位于同一物理平台上,也可以分布于不同的物理平台。而一个企业通常只有一个面向全局的数据仓库。数据集市有两种——独立的数据集市和从属的数据集市。独立的数据集市根据各自特定的业务范围直接到各数据源中提取相关数据,而从属的数据集市则需要一个中央的数据仓库来支持,这个中央数据仓库为所有的数据集市提供数据。1.3数据仓库与数据库的关系及比较传统的数据库作为数据管理的手段,主要面向一个或一组记录的查询和修改,为企业的特定应用服务,人们关心的是响应时间、数据的安全性和完整性。为此要求数据库提供完善的数据锁、事务日志和并发控制等机制,以便安全可靠地处理具体业务。数据仓库是在数据库基础之上发展起来的,数据仓库的作用就是为复杂的数据分析和高层决策提供支持。尽管现有的数据仓库大多还是采用传统的关系数据库或改进后的关系数据库来实现,但由于两者面向的应用截然不同,因此不管是在数据模型的设计上还是在数据的物理组织上都存在着相当大的差异,如表2.1所示[5,6,8]。表2.1数据仓库与数据库的对比表对比内容数据仓库数据库数据目标分析应用面向业务操作程序、重复处理数据内容历史的、综合的、提炼的数据当前细节数据数据特征相对稳定动态更新数据组织面向主题面向应用数据有效性代表历史的数据存取时准确访问特点分析驱动(访问路径灵活多变)事务驱动(访问路径相对固定)数据访问量一次操作数据量大一次操作数据量小使用频率中到低高响应时间要求数秒或数分钟以上秒级1.4决策支持系统与数据仓库在讨论联机分析处理(OLAP)之前,我们先回顾一下更广泛的决策支持系统(DSS)的产生和发展过程,这是因为OLAP作为DSS中一个得到广泛应用的部分,其产生和发展与DSS的发展有着密不可分的关系。1.4.1传统的决策支持系统决策支持系统是在管理信息系统和运筹学的基础上发展起来的,以支持用户的决策为目的的集成系统[5]。最初,人们认为决策支持系统可以作为一个人工智能系统,综合利用各种数据、信息、知识、特别是模型技术,以辅助各级决策者解决半结构化决策问题的人机交互系统。因此早在上个世纪八十年代,人们就提出了基于数据库、模型库和方法库的决策支持系统框架,如图2.1所示[9]。用户人机交互系统模型库管理系统方法库管理系统数据库管理系统模型库方法库数据库图2.1决策支持系统“三库”结构由于数据资源和分析工具的缺乏等原因,分析模型和算法的设计没有坚实的数据基础,而且对于系统的模型提炼和建立方法库的难度都超出了人们的设计能力。这时的决策支持系统,理论研究多于系统建设,概念方法的探讨多于实际工具的研制,未能达到人们预期的效果,只有少数系统取得了成功。进入上个世纪九十年代后,由于企业对数据库的广泛应用,企业的数据库积累了大量数据,而如何从这些数据中提炼出有效信息来指导企业的经营决策成了大企业的迫切要求。决策支持系统重新浮出水面。通过总结以前的经验和教训,人们认识到人在决策支持系统中的作用是无法替代的,计算机在现阶段的主要任务是利用其高速的运算能力,对系统中的海量数据进行及时、准确、快速地计算和分类,从而向决策者提供信息,而且能从提炼的这些信息中概括出规律性的规则,协助决策者及时作出合理的决策。1.4.2基于数据仓库的决策支持系统自从Inmon首次提出数据仓库概念以后,数据仓库及其相关技术日益成熟,客观上带动了高性能和并行技术以及数据库中的知识发现等多领域的巨大进步。数据库技术的发展和激烈的市场竞争为解决DSS问题提供了可能,人们开始提出了以数据仓库为基础、OLAP和数据挖掘工具为手段的一整套可操作、可实施的解决方案。以数据仓库为核心的决策支持系统的结构如图2.2所示[10]。数据库数据仓库多维分析工具多维数据可视化DSS交互系统数据挖掘工具方法库模型库统计查询工具管理工具知识库数据提取共用数据接口图2.2基于数据仓库的决策支持系统的结构数据库、数据仓库和共用数据接口是系统的数据管理部分,构成了整个系统的核心和基础,为上层应用提供数据。方法库、模型库、知识库、数据挖掘工具、多维分析工具(OLAP工具)和统计查询工具共同构成了前端分析工具层,相互配合协调,完成用户的决策处理任务。管理工具主要完成系统的模型维护、数据仓库元数据管理、数据提取任务的管理等任务。在这种新的DSS构架中,数据仓库、OLAP、数据挖掘和数据可视化技术具有内在的统一性,很好地解决了相互之间的衔接问题。数据仓库为OLAP和数据挖掘提供充实可靠的数据,数据挖掘所发现的知识可以用于指导OLAP的多维分析,而OLAP分析得出的新知识也可以补充到系统的知识库中。这种新的DSS构架的重要意义在于重新揭示了信息的本质,表明了信息系统的设计观念从处理驱动到数据驱动的转变。过去的信息系统以大量复杂的处理过程和算法为特征,数据在这些处理中产生。而在未来的时代,信息的重点将转移到数据模式分析,信息处理技术将随数据分析处理的需求而不断进步。1.5联机分析处理(OLAP)数据仓库是进行分析决策的基础,但它只提供数据的存储管理和基本的数据检索能力,强大的分析功能还要靠前端强有力的分析工具来执行。目前,数据仓库的分析工具主要可分为以下两类:(1)查询工具:这类工具对数据仓库的查询不只是简单地查询记录级数据,还包括了许多对查询结果进行分析处理的功能。查询工具中最典型的要属多维分析工具(OLAP工具),它可以对数据的多种可能的观察形式进行快速、一致和交互性的存取,以便于用户对数据进行深入的分析和观察。(2)数据挖掘工具:主要用于从大量数据中发现数据模式,预测趋势和行为。本节将对专利审查联机分析处理系统中使用的OLAP技术进行详细介绍。1.5.1OLAP的出现联机分析处理(On-LineAnalyticalProcessing,OLAP)是E.F.Codd在1993年正式提出的。当时,Codd认为联机事务处理(OLTP)不能满足终端用户对数据库查询分析的需求,SQL对数据库进行的简单查询及报告不能满足用户分析的需求,越来越多的用户需要更为复杂、动态的历史数据,要求从不同的数据源中综合数据,从不同的角度观察数据。动态数据分析所涉及的不仅是历史数据的简单综合比较,而是多变的主题及多维数据的访问,维内及维之间存在大量复杂的综合路径及关联。但这并不意味着否定关系数据库。Codd认为,关系数据库从一开始就未打算提供强大的数据合成及多维分析能力,这些功能是由前端工具来完成的,它们与关系数据库相辅相成,因此关系数据库仍然是当今最适合企业数据管理的技术。Codd所指的这些前端工具即为OLAP类产品。根据OLAPCouncil的定义,OLAP是使分析人员、管理人员或执行人员能够从多个角度对原始数据中转化出来的、能够真正为用户所理解并真实反映企业特性的信息进行快速、一致和交互性的存取,从而获得对数据本质内容的更深入了解的一类软件技术[11]。1.5.2OLAP的多维分析特性OLAP具有两个重要的特点:一是在线性,体现为对用户请求的快速响应和交互式操作;二是多维分析,也就是说,OLAP展现在用户面前的是一个多维视图,使用者可以对其进行各种多维分析操作。下面我们具体介绍OLAP的多维分析特性。在实际的决策制定过程中,决策者需要的不是某一指标单一的值,而是希望从多个角度或者从不同的考察范围来观察某一指标或多个指标,通过分析对比,从而找出这些指标间隐藏的内在关系,并预测这些指标的发展趋势,即决策所需的数据总是和一些分析角度和分析指标有关。OLAP的主要工作就是将数据仓库中的数据转换到多维数据结构中,并且对上述多维数据结构执行有效且非常复杂的多维查询。OLAP的基本概念[6,8](1)维维是人们观察数据的特定角度,它是一种高层次的类型划分。例如,企业常常关心产品销售数据随时间推移而产生的变化情况,这时他是从时间的角度来观察产品的销售,所以时间就是一个维(时间维)。(2)维的层次人们观察数据的某个特定角度(维)还可以存在细节程度不同的多个描述方面,我们称这多个描述方面为维的层次。例如描述时间维时,可以从日、月、季度、年等不同的层次来描述,那么日、月、季度、年就是时间维的层次。同一维的维层次结构可简可繁,这主要是因为不同分析应用对数据组织的详略程度的要求不同。在某些维中可能存在着完全不同的几条层次路径,例如时间维通常存在日历层次路径和财政层次路径,如图2.3所示。日月季度年财政月财政季度财政年财政周图2.3时间维的层次路径图(3)维成员维成员是维的一个取值。如果一个维是多层次的,那么该维的维成员是在不同维层次取值的组合。例如,我们考虑时间维具有日、月、年三个层次,那么“2002年12月10日”就构成了时间维的一个维成员。一个维成员并不一定在每个维层次上都要取值,例如,“2002年12月”、“2002年”都是时间维的维成员。(4)度量度量是我们需要分析的目标数据,有时也被称为变量。例如,用来反映一个企业经营效益好坏的销售量、销售额和库存量等。(5)多维数据集多维数据集是OLAP的核心,有时也称为立方体或超立方。多维数据集是由一组维和度量组成的,可以用一个多维数组来表示:(维1,维2,……,维n,度量)。例如,按时间、地区、专利类型组织起来的专利申请量多维数据集可以表