数据仓库设计:现代原理与方法
基本信息
内容简介回到顶部↑
《数据仓库设计:现代原理与方法》内容详实,图文并茂,介绍最前沿的数据仓库设计技术,指导您构建安全可靠的决策支持基础结构。它阐述了遵循成熟可靠的软件工程原理的实用设计方法,讨论如何得心应手地构建富有表达力的概念模式、将概念模式转换为关系模式以及设计最新etl过程,还讲述如何集成异构数据源、实现星型和雪花模式、管理动态和不规则层次结构以及如何通过实体化和拆分视图来优化性能。
作译者回到顶部↑
本书提供作译者介绍
Matteo Golfarelli是意大利博洛尼亚大学计算机科学与技术学院副教授,讲授信息系统、数据库和数据挖掘课程。Matteo从2008年开始担任Business Intelligence Systems会议的联合主席,并仟国际杂志Data Mining,Modeling and Management的编委。
Stefano Rizzi是意大利博洛尼亚大学计算机。科学与技术学院教授,讲授高级信息系统和软件工程课程。他已在国际期刊和会议文献上发表了近100篇关于信息系统、移动机器人系统和模式识别的论文。Stefano是Encvclopedia of Database Systems杂志的数据仓.. << 查看详细
Stefano Rizzi是意大利博洛尼亚大学计算机。科学与技术学院教授,讲授高级信息系统和软件工程课程。他已在国际期刊和会议文献上发表了近100篇关于信息系统、移动机器人系统和模式识别的论文。Stefano是Encvclopedia of Database Systems杂志的数据仓.. << 查看详细
目录回到顶部↑
第1章 数据仓库简介
1.1 决策支持系统
1.2 数据仓库
1.3 数据仓库的体系结构
1.3.1 单层体系结构
1.3.2 两层体系结构
1.3.3 三层体系结构
1.3.4 另一种体系结构类
1.4 数据准备和etl
1.4.1 提取
1.4.2 清洗
1.4.3 转换
1.4.4 加载
1.5 多维模型
1.5.1 限制
1.5.2 聚合
1.6 元数据
1.7 访问数据仓库
1.7.1 报表
前言回到顶部↑
数据仓库是历史的、集成的和一致的数据的储存库。通过使用数据仓库的各种工具公司管理层可以提取可靠的信息,并将其用于支持决策过程。数据仓库设计涉及到从企业信息系统提取相关数据、转换数据、集成数据、清除缺陷和不一致数据以及及将数据存储到数据仓库的过程,并允许终端用户访问数据,以便他们执行复杂的数据分析和预测查询。
当前,多家大中型组织已经建立了很出色的数据仓库系统,并且在为终端用户提供访问重要信息的简便性方面,数据仓库系统扮演了一种具有战略意义的角色。数据仓库设计最早诞生在企业界,用于应对用户不断增长的需求。一开始学术界是忽略这种现象的.并认为它只早一个技术问题,直到他们认识到数据仓库设计的复杂性和面临挑战,这种看法才得到改变。实际上,数据仓库设计这个主题已经成为国际学术会议的主要部分。自此之后,许多会议和研讨会都专门研究数据仓库设计。
在讲授了超过10年的数据库设计课程以后,我们开始研究数据仓库设计领域。我们的目的是找出是否应该丢弃为关系系统开发和测试的设计技术,或者是否也可以把它们部分应用于数据仓库设计。我们很快认识到,一方面,与用户需求的概念建模有关的基础问题都被忽视了;另一方面,杰出的研究人员已经撰写了大量关于如何优化数据仓库性能的文章,这些对这个领域起到了奠基性的作用。
我们两人都认为,在创建软件系统时,采用基于可靠的软件工程原理的系统方法十分重要。特别是,在开发数据库时,需要进行精确的概念建模。
常见的数据仓库设计实践不具备合理的系统方法和概念模型。为了填补这个空白,我们努力开发了一个全面的、有充分依据的设计方法,来帮助设计人员正确地处理数据仓库项目的各个阶段。我们的方法以使用显示数据仓库应用程序的具体特征的概念模型为中心,同时仍然基于使设计人员可以设计和创建更好项目的简易方法。我们提出的方法和概念模型的有效性已经在意大利的多家软件公司和顾问的多个项目中得到印证,也得到了专家的首肯。
本书主要目的有两个:一是总结大量的设计技术,并使之成为系统化和全面性的方法架构的一部分,供设计人员参考:二是适合学生阅读,因为虽然一些大学已经开设了数据仓库设计类的课程,但是相关用书太少。本书收集并系统化最新的一些关于数据仓库设计的重要研究成果,并总结了在多家公司应用我们的设计技术后积累的经验。
我们的学术背景和专业经验使我们不只能够在讲解数据仓库设计寸兼顾实用方法和正式理论,还使得我们能够引起人们对企业专用的应用程序和尖端研究成果的关注。我们在书中提供了大量示例,并且提供了一个现实案例研究,以便最大限度地强化这些信息的教学效果。
我们的方法在企业界的广泛应用促使我们提供了一个计算机辅助软件工程(Computer-Aided SoRware Engineehng,CASE)工具,用以支持数据仓库设计的核心阶段和相关项目文档。对此工具感兴趣的读者可以访问网址www.qbx—tool.com。
读者对象
本书适用于对了解决策支持系统领域感兴趣的数据仓库设计人员、公司和机构,也适用于学习信息系统和数据库方面的高级课程的学生。读者应该已经熟悉关系模型和实体-关系模型的基本知识,以及信息系统和信息系统设计方面的知识,否则无法从本书讨论的概念中收到最圆满的学习效果。
本书结构
第1章介绍了数据仓库设计‘领域使用的基本定义。本章回顾了可以应用的许多功能体系结构,并详细讨论了一些要点,以帮助读者理解整个过程。这些要点为:使用数据源为数据仓库提供数据,作为数据仓库的构建基础的多维模型,以及用户在访问数据仓库信息时具有的几个重要选项。本章简要讨论了实现数据仓库的两种主要方法:基于关系模型的方法和使用专门的多维解决方案的方法。后面的章节中重点讨论第1种方法,因为它远比第2种方法受欢迎。
第2章描述了数据仓库系统的生命周期,并提出了一种中系统的方法来设计它们。本章为后面的章节提供了一个参考点。本章描述了生命周期的7个阶段,后面的7章分别讨论每个阶段。本章还建议数据仓库设计由3个主要阶段(概念设计、逻辑设计和物理设计)组成,这样就可以成功地开发出传统的信息系统。此外,还介绍了3个不同设计场景:数据驱动的场景、需求驱动的场景和混合场景。提出这些场景是考虑到现实公司的情况各异,并且是为了使我们的系统方法更灵活。
第3章描述了为数据仓库提供数据的数据源分析和协调阶段。这个阶段对于确保获取的信息满足最高质量标准要求至关重要。本章深入讨论了集成多个异构数据源时涉及的活动。
第4章讨论了需求分析阶段。只有认真执行这个阶段才能确保构建的系统能够满足终端用户的需求和期望。我们介绍了两种方法:基于简单词汇表的非正式方法和用于需求驱动设计或混合设计的正式方法。
第5章提出了作为系统方法基础的概念模型——维度事实模型(Dimensional Fact Model,DFM)。我们逐渐介绍这个模型的结构,以帮助读者深入了解从建模基础到现实应用程序所需的表示细节等各种知识。.
第6章介绍概念设计,并展示如何利用数据源文档和用户需求来为数据仓库创建概念模式。
第7章描述了产生概念模式中的工作负荷表达式的阶段。这个主题对于后面的逻辑和物理设计阶段(向设计人员展示如何优化性台能)十分关键。本章还讨论了与数据卷定义有关的重要主题。
第8章介绍了关系数据仓库中最流行的逻辑建模方法。本章特别关注著名的星型架构的描述以及冗余视图,以便提高数据仓库的性能。
第9章讨论了基于概念模式的逻辑设计,以及设计人员可以使用的逻辑优化策略和?技术——最重要的是实体化视图。本章基于关系架构为每个DFM构造提供可能的实现。
当前,多家大中型组织已经建立了很出色的数据仓库系统,并且在为终端用户提供访问重要信息的简便性方面,数据仓库系统扮演了一种具有战略意义的角色。数据仓库设计最早诞生在企业界,用于应对用户不断增长的需求。一开始学术界是忽略这种现象的.并认为它只早一个技术问题,直到他们认识到数据仓库设计的复杂性和面临挑战,这种看法才得到改变。实际上,数据仓库设计这个主题已经成为国际学术会议的主要部分。自此之后,许多会议和研讨会都专门研究数据仓库设计。
在讲授了超过10年的数据库设计课程以后,我们开始研究数据仓库设计领域。我们的目的是找出是否应该丢弃为关系系统开发和测试的设计技术,或者是否也可以把它们部分应用于数据仓库设计。我们很快认识到,一方面,与用户需求的概念建模有关的基础问题都被忽视了;另一方面,杰出的研究人员已经撰写了大量关于如何优化数据仓库性能的文章,这些对这个领域起到了奠基性的作用。
我们两人都认为,在创建软件系统时,采用基于可靠的软件工程原理的系统方法十分重要。特别是,在开发数据库时,需要进行精确的概念建模。
常见的数据仓库设计实践不具备合理的系统方法和概念模型。为了填补这个空白,我们努力开发了一个全面的、有充分依据的设计方法,来帮助设计人员正确地处理数据仓库项目的各个阶段。我们的方法以使用显示数据仓库应用程序的具体特征的概念模型为中心,同时仍然基于使设计人员可以设计和创建更好项目的简易方法。我们提出的方法和概念模型的有效性已经在意大利的多家软件公司和顾问的多个项目中得到印证,也得到了专家的首肯。
本书主要目的有两个:一是总结大量的设计技术,并使之成为系统化和全面性的方法架构的一部分,供设计人员参考:二是适合学生阅读,因为虽然一些大学已经开设了数据仓库设计类的课程,但是相关用书太少。本书收集并系统化最新的一些关于数据仓库设计的重要研究成果,并总结了在多家公司应用我们的设计技术后积累的经验。
我们的学术背景和专业经验使我们不只能够在讲解数据仓库设计寸兼顾实用方法和正式理论,还使得我们能够引起人们对企业专用的应用程序和尖端研究成果的关注。我们在书中提供了大量示例,并且提供了一个现实案例研究,以便最大限度地强化这些信息的教学效果。
我们的方法在企业界的广泛应用促使我们提供了一个计算机辅助软件工程(Computer-Aided SoRware Engineehng,CASE)工具,用以支持数据仓库设计的核心阶段和相关项目文档。对此工具感兴趣的读者可以访问网址www.qbx—tool.com。
读者对象
本书适用于对了解决策支持系统领域感兴趣的数据仓库设计人员、公司和机构,也适用于学习信息系统和数据库方面的高级课程的学生。读者应该已经熟悉关系模型和实体-关系模型的基本知识,以及信息系统和信息系统设计方面的知识,否则无法从本书讨论的概念中收到最圆满的学习效果。
本书结构
第1章介绍了数据仓库设计‘领域使用的基本定义。本章回顾了可以应用的许多功能体系结构,并详细讨论了一些要点,以帮助读者理解整个过程。这些要点为:使用数据源为数据仓库提供数据,作为数据仓库的构建基础的多维模型,以及用户在访问数据仓库信息时具有的几个重要选项。本章简要讨论了实现数据仓库的两种主要方法:基于关系模型的方法和使用专门的多维解决方案的方法。后面的章节中重点讨论第1种方法,因为它远比第2种方法受欢迎。
第2章描述了数据仓库系统的生命周期,并提出了一种中系统的方法来设计它们。本章为后面的章节提供了一个参考点。本章描述了生命周期的7个阶段,后面的7章分别讨论每个阶段。本章还建议数据仓库设计由3个主要阶段(概念设计、逻辑设计和物理设计)组成,这样就可以成功地开发出传统的信息系统。此外,还介绍了3个不同设计场景:数据驱动的场景、需求驱动的场景和混合场景。提出这些场景是考虑到现实公司的情况各异,并且是为了使我们的系统方法更灵活。
第3章描述了为数据仓库提供数据的数据源分析和协调阶段。这个阶段对于确保获取的信息满足最高质量标准要求至关重要。本章深入讨论了集成多个异构数据源时涉及的活动。
第4章讨论了需求分析阶段。只有认真执行这个阶段才能确保构建的系统能够满足终端用户的需求和期望。我们介绍了两种方法:基于简单词汇表的非正式方法和用于需求驱动设计或混合设计的正式方法。
第5章提出了作为系统方法基础的概念模型——维度事实模型(Dimensional Fact Model,DFM)。我们逐渐介绍这个模型的结构,以帮助读者深入了解从建模基础到现实应用程序所需的表示细节等各种知识。.
第6章介绍概念设计,并展示如何利用数据源文档和用户需求来为数据仓库创建概念模式。
第7章描述了产生概念模式中的工作负荷表达式的阶段。这个主题对于后面的逻辑和物理设计阶段(向设计人员展示如何优化性台能)十分关键。本章还讨论了与数据卷定义有关的重要主题。
第8章介绍了关系数据仓库中最流行的逻辑建模方法。本章特别关注著名的星型架构的描述以及冗余视图,以便提高数据仓库的性能。
第9章讨论了基于概念模式的逻辑设计,以及设计人员可以使用的逻辑优化策略和?技术——最重要的是实体化视图。本章基于关系架构为每个DFM构造提供可能的实现。
序言回到顶部↑
数椐仓库设计是一个重要的课题,是商业信息的核心,而信息是现代组织的核心,不管组织是一家企业、一家非盈利性组织还是一个政府机构,信息都具有无比重要的价倌。就像生物体需要使用信息一样,组织需要使用信息来调节内部操作以及适应外部变化。人员组织使用有关内部运营状况的信息来管理成本及正确地分配资源,使用有关外部世界的信息宋管理客户和供应商,以及应对竞争和市场变化。能够很好地利用信息的绷织林林能够更加稳定地发展,而不能有效利用信息的组织则在苫苦挣扎。
现在,信息比以往任何时候都更加重要,生成和存储的信息量浩如烟海。我们面临着庞大的信息量。我们居住的模拟世界正在逐渐数字化,而在数字化的世界中,每个事件都可以袖记录、归类并存储起来,供以后分析使用。每笔商业交易、每次网站访问、每幅查看的图片、每个打出的电话和花费的每一美元都被数字伙并记录下来。在过去,购买就是发生在商店售货员和顾客之间的“模拟交易”,而现在,相同的交易通过互联网或商店的销售点终端系统进行,并将被立即记录下来。
与过去的模拟事件不同,现在的数字事件是多维的。在以前的模拟世界中,购买事件会被记录为“产品X以Y美元的价格售出”,而在当今的数字吐界中,相同的购买事件可能包含另外10个属性和维度,比如时间、周几、买主姓名、折扣水平、产品包装、产品促销、颜色、风格、库存位置、销售员姓名和买主同时购买的其他产品的清单。对于每个数字事件,可以同时记录几十个其他属性和维度,以便更好地了解该事件。
与过去的模拟事件不同,现在的数字事件不是作为孤立的事件被记录和读取的,相反,它们彼此关联在一起。商业智能系统可以捆绑相互关联的事件,以便决策者可以在时间流程或者过程流程中看到一系列事件,或者将这些事件看作因果关系,甚至看作预测计算。在上面的购买示例中,如果是模拟世界,那么所有的购买事件将被汇总到一起,以计算出一天内每件产品的总销售额;而如果是数字世界,公司希望跟踪每个客户鰂沟买模式和产品偏好,以及了解促销和产品放置位置的效果,以便能够向每个客户销售更多产品,并预测将来的库存需求和需求水平。
遗憾的是,数字世界并不能自行组织所有生成的数据。事实上,信息爆炸已经使得每个系统在捕获、组织和标记数据的方式上各有不同。基于在仓库数据模型中编码的整体业务模型,数据仓库消除了这种差别。
数字化世界最重要的意义在于组织将捕获更多的事件,将更多的维度与每个事件关联起来,以及使用越来越复杂、富有创意并且无法预测的方式将这些事件彼此关联起来。而这又意味着更多的数据、数据项之间的更多关联和更复杂的数据提取。现在,包含50TB数据、跨越很多维度并包含数百个主要指标的数据仓库十分常见。所有这些特征要求数据仓库提供非常高的性能(容量大)并且在使用和演变方面非常灵活。这是设计现代数据仓库时面临的真正挑战——在具有高性能的同时具有很高的灵活性和卓越的功能。
数据仓库设计是一个工程课题。与所有工程课题一样,高性能几乎总是以降低灵活性、减少功能为代价。只要愿意放弃一些将来的灵活性,实现高性能的系统会简单得多。同理,工程师可以创建高度灵活、功能很强的系统,但是这将以降低系统性能为代价。工程学就是要在高性能和高灵活性、强大的功能之间找出一种可行的平衡方案。这仍然是数据仓库工程师面临的最大挑战。多维数据库(例如立方体数据库)可以提供很高的性能,但是只能应用到作为立方体模型的一部分创建的计算和视图中。相反,面向对象的数据库具有几乎不限制数据检索的灵活性并允许平稳地演进数据模型,却没有很高的性能或可扩展性。现代关系数据库可以在大规模环境中提供很高的性能,并且在与能够创建复杂SQL的强大的商业智能(BI)结合使用时,可在数据提取方面提供很大的灵活性。
数据仓库设计是一个工程课题,许多人却希望它不是。他们希望数据模型并不复杂,希望聚合策略和索引方案很简单,希望不必清晰定义所有的数据关联,希望所有的BI工具能从逻辑上建立任何数据结构的模型,希望全部数据结构的性能都很高。但是些都是凭空臆想。只有付出艰苦努力,设计、填充和演化数据仓库,才能得到灵活性和性能都很好的数据仓库。
本书提供了数据仓库工程师所需的一个工程框架、技术和工具,帮助他们提供成功的数据仓库。对于想要利用新一代数字技术的全部功能的下一代数据仓库工程师来说,这是一本重要的典籍。
Mark Stephen LaRow
Micro Strategy产品管理副总裁
现在,信息比以往任何时候都更加重要,生成和存储的信息量浩如烟海。我们面临着庞大的信息量。我们居住的模拟世界正在逐渐数字化,而在数字化的世界中,每个事件都可以袖记录、归类并存储起来,供以后分析使用。每笔商业交易、每次网站访问、每幅查看的图片、每个打出的电话和花费的每一美元都被数字伙并记录下来。在过去,购买就是发生在商店售货员和顾客之间的“模拟交易”,而现在,相同的交易通过互联网或商店的销售点终端系统进行,并将被立即记录下来。
与过去的模拟事件不同,现在的数字事件是多维的。在以前的模拟世界中,购买事件会被记录为“产品X以Y美元的价格售出”,而在当今的数字吐界中,相同的购买事件可能包含另外10个属性和维度,比如时间、周几、买主姓名、折扣水平、产品包装、产品促销、颜色、风格、库存位置、销售员姓名和买主同时购买的其他产品的清单。对于每个数字事件,可以同时记录几十个其他属性和维度,以便更好地了解该事件。
与过去的模拟事件不同,现在的数字事件不是作为孤立的事件被记录和读取的,相反,它们彼此关联在一起。商业智能系统可以捆绑相互关联的事件,以便决策者可以在时间流程或者过程流程中看到一系列事件,或者将这些事件看作因果关系,甚至看作预测计算。在上面的购买示例中,如果是模拟世界,那么所有的购买事件将被汇总到一起,以计算出一天内每件产品的总销售额;而如果是数字世界,公司希望跟踪每个客户鰂沟买模式和产品偏好,以及了解促销和产品放置位置的效果,以便能够向每个客户销售更多产品,并预测将来的库存需求和需求水平。
遗憾的是,数字世界并不能自行组织所有生成的数据。事实上,信息爆炸已经使得每个系统在捕获、组织和标记数据的方式上各有不同。基于在仓库数据模型中编码的整体业务模型,数据仓库消除了这种差别。
数字化世界最重要的意义在于组织将捕获更多的事件,将更多的维度与每个事件关联起来,以及使用越来越复杂、富有创意并且无法预测的方式将这些事件彼此关联起来。而这又意味着更多的数据、数据项之间的更多关联和更复杂的数据提取。现在,包含50TB数据、跨越很多维度并包含数百个主要指标的数据仓库十分常见。所有这些特征要求数据仓库提供非常高的性能(容量大)并且在使用和演变方面非常灵活。这是设计现代数据仓库时面临的真正挑战——在具有高性能的同时具有很高的灵活性和卓越的功能。
数据仓库设计是一个工程课题。与所有工程课题一样,高性能几乎总是以降低灵活性、减少功能为代价。只要愿意放弃一些将来的灵活性,实现高性能的系统会简单得多。同理,工程师可以创建高度灵活、功能很强的系统,但是这将以降低系统性能为代价。工程学就是要在高性能和高灵活性、强大的功能之间找出一种可行的平衡方案。这仍然是数据仓库工程师面临的最大挑战。多维数据库(例如立方体数据库)可以提供很高的性能,但是只能应用到作为立方体模型的一部分创建的计算和视图中。相反,面向对象的数据库具有几乎不限制数据检索的灵活性并允许平稳地演进数据模型,却没有很高的性能或可扩展性。现代关系数据库可以在大规模环境中提供很高的性能,并且在与能够创建复杂SQL的强大的商业智能(BI)结合使用时,可在数据提取方面提供很大的灵活性。
数据仓库设计是一个工程课题,许多人却希望它不是。他们希望数据模型并不复杂,希望聚合策略和索引方案很简单,希望不必清晰定义所有的数据关联,希望所有的BI工具能从逻辑上建立任何数据结构的模型,希望全部数据结构的性能都很高。但是些都是凭空臆想。只有付出艰苦努力,设计、填充和演化数据仓库,才能得到灵活性和性能都很好的数据仓库。
本书提供了数据仓库工程师所需的一个工程框架、技术和工具,帮助他们提供成功的数据仓库。对于想要利用新一代数字技术的全部功能的下一代数据仓库工程师来说,这是一本重要的典籍。
Mark Stephen LaRow
Micro Strategy产品管理副总裁







点击看大图

加载中...

