本书主要介绍客户关系管理(CRM)环境中使用的数据仓库的设计和构建。书中介绍了数据仓库的概念,探讨了数据仓库的体系结构、逻辑模型、物理实现、工程管理等内容。并且描述了建造数据仓库的一些工具产品,介绍了购买这些工具时需要注意的问题。另外,书中还对数据仓库的时间性问题提出了独到的见解,给出了可行的方案。本书适合于希望学习数据仓库原理的人员以及数据仓库建造的顾问人员使用。译者序本书主要介绍客户关系管理(CRM)环境中使用的数据仓库的设计和构建。数据仓库是一种特殊的数据库,近几年来在信息技术行业中获得了极大的关注。根据著名的数据仓库专家W,H.Inmon在《BuildingtheDataWarehouse》一书中的定义:数据仓库(DataWarehouse)是一个面向主题的(SubjectOriented)、集戒的(Integrated)、非易失的(Non-Volatile)、时变的(TimeVariant)数据集合,用于支持管理决策。对于数据仓库的概念可以从两个层次予以理解,首先,数据仓库用于支持决策型、面向分析型的数据处理,它不同于企业现有的运营型(Operational)数据库;其次,数据仓库是对多个异构的数据源的有效集成,集成后按照主题进行了重新组织,并包含历史数据。而且对存放在数据仓库中的数据一般不再进行修改。从上述定义可知,数据仓库具有以下四大特点:1)面向主题。运营型数据库的数据面向事务进行组织,各个业务系统之间相互分离,而数据仓库中的数据按照一定的主题域进行组织。主题是一个抽象的概念,是指用户利用数据仓库进行决策时所关心的重点方面,一个主题通常与多个运营型信息系统相关。2)集成的。面向事务处理的运营型数据库通常与某些特定的应用相关,数据库之间相互独立,并且往往是异构的。而数据仓库中的数据是在对原有的分散的数据库数据提取、过滤的基础上经过系统加工、汇总和整理得到的,从而消除了源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。3)非易失的。运营型数据库中的数据通常实时更新,会根据需要及时发生变化。数据仓库中的数据主要供企业决策分析之用,所涉及的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将长期保留,也就是说,数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期的装载、刷新即可。4)时变的。也就是反映历史变化。运营型数据库主要关心当前某一个时间段内的数据,而数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时刻(如开始应用数据仓库的时刻)到目前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。企业数据仓库的建设,是以现有企业业务系统和大量业务数据的积累为基础的。数据仓库不是静态的概念,只有把信息及时提交给需要这些信息的使用者,供他们做出改善业务经营的决策,信息才能发挥作用,信息才有意义。而把信息加以整理归纳和重新组织,并及时提供给相应的管理决策人员,是设计和构建数据仓库的根本任务。因此,从业界的角度来看,构建数据仓库是一个工程,是一个过程。数据仓库中存放的数据不是最新的、专有的,而是来源于其他数据库。设计和构建数据仓库不是要取代原有的数据库,而是在一个较全面、完善的信息应用的基础上重新设计和构建,用于支持高层决策分析。数据仓库是数据库技术的一种新的应用,与其他数据库应用不同的是,数据仓库更像一种过程,一种对分布在企业内部各处的业务数据进行整合、加工和分析的过程。因此,数据仓库是一种概念,不是一种可以购买的产品。数据仓库中包括了一些重要的技术,如数据挖掘,即从大量的数据中提取出潜在的、鲜为人知的有用信息、模式和趋势。其目的是:提高市场决策能力;检测异常模式;在过去的经验基础上预测未来趋势。还包括事先构造汇总表,以提高信息的检索效率,同时不增加使用人员的负担,由程序在检索时自动进行表的转换等技术。本书介绍数据仓库的概念,探讨数据仓库的体系结构、逻辑模型、物理实现、工程管理等内容。并且对构建数据仓库的一些工具产品作了讨论,介绍了购买这些工具时需要注意的问题。书中还对数据仓库的时间性问题提出了独到的见解,给出了可行的解决方案。本书适合于希望学习数据仓库原理的人员以及数据仓库构建的顾问人员使用。参加本书翻译的主要成员有:钟鸣、常征。全书由刘晓霞同志审校。同时担任部分翻译及校对工作的还有郝玉洁、梅刚、石永平、王君、“张文、田晓涛、耿娜、何江华、孙登峰、樊伟、赵彦萍等。由于译者水平有限,书中难免有错误或不当之处,敬请读者批评指正。前言本书主要围绕数据仓库展开讨论。数据仓库是一种特殊的数据库,近几年来在信息技术行业中获得了极大的关注。关于数据仓库构造的书籍很多,但把重点放在数据仓库设计上的很少,但也不是没有,本书中将会引用它们。构造数据仓库的目的是使信息可用。没有人会怀疑信息的价值,我们认为,大多数组织机构都可能具有一个信息的“阿拉丁山洞”,这个山洞被各机构的运营系统封锁起来。数据仓库就是打开这个信息山洞之门的钥匙。强有力的证据表明,我们在数据仓库领域的最初尝试(指的是第一代数据仓库)并未取得完全的成功。新生事物通常都不会非常成熟,在信息技术(盯)行业中更是如此,rr的从业人员迅速发现了数据仓库的潜力,他们试图努力使自己的公司在数据仓库方面保持竞争优势。在这样做的过程中,本人认为忽略了两个问题。第一点是,粗看上去,数据仓库似乎是一种相当简单的应用,事实上它一点也不简单。除了其绝对规模(数据仓库可能是世界上最庞大的一种数据库)和由此带来的性能瓶颈这个基本问题之外,其数据结构也比早期的类似系统天生要复杂得多。结果,造成设计过于简化,虽然数据库理解和使用起来很简单,但许多重要的问题没有考虑到。‘第二点是,数据仓库不像其他运行系统,它不能准确地定义需求。这与传统的系统不一样,传统系统由需求规范来驱动整个开发生命周期。我们的系统设计方法仍主要基于对需求的彻底理解,这是一种“硬性”的系统方法。而在数据仓库建造中,常常不知道要解决的问题是什么。数据仓库的部分任务应该是帮助公司了解他们的问题是什么。-关于设计,也有两个主要问题需要考虑。第一点与数据仓库本身有关。怎样保证相应的数据结构能解决一些较难的问题?第二点是已经证明硬性的系统方法限制性太强,需要一种更柔性的技术。因此,不仅要改进数据仓库的设计,还要改进实现这种设计的方法。作者针对这两个要求撰写了本书。第卜代数据仓库历史上,第一代数据仓库建立在业内大师们创立的某些法则的基础之上。作者很敬佩数据域中两位伟大的先行者:BiUInmon和RalphKimball。在我看来,这两位学者在数方面比别的人走得更远。虽然许多人声称自己“在有数据仓库这个称呼前已经从事建造工作很长时间了”,但实际上,Inmon和Kimball是数据仓库建造的奠基人,因地制定了今天大多数从业者所知道的定义和设计原则。纵使不能完全遵循他们的准Inmon关于数据仓库的定义和Kimball关于平缓地更改维的原则仍然是很常见的。本书第2章是对数据仓库的一个介绍。在某些方面,它应该被视为进行背景铺垫的一章,因为它给出了下列内容,从初步原理开始对数据仓库进行了介绍:决策支持的需求数据仓库有何用途运营系统和数据仓库之间的差别维模型数据仓库的主要成分第2章为介绍第二代数据仓库的发展做了铺垫,第二代数据仓库和客户关系管理在介绍数据仓库前,粗略地考察一下客户关系管理(CRM)的业务问题。数据仓库一直在等待CRM的出现。以前没有它,数据仓库仍比较流行,但其流行程度往往不够。IT管理人员很快会意识到数据仓库的潜力,但其业务需求并不总是主要的驱动力,这导致了某些数据仓库项目的失败。从业务经理的角度来看,发起这些大型的和昂贵的数据库开发项目总是有点勉强。由叮发起的那些数据仓库项目并不总是恰到好处。CRM的出现改变了一切。如果没有较多的信息资源(当然,它是数据仓库存在的理由),在业务开展中是不能实行CRM的。现在对数据仓库的兴趣已经有了新的活力,这次坐在“驾驶席”上的是业务人员。在介绍了CRM的概念和描述了它的主要成分后,将讨论第一代数据仓库的设计方法中的缺陷(具有事后总结的好处),并提出用于下一代设计的方法。本书从分析某些设计问题开始,然后仔细地选择解决更敏感的问题的方法,过去几年中,对这些更敏感问题存在一些争论(有时还很激烈)。基本问题之一是关于设计中的时间表示。对于这个问题的实际支持非常少,这是很可悲的,因为数据仓库已经成了所有业务中普遍的真正的基于时间的应用。在阐述解决方案时,我们针对有关时间的迷惑,再次介绍建造数据仓库的旧的概念、逻辑和实际方法。为什么应该做这件事存在很好的理由,在介绍过程中我们将会说明这些理由。有一章是关于建造数据仓库的业务理由的。意思很清楚。如果你不能说明开发数据仓库的理由,就不要建立它。如果我们设计和开发了一个漂亮的高性能的系统,但它不能在适当的时间内给出回报,任何人都不会为此感谢我们。许多数据仓库能够充分地证明自身存在的理由,而有的不能。我们不想造成失败项目。没有人能从这样的事情中得到好处,因此,在证明建立数据仓库的合理性方面,我们是相当严谨的。项目管理是数据仓库开发的一个关键部分。一般的项目管理方法在这里不适用。有许多经验丰富的项目管理者最初面对数据仓库项目时感到极不舒服。他们过去习惯了依赖于系统规格说明,但是数据仓库项目的交付产品具有不确定性,项目的接收标准本质上很不精确,这使他们感到很不安心。本书会提供项目管理方面的一些指导。认识我的人都认为我在软件产品方面有点“坦率”,但我觉得,如果我是一个诚实的人就应该这样。在碰到把旧的查询工具改头换面,就像它们是新产品一样随新东西一道发行的情形时,我就生气。过去,查询工具就是查询工具。现在,它是数据挖掘产品、分段产品,而且还是CRM产品。我知道,这些供应商要谋生,但作为职业顾问,我们必须保护客户(特别是容易受骗的客户),免得他们上这些供应商的当。有的产品确实增加了价值,而有的根本就没有增值,而且还非常昂贵。关于软件产品的那一章列出了各种可以得到的工具,说明它们擅长什么,不擅长什么,以及哪些问题你不关心,供应商就不会告诉你。本书读者本书涵盖了许多有意义的技术内容,其潜在的读者相当广泛。第2章是由本科生教材改编而来的,适合于希望学习数据仓库原理的人员。它用简单的术语说明了以下问题:.什么是数据仓库.怎样使用数据仓库.数据仓库的主要成分.数据仓库的“行话”这一章中还介绍了建造数据仓库要面对的困难和问题。对于顾问人员,本书包含了一个保证业务目标得以满足的方法。此方法是一个自顶向下的方法,它采用了常见的专题讨论会技术。还有一章专门帮助建立业务需求。对于数据仓库的开发人员,本书包含了关于设计(特别是在数据模型方面)、时间处理、概念、逻辑和物理层次的大量资料。本书还包含了对所有开发层次提供帮助的一个完整的方法学。重点集中在建立以客户为中心的模型上,这种模型对于支持客户关系管理的完整需求非常理想。对于项目管理人员,有一整章提供了关于方法的指南,同时还包括以下内容:完整的工作分解结构(WBS)项目组结构所需技能