??数据仓库是近年来兴起的一种新的数据库应用。在各大数据库厂商纷纷宣布产品支持数据仓库并提出一整套用以建立和使用数据仓库的产品是,业界掀起了数据库热。比如INFORMIXGONGSIDE公司的数据仓库解决方案;ORACLE公司的数据仓库解决方案;Sybase公司的交互式数据仓库解决方案等等。这同时也引起了学术界的极大兴趣,国际上许多重要的学术会议,如超大型数据库国际会议(VLDB),数据工程国际会议(Data Engineering)等,都出现了专门研究数据仓库(Data Warehousing,简记为DW)、联机分析处理(On-Line Analytical Processing,简记为OLAP)、数据挖掘(Data Mining, 简记为DM)的论文。对我国许多企业而言,在建立或发展自己的信息系统常常困扰于这样的问题:为什么要在原有的数据库上建立数据仓库?数据仓库能否代替传统的数据库?怎样建立数据仓库?等等。本章将简要介绍一下用到的数据仓库技术背景,并在下一章结合数据清理系统设计实例,更深一步阐述数据仓库技术在现实中的重大意义。
一、从数据库到数据仓库
??传统的数据库技术是以单一的数据资源,即数据库为中心,进行事务处理、批处理、决策分析等各种数据处理工作,主要的划分为两大类:操作型处理和分析型处理(或信息型处理)。 操作型处理也叫事务处理,是指对数据库联机的日常操作,通常是对一个或一组纪录的查询和修改,主要为企业的特定应用服务的,注重响应时间,数据的安全性和完整性;分析型处理则用于管理人员的决策分析,经常要访问大量的历史数据。而传统数据库系统优于企业的日常事务处理工作,而难于实现对数据分析处理要求,已经无法满足数据处理多样化的要求。操作型处理和分析型处理的分离成为必然。
??近年来,随着数据库技术的应用和发展,人们尝试对DB中的数据进行再加工,形成一个综合的,面向分析的环境,以更好支持决策分析,从而形成了数据仓库技术(Data Warehousing,简称DW)。作为决策支持系统(Decision-making Support System,简称DSS),数据仓库系统包括:
??① 数据仓库技术;
??② 联机分析处理技术(On-Line Analytical Processing,简称OLAP);
??③ 数据挖掘技术(Data Mining,简称DM);
??数据仓库弥补了原有的数据库的缺点,将原来的以单一数据库为中心的数据环境发展为一种新环境:体系化环境。如图1.1所示:
图1.1数据仓库体系化环境
??1.1 什么是数据仓库
??业界公认的数据仓库概念创始人W.H.Inmon在《建立数据仓库》一书中对数据仓库的定义是:数据仓库就是面向主题的、集成的、不可更新的(稳定性)、随时间不断变化(不同时间)的数据集合,用以支持经营管理中的决策制定过程、数据仓库中的数据面向主题,与传统数据库面向应用相对应。主题是一个在较高层次上将数据归类的标准,每一个主题对应一个宏观的分析领域:数据仓库的集成特性是指在数据进入数据仓库之前,必须经过数据加工和集成,这是建立数据仓库的关键步骤,首先要统一原始数据中的矛盾之处,还要将原始数据结构做一个从面向应用向面向主题的转变;数据仓库的稳定性是指数据仓库反映的是历史数据的内,而不是日常事务处理产生的数据,数据经加工和集成进入数据仓库后是极少或根本不修改的;数据仓库是不同时间的数据集合,它要求数据仓库中的数据保存时限能满足进行决策分析的需要,而且数据仓库中的数据都要标明该数据的历史时期。
??数据仓库最根本的特点是物理地存放数据,而且这些数据并不是最新的、专有的,而是来源于其它数据库的。数据仓库的建立并不是要取代数据库,它要建立在一个较全面和完善的信息应用的基础上,用于支持高层决策分析,而事务处理数据库在企业的信息环境中承担的是日常操作性的任务。数据仓库是数据库技术的一种新的应用,而且到目前为止,数据仓库还是用关系数据库管理系统来管理其中的数据。
??1.2 数据仓库的产生
??计算机系统的功能从数值计算扩展到数据管理距今已有三十多年了。最初的数据管理形式主要是文件系统,少量的以数据片段之间增加一些关联和语义而构成层次型或网状数据库,但数据的访问必须依赖于特定的程序,数据的存取方式是固定的、死板的。到了1969年,E.F.Codd博士发表了他著名的关系数据模型的论文。此后,关系数据库的出现开创了数据管理的一个新时代。
??近几十年来,大量新技术、新思路的涌现出来并被用于关系型数据库系统的开发和实现:客户/服务器系统结构、存储过程、多线索并发内核、异步I/O、代价优化,等等,这一切足以使得关系数据库系统的处理能力毫不逊色于传统封闭的数据库系统。而关系数据库在访问逻辑和应用上所带来的好处则远远不止这些,SQL的使用已成为一个不可阻挡的潮流,加上近些年来计算机硬件的处理能力呈数量级的递增,关系数据库最终成为联机事务处理系统的主宰。
??整个80年代直到90年代初,联机事务处理一直是数据库应用的主流。然而,应用在不断地进步。当联机事务处理系统应用到一定阶段后,用户便发现单靠拥有联机事务处理已经不足以获得市场竞争的优势,他们需要对其自身业务的运作以及整个市场相关行业的情况进行分析,而做出有利的决策。这种决策需要对大量的业务数据包括历史业务数据进行分析才能得到。在如今这样激烈的市场竞争环境下,这种基于业务数据的决策分析,我们把它称为联机分析处理,比以往任何时候都显得更为重要。如果说传统联机事务处理强调的是更新数据库--向数据库中添加信息,那么联机分析处理就是从数据库中获取信息、利用信息。因此,著名的数据仓库专家Ralph Kimball写道:"我们花了二十多年的时间将数据放入数据库,如今是该将它们拿出来的时候了。"
??事实上,将大量的业务数据应用于分析和统计原本是一个非常简单和自然的想法。但在实际的操作中,人们却发现要获得有用的信息并非如想象的那么容易,这主要表现在以下几点:
??? 所有联机事务处理强调的是密集的数据更新处理性能和系统的可靠性,并不关心数据查询的方便与快捷。联机分析和事务处理对系统的要求不同,同一个数据库在理论上都难以做到两全。
??? 业务数据往往存放于分散的异构环境中,不易统一查询访问,而且还有大量的历史数据处于脱机状态,形同虚设。
??? 业务数据的模式针对事务处理系统而设计,数据的格式和描述方式并不适合非计算机专业人员进行业务上的分析和查询。
??因此有人感叹:20年前查询不到数据是因为数据太少了,而今天查询不到数据是因为数据太多了。针对这一问题,人们设想专门为业务的统计分析建立一个数据中心,它的数据从联机的事务处理系统中来、从异构的外部数据源来、从脱机的历史业务数据中来…… 。这个数据中心是一个联机的系统,它是专门为分析统计和决策支持应用服务的,通过它可以满足决策支持和联机分析应用所要求的一切。这个数据中心就叫做数据仓库。这个概念在90年代初被提出来。如果需要给数据仓库一个定义的话,那么数据仓库就是一个作为决策支持系统和联机分析应用数据源的结构化数据环境。数据仓库所要研究和解决的问题就是从数据库中获取信息的问题。
??那么数据仓库与数据库(主要指关系数据库)又是什么关系呢?回想当初,人们固守封闭式系统是出于对事务处理的偏爱,人们选择关系数据库是为了方便地获得信息。我们只要翻开C.J.Date博士的经典之作《An Introduction to Database Systems》便会发现:今天数据仓库所要提供的正是当年关系数据库所要倡导的。然而,由于关系数据库系统在联机事务处理应用中获得的巨大成功,使得人们已不知不觉将它划归为事务处理的范畴;过多地关注于事务处理能力的提高,使得关系数据库在面对联机分析应用时又遇到了新的问题--今天的数据仓库对关系数据库的联机分析能力提出了更高的要求,采用普通关系型数据库作为数据仓库在功能和性能上都是不够的,它们必须有专门的改进。因此,数据仓库与数据库的区别不仅仅表现在应用的方法和目的方面,同时也涉及到产品和配置上的不同。
??以辨证的眼光看,数据仓库的兴起实际是数据管理的一种回归,是螺旋式的上升。今天的数据库就好比当年的层次数据库和网状数据库,它们面向事务处理;今天的数据仓库就好比是当年的关系数据库,它针对联机分析。所不同的是,今天的数据仓库不必再为联机事务处理的特性而无谓奔忙,由于技术的专业化,它可更专心于联机分析领域的发展和探索。
??数据仓库的概念一经出现,就首先被用于金融、电信、保险等主要传统数据处理密集型行业。国外许多大型的数据仓库在1996-1997年建立。那么,什么样的行业最需要和可能建立数据仓库呢?有两个基本条件:第一,该行业有较为成熟的联机事务处理系统,它为数据仓库提供客观条件;第二,该行业面临市场竞争的压力,它为数据仓库的建立提供外在的动力。
二、数据仓库中的数据组织
??数据仓库中数据的四个基本特征在本章§1中已经介绍过了,下面就要分析清楚这些问题:数据仓库存储哪些数据呢?数据如何组织,存储?组织形式有哪些?等等。通过对数据仓库中存放的数据内容及其组织形式的介绍,本节将对这些问题做出回答,以加深对数据仓库数据四个基本特征的理解。
??2.1 数据仓库的数据组织结构
??一个典型的数据仓库的数据组织结构如图1.2所示:
??数据仓库中的数据分为四个级别:早期细节级、当前细节级、轻度综合级、高度综合级。源数据经过综合后,首先进入当前细节级,并根据具体需要进行进一步的综合,从而进入轻度综合级乃至高度综合级,