构造数据仓库涉及数据清理和数据集成,可以看作数据挖掘的一个重要预处理步骤。此外,数据仓库提供联机分析处理(OLAP)工具,用于各种粒度的多维数据分析,有利于有效的数据挖掘。进一步讲,许多其它数据挖掘功能,如分类、预测、关联、聚集,都可以与 OLAP 操作集成,以加强多个抽象层上的交互知识挖掘。因此,数据仓库已经成为数据分析和联机数据分析处理日趋重要的平台,并将为数据挖掘提供有效的平台。在系统地介绍数据挖掘技术之前,我们概括地介绍数据仓库技术。对于理解数据挖掘技术,这种概述是必要的。
本章,你将学习数据仓库和 OLAP 技术使用的基本概念、一般结构和主要实现技术,以及它们与数据挖掘的联系。
什么是数据仓库?
数据仓库是一个面向主题的、集成的、时变的、非易失的数据集合,支持管理决策制定。
1 面向主题的:数据仓库围绕一些主题,如顾客、供应商、产品和销售组织。数据仓库关注决策者的数据建模与分析,而不是构造组织机构的日常操作和事务处理。因此,数据仓库排除对于决策无用的数据,提供特定主题的简明视图。
2 集成的:通常,构造数据仓库是将多个异种数据源,如关系数据库、一般文件和联机事务处理记录,集成在一起。使用数据清理和数据集成技术,确保命名约定、编码结构、属性度量的一致性。
3 时变的:数据存储从历史的角度(例如,过去 5-10 年)提供信息。数据仓库中的关键结构,隐式或显式地包含时间元素。
4 非易失的:数据仓库总是物理地分离存放数据;这些数据源于操作环境下的应用数据。由于这种分离,数据仓库不需要事务处理、恢复和并行控制机制。通常,它只需要两种数据访问:数据的初始化装入和数据访问。
概言之,数据仓库是一种语义上一致的数据存储,它充当决策支持数据模型的物理实现,并存放企业决策所需信息。数据仓库也常常被看作一种体系结构,通过将异种数据源中的数据集成在一起而构造,支持结构化和启发式查询、分析报告和决策制定。
数据仓库的构造需要数据集成、数据清理、和数据统一。利用数据仓库常常需要一些决策支持技术。这使得“知识工人” (例如,经理、分析人员和主管)能够使用数据仓库,快捷、方便地得到数据的总体视图,根据数据仓库中的信息作出准确的决策。
对于异种数据库的集成,传统的数据库做法是:在多个异种数据库上,建立一个包装程序和一个集成程序(或仲裁程序)。这方面的例子包括 IBM 的数据连接程序 (Data Joiner) 和 Informix的数据刀(DataBlade)。当一个查询提交客户站点,首先使用元数据字典对查询进行转换,将它转换成相应异种站点上的查询。然后,将这些查询映射和发送到局部查询处理器。由不同站点返回的结果被集成为全局回答。这种查询驱动的方法需要复杂的信息过滤和集成处理,并且与局部数据源上的处理竞争资源。这种方法是低效的,并且对于频繁的查询,特别是需要聚集操作的查询,开销很大。
对于异种数据库集成的传统方法,数据仓库提供了一个有趣的替代方案。数据仓库使用更新驱动的方法,而不是查询驱动的方法。这种方法将来自多个异种源的信息预先集成,并存储在数据仓库中,供直接查询和分析。与联机事务处理数据库不同,数据仓库不包含最近的信息。然而,数据仓库为集成的异种数据库系统带来了高性能,因为数据被拷贝、预处理、集成、注释、汇总,并重新组织到一个语义一致的数据存储中。在数据仓库中进行的查询处理并不影响在局部源上进行的处理。此外,数据仓库存储并集成历史信息,支持复杂的多维查询。这样,建立数据仓库在工业界已非常流行。
操作数据库系统与数据仓库的区别
联机操作数据库系统的主要任务是执行联机事务和查询处理。这种系统称为联机事务处理(OLTP)系统。它们涵盖了一个组织的大部分日常操作,如购买、库存、制造、银行、工资、注册、记帐等。另一方面,数据仓库系统在数据分析和决策方面为用户或“知识工人”提供服务。这种系统可以用不同的格式组织和提供数据,以便满足不同用户的形形色色需求。这种系统称为联机分析处理(OLAP)系统。
OLTP和 OLAP的主要区别概述如下。
1 用户和系统的面向性:OLTP 是面向顾客的,用于办事员、客户、和信息技术专业人员的事务和查询处理。OLAP 是面向市场的,用于知识工人(包括经理、主管、和分析人员)的数据分析。
2 数据内容:OLTP 系统管理当前数据。通常,这种数据太琐碎,难以方便地用于决策。OLAP 系统管理大量历史数据,提供汇总和聚集机制,并在不同的粒度级别上存储和管理信息。这些特点使得数据容易用于见多识广的决策。
3 数据库设计:通常,OLTP 系统采用实体-联系(ER)模型和面向应用的数据库设计。而 OLAP 系统通常采用星形或雪花模型(2.2.2小节讨论)和面向主题的数据库设计。
4 视图:OLTP系统主要关注一个企业或部门内部的当前数据,而不涉及历史数据或不同组织的数据。相比之下,由于组织的变化,OLAP 系统常常跨越数据库模式的多个版本。OLAP 系统也处理来自不同组织的信息,由多个数据存储集成的信息。由于数据量巨大,OLAP 数据也存放在多个存储介质上。
5 访问模式:OLTP 系统的访问主要由短的、原子事务组成。这种系统需要并行控制和恢复机制。然而,对 OLAP 系统的访问大部分是只读操作(由于大部分数据仓库存放历史数据,而不是当前数据),尽管许多可能是复杂的查询。
OLTP 和 OLAP 的其它区别包括数据库大小、操作的频繁程度、性能度量等。
为什么需要一个分离的数据仓库
“既然操作数据库存放了大量数据”,你注意到,“为什么不直接在这种数据库上进行联机分析处理,而是另外花费时间和资源去构造一个分离的数据仓库?”分离的主要原因是提高两个系统的性能。操作数据库是为已知的任务和负载设计的,如使用主关键字索引和散列,检索特定的记录,和优化“罐装的”查询。另一方面,数据仓库的查询通常是复杂的,涉及大量数据在汇总级的计算,可能需要特殊的数据组织、存取方法和基于多维视图的实现方法。在操作数据库上处理 OLAP查询,可能会大大降低操作任务的性能。
此外,操作数据库支持多事务的并行处理,需要加锁和日志等并行控制和恢复机制,以确保一致性和事务的强健性。通常,OLAP查询只需要对数据记录进行只读访问,以进行汇总和聚集。如果将并行控制和恢复机制用于这种 OLAP 操作,就会危害并行事务的运行,从而大大降低 OLTP 系统的吞吐量。
最后,数据仓库与操作数据库分离是由于这两种系统中数据的结构、内容和用法都不相同。决策支持需要历史数据,而操作数据库一般不维护历史数据。在这种情况下,操作数据库中的数据尽管很丰富,但对于决策,常常还是远远不够的。决策支持需要将来自异种源的数据统一(如,聚集和汇总),产生高质量的、纯净的和集成的数据。相比之下,操作数据库只维护详细的原始数据(如事务),这些数据在进行分析之前需要统一。由于两个系统提供很不相同的功能,需要不同类型的数据,因此需要维护分离的数据库。然而,许多关系数据库管理系统卖主正开始优化这种系统,使之支持 OLAP查询。随着这一趋势的继续,OLTP和 OLAP 系统之间的分离可望消失。
本节,我们讨论数据仓库的结构问题。2.3.1 小节介绍如何设计和构造数据仓库。2.3.2 小节介绍三层数据仓库结构。2.3.3 小节提供用于 OLAP 处理的各种不同类型的仓库服务器。
数据仓库的设计步骤和结构
本小节提供数据仓库设计的一个商务分析框架,同时介绍设计过程所涉及的基本步骤。
数据仓库设计:一个商务分析框架
“数据仓库为商务分析提供了什么?”首先,拥有数据仓库可以提供竞争优势。通过提供相关信息,据此测量性能并作出重要调整,以帮助战胜其它竞争对手。其次,数据仓库可以加强生产能力,因为它能够快速有效地搜集准确描述组织机构的信息。再次,数据仓库促进了与顾客的联系,因为它跨越所有商务、所有部门、所有市场,提供了顾客和商品的一致视图。最后,通过以一致、可靠的方式长期跟踪趋势、式样、例外,数据仓库可以降低费用。
为建立有效的数据仓库,需要理解和分析商务需求,并构造一个商务分析框架。构造一个大的、复杂的信息系统就象建一个大型、复杂的建筑,业主、设计师、建筑者都有不同的视图。这些观点结合在一起,形成一个复杂的框架,代表自顶向下、商务驱动,或业主的视图,也代表自底向上、建筑者驱动,或信息系统实现者的视图。
关于数据仓库的设计,四种不同的视图必须考虑:自顶向下、数据源、数据仓库、商务查询。
1 自顶向下视图使得我们可以选择数据仓库所需的相关信息。这些信息能够满足当前和未来商务的需求。
2 数据源视图揭示被操作数据库系统捕获、存储、和管理的信息。这些信息可能以不同的详细程度和精度建档,存放在由个别数据源表到集成的数据源表中。通常,数据源用传统的数据建模技术,如实体-联系模型或 CASE(计算机辅助软件工程)工具建模。
3 数据仓库视图包括事实表和维表。它们提供存放在数据仓库内部的信息,包括预先计算的和与计数,以及关于源、日期、原时间等。
4 最后,商务查询视图是从最终用户的角度透视数据仓库中的数据。
建立和使用数据仓库是一个复杂的任务,因为它需要商务技巧、技术技巧和程序管理技巧。关于商务技巧,建立数据仓库涉及理解这样一个系统如何存储和管理它的数据;如何构造一个提取程序,将数据由操作数据库转换到数据仓库;如何构造一个仓库刷新软件,合理地保持数据仓库中的数据相对于操作数据库中数据的当前性。使用数据仓库涉及理解数据的含义,以及理解商务需求并将它转换成数据仓库查询。关于技术技巧,数据分析需要理解如何由定量信息作出估价,以及如何根据数据仓库中的历史信息得到的结论推导事实。这些技巧包括发现模式和趋势,根据历史推断趋势和发现不规则的能力,并根据这种分析提出相应的管理建议。最后,程序管理技巧涉及需要与许多技术人员、经销商、最终用户交往,以便以及时、合算的方式提交结果。
数据仓库的设计过程
“如何设计数据仓库?”数据仓库可以使用自顶向下方法、自底向上方法,或二者结合的混合方法设计。自顶向下方法由总体设计和规划开始。当技术成熟并已掌握,对必须解决的商务问题清楚并已很好理解时,这种方法是有用的。自底向上方法以实验和原型开始。在商务建模和技术开发的早期阶段,这种方法是有用的。这样可以以相当低的代价前进,在作出重要承诺之前评估技术的利益。在混合方法下,一个组织既能利用自顶向下方法的规划的、战略的自然特点,又能保持象自底向上方法一样快速实现和立即应用。
从软件工程的观点,数据仓库的设计和构造包含以下步骤:规划、需求研究、问题分析、仓库设计、数据集成和测试,最后,配置数据仓库。大的软件系统可以用两种方法开发:瀑布式方法和螺旋式方法。瀑布式方法在进行下一步之前,每一步都进行结构化和系统的分析,就象瀑布一样,从一级落到下一级。螺旋式方法涉及功能渐增的系统的快速产生,相继版本之间的间隔很短。对于数据仓库,特别是对于数据集市的开发,这是一个好的选择,因为其周转时间短,能够快速修改,并且新的设计和技术可以快速接受。
一般地,数据仓库的设计过程包含如下步骤:
1 选取待建模的商务处理,例如,订单、发票、出货、库存、记帐管理、销售、和一般分类帐。
如果一个商务过程是有组织的,并涉及多个复杂的对象,应当选用数据仓库模型。然而,如果处理是部门的,并关注某一类商务处理,则应选择数据集市。
2 选取商务处理的粒度。对于处理,该粒度是基本的、在事实表中是数据的原子级。例如,单个事务、一天的快照等。
3 选取用于每个事实表记录的维。典型的维是时间、商品、顾客、供应商、仓库、事务类型和状态。
4 选取将安放在事实表中的度量。典型的度量是可加的数值量,如dollars_sold 和units_sold。
由于数据仓库的构造是一个困难、长期的任务,它的实现范围应当清楚地定义。一个初始的数据仓库的实现目标应当是特定的、可实现、可测量的。这涉及时间和预算的分配,一个组织的哪些子集要建模,选择的数据源数量,提供服务的部门数量和类型。
一旦设计和构造好数据仓库,数据仓库的最初使用包括初始化装入、首次展示规划、培训和定
位。平台的升级和管理也要考虑。数据仓库管理包括数据刷新、数据源同步、规划故障恢复、管理存取控制和安全、管理数据增长、管理数据库性能、以及数据仓库的增强和扩充。范围管理包括控制查询、维、报告的数量和范围,限制数据仓库的大小,或限制进度、预算和资源。
各种数据仓库设计工具都可以使用。数据仓库开发工具提供一些操作,定义和编辑元数据库(如模式、脚本或规则),回答查询,输出报告,向或由关系数据库目录传送元数据。规划与分析工具研究模式改变的影响,当刷新率或时间窗口改变时对刷新性能的影响。
“数据仓库的结构是什么样的?”通常,数据仓库采用三层结构。
1. 底层是数据仓库服务器,它几乎总是一个关系数据库系统。“如何由该层提取数据,创建数据仓库?”使用称作网间连接程序的应用程序,由操作数据库和外部数据源(如,由外部咨询者提供的顾客侧面信息)提取数据。网间连接程序由下面的 DBMS 支持,允许客户程序产生 SQL 代码,在服务器上执行。网间连接程序的例子包括 ODBC(开放数据库连接)和微软的 OLE-DB(数据库开放链接和嵌入),JDBC(Java 数据库连接)。
2. 中间层是OLAP服务器,其典型的实现或者是(1)关系OLAP(ROLAP)模型,即扩充的关系 DBMS,它将多维数据上的操作映射为标准的关系操作;或者是(2)多维OLAP(MOLAP)模型,即特殊的服务器,它直接实现多维数据和操作。OLAP服务器在 2.3.3 小节讨论。
3. 顶层是客户,它包括查询和报告工具、分析工具、和/或数据挖掘工具(例如,趋势分析、预测等)。
从结构的角度看,有三种数据仓库模型:企业仓库、数据集市、和虚拟仓库。
企业仓库:企业仓库搜集了关于主题的所有信息,跨越整个组织。它提供企业范围内的数据集成,通常来自一个或多个操作的系统,或外部信息提供者,并且是跨功能的。通常,它包含详细数据和汇总数据,其大小由数千兆字节,到数百千兆字节,数兆兆字节,或更多。企业数据仓库可以在传统的大型机上实现,如 UNIX 超级服务器或并行结构平台。它需要广泛建模,可能需要多年设计和建造。
数据集市:数据集市包含企业范围数据的一个子集,对于特定的用户是有用的。其范围限于选定的主题。例如,一个商场的数据集市可能限定其主题为顾客、商品和销售。包括在数据集市中的数据通常是汇总的。
通常,数据集市可以在低价格的部门服务器上实现,基于 UNIX 或 Windows/NT。实现数据集市的周期一般是数以周计,而不是数以月计或数以年计。然而,如果它们的规划不是企业范围的,从长远讲,可能涉及很复杂的集成。根据数据的来源不同,数据集市分为独立的和依赖的两类。在独立的数据集市中,数据来自一个或多个操作的系统或外部信息提供者,或者来自在一个特定的部门或地域局部产生的数据。依赖的数据集市中的数据直接来自企业数据仓库。
虚拟仓库:虚拟仓库是操作数据库上视图的集合。为了有效地处理查询,只有一些可能的汇总视图被物化。虚拟仓库易于建立,但需要操作数据库服务器具有剩余能力。
自顶向下开发企业仓库是一种系统的解决方法,并能最大限度地减少集成问题。然而,它费用高,需要长时间开发,并且缺乏灵活性,因为整个组织的共同数据模型达到一致是困难的。自底向上设计、开发、配置独立的数据集市方法提供了灵活性、低花费,并能快速回报投资。然而,将分散的数据集市集成,形成一个一致的企业数据仓库时,可能导致问题。
对于开发数据仓库系统,一个推荐的方法是以递增、进化的方式实现数据仓库,如图 2.13 所示。第一,在一个合理短的时间(如,一、两个月)内,定义一个高层次的企业数据模型,在不同的主题和可能的应用之间,提供企业范围的、一致的、集成的数据视图。这个高层模型将大大减少今后的集成问题,尽管在企业数据仓库和部门数据集市的开发中,它还需要进一步提炼。第二,基于上述相同的企业数据模型,可以并行地实现独立的数据集市和企业数据仓库。第三,可以构造分布数据集市,通过网络中心服务器集成不同的数据集市。最后,构造一个多层数据仓库,这里,企业仓库是所有仓库数据的唯一管理者,仓库数据分布在一些依赖的数据集市中。
OLAP 服务器的种类有哪些?”逻辑上讲,OLAP 服务器为商务用户提供来自数据仓库或数据集市的多维数据,而不必关心数据如何存放和存放在何处。然而,OLAP 服务器的物理结构和实现必须考虑数据存放问题。OLAP 服务器实现包括:
关系OLAP(ROLAP)服务器:这是一种中间服务器,介于关系后端服务器和用户前端工具之间。它们使用关系或扩充关系 DBMS 存放并管理数据仓库,而 OLAP 中间件支持其余部分。ROLAP服务器包括每个 DBMS 后端优化,聚集导航的逻辑实现,附加的工具和服务。看来,ROLAP 技术比 MOLAP 技术具有更大的可规模性。例如,Microstrategy 的 DSS 和 Informix 的 Metacube 都采用ROLAP 方法5。
多维 OLAP(MOLAP)服务器:这些服务器通过基于数组的多维存储引擎,支持数据的多维视图。它们将多维视图直接映射到数据方数组结构。例如,Arbor 的 Essbase 是一个 MOLAP 服务器。使用数据方的优点是能够对预计算的汇总数据快速索引。注意,使用多维数据存储,如果数据集是
稀疏的,存储利用率可能很低。在这种情况下,应当使用稀疏矩阵压缩技术(见 2.4 节)。
许多 OLAP 服务器采用两级存储,以便处理稀疏和稠密数据集:稠密子方不变,并作为数组结构存储;而稀疏子方使用压缩技术,从而提高存储利用率。
混合OLAP(HOLAP)服务器:混合OLAP 方法结合ROLAP和 MOLAP 技术,得益于 ROLAP 较大的可规模性和 MOLAP 的快速计算。例如,HOLAP 服务器允许将大量详细数据存放在关系数据库中,而聚集保持在分离的 MOLAP存储中。微软的 SQL Server 7.0 OLAP 服务支持混合 OLAP 服务器。
特殊的 SQL 服务器:为了满足在关系数据库中日益增长的 OLAP 处理的需要,一些关系数据库和数据仓库公司(例如 Redbrick)实现了特殊的 SQL 服务器,提供高级查询语言和查询处理,在只读环境下,在星形和雪花模式上支持 SQL 查询。
“那么,数据怎样实际地存放在 ROLAP和 MOLAP结构中?”如名称所示,ROLAP 使用关系表存放联机分析处理数据。注意,与基本方体相关联的事实表称为基本事实表。基本事实表存放的数据所处的抽象级由给定的数据方的模式的连接键指出。聚集数据也能存放在事实表中,这种表称为汇总事实表。有些汇总事实表既存放基本事实表数据,又存放聚集数据,如例 2.10 所示。也可以对每一抽象级分别使用汇总事实表,只存放聚集数据。
大部分数据仓库系统采用客户-服务器结构。关系数据存储总是驻留在数据仓库/数据集市服务器站点上。多维数据存储可以驻留在数据库服务器站点,或客户站点。