赞
踩
在建设数据仓库之前,数据散落在企业各部门应用的数据存储中,它们之间有着复杂的业务连接关系,从整体上看就如一张巨大的蜘蛛网:结构上错综复杂,却又四通八达。在企业级数据应用上单一业务使用方便,且灵活多变;但涉及到跨业务、多部门联合应用就会存在:①数据来源多样化,管理决策数据过于分散;②数据缺乏标准,难以整合;③数据口径不统一,可信度低;④缺乏数据管控体系,数据质量难以保证。如下图:
如果企业在数据建设方面没有一个整体的规划,而采取自然演化的方式,那么在未来数据应用的过程中,将不得不面对以下问题:
基于以上这些的问题,就产生了建立企业级数据仓库的必要性。
数据仓库的萌芽阶段:MIT(麻省理工学院)在20世纪70年代进行了大量研究,经过一系列测试论证,最终提出将业务系统和分析系统分开,将业务处理和分析处理分成不同的层次。也就是如下结论:分析系统和业务系统,只能采用完全不同的架构和设计方法分别处理。
数据仓库的原理、架构和规范的探索阶段:1988年IBM提出了“Information Warehouse”,目标就是为解决企业数据集成问题,在设计上能够实现“一个结构化的环境,能支持最终用户管理其全部的业务,并支持信息技术部门保证数据质量”。但是IBM只是将这种先进的概念用于市场宣传,而没有付诸实践的架构设计。
数据仓库正式提出:1991年Bill Inmon出版了数据仓库的第一本书《Buildingthe Data Warehouse》,提出了数据仓库的概念,阐述了为什么要建立数据仓库,并且也给出了建设数据仓库的方式。
数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的(随着时间流逝发生变化)的数据集合。它主要支持企业管理人员决策分析。数据仓库收集了企业相关的内部和外部各个业务系统数据源、归档文件等一系列历史数据,最后转化成企业需要的战略决策信息。
数据仓库和数据库的不同:数据库是面向应用的、事务型的数据处理,一般来说具有实时性较高,数据检索量较小,只存储当前数据,访问频率高,要求的响应时间短,面对多为普通用户,且数量较大的特点。而数据仓库主要是面向主题的、分析型的数据处理,具有实时性要求不高,数据检索量较大,存储大量历史数据和当前数据,访问频率中低,响应时间较长,主要针对特殊用户群体,用户量较小的特点。其中事务型和分析型处理数据是有区别的:
1、ODS定义
ODS是这样一种数据存储系统,它将来自不同数据源的数据(各种操作型数据库、外部数据源等)通过ETL过程汇聚整合成面向主题的、集成的、可更新的、当前或接近当前的、企业全局一致的数据集合(主要是最新的或者最近的细节数据以及可能需要的汇总数据),用于满足企业准实时的OLAP操作和企业全局的OLTP操作,并为数据仓库提供集成后的数据,将数据仓库系统中的ETL过程下沉到ODS中完成以减轻数据仓库的压力。
2、ODS特点
ETL
过程;3、ODS与DW的区别
①存放的数据内容不同:ODS中主要存放当前或接近当前的数据、细节数据,可以进行联机更新。DW中主要存放细节数据和历史数据,以及各种程度的综合数据,不能进行联机更新。ODS中也可以存放综合数据,但只在需要的时候生成。
②数据规模不同:由于存放的数据内容不同,因此DW的数据规模远远超过ODS。
③技术支持不同:ODS需要支持面向记录的联机更新,并随时保证其数据与数据源中的数据一致。DW则需要支持ETL技术和数据快速存取技术等。
④面向的需求不同:ODS主要面向两个需求:一是用于满足企业进行全局应用的需要,即企业级的OLTP和即时的OLAP;二是向数据仓库提供一致的数据环境用于数据抽取。DW主要用于高层战略决策,供挖掘分析使用。
⑤使用者不同:ODS主要使用者是企业中层管理人员,他们使用ODS进行企业日常管理和控制。DW主要使用者是企业高层和数据分析人员。
4、ODS在数据仓库建设中的作用
大型数据仓库的建设中一般采用三层体系结构,如下图:
ODS和DW面向不同的用户,为不同的需求产生,因此都有不可替代的作用,两者相互结合、相互补充。ODS在三层体系结构中扮演着承上启下的作用:
1、数据集市定义
数据集市是一组特定的、针对某个主题域、某个部门或者某些特殊用户而进行分类的数据集合,也可以说是小型的数据仓库。
2、数据仓库与数据集市的区别
数据仓库是企业级的,能为整个企业各个部门的运行提供决策支持手段;而数据集市则是一种微型的数据仓库,它通常有更少的数据,更少的主题区域,以及更少的历史数据,因此是部门级的,一般只能为某个局部范围内的管理人员服务,因此也称之为部门级数据仓库。
数据仓库建立之前,就必须考虑其实现方法,通常有自顶向下、自底向上和两者结合进行的这样三种实现方案。
自顶向下的实现需要在项目开始时完成更多计划和设计工作,这就需要涉及参与数据仓库实现的每个工作组、部门或业务线中的人员。要使用的数据源、安全性、数据结构、数据质量、数据标准和整个数据模型的有关决策一般需要在真正的实现开始之前就完成。
自底向上的实现包含数据仓库的规划和设计,无需等待安置好更大业务范围的数据仓库设计。这并不意味着不会开发更大业务范围的数据仓库设计;随着初始数据仓库实现的扩展,将逐渐增加对它的构建。现在,该方法得到了比自顶向下方法更广泛的接受,因为数据仓库的直接结果可以实现,并可以用作扩展更大业务范围实现的证明。
每种实现方法都有利弊。在许多情况下,最好的方法可能是某两种的组合。该方法的关键之一就是确定业务范围的架构需要用于支持集成的计划和设计的程度,因为数据仓库是用自底向上的方法进行构建。在使用自底向上或阶段性数据仓库项目模型来构建业务范围架构中的一系列数据集市时,您可以一个接一个地集成不同业务主题领域中的数据集市,从而形成设计良好的业务数据仓库。这样的方法可以极好地适用于业务。在这种方法中,可以把数据集市理解为整个数据仓库系统的逻辑子集,换句话说数据仓库就是一致化了的数据集市的集合。
关于Inmon 和 Kimball的大辩论:Ralph Kimball 和 Bill Inmon 一直是商业智能领域中的革新者,开发并测试了新的技术和体系结构。在BI/DW领域中,围绕“哪一种数据仓库架构(Data Warehouse Architecture)最佳?”的争论一直没有休止,这个问题同时也是企业在建立DW时需要决策的关键问题:Bill Inmon的集线器架构/企业信息工厂架构(Hub and Spoke / CIF – Corporate Information Factory)与 Ralph Kimball的数据集市/数据仓库总线架构(Data Mart Bus Architecture/Data Warehouse Bus Architecture)则是DW架构的争论焦点。
数据仓库架构的选取,与其所处的企业环境和业务的发展有着密切的关系:Inmon提倡的数据仓库建设方法,需要数据仓库建设人员自顶向下进行建设,数据仓库开发人员需要在数据仓库建设之前对企业各业务线进行深入的调研,有着非常全面的了解,然后根据企业各业务特点进行主题域划分。这种建设方式建设周期比较长,规划设计比较复杂,但是一旦建成,这个集中式的体系结构将提供更强的一致性和灵活性,并且从长远来看将真正节省资源和工作;Kimball提倡的数据仓库仅仅是构成它的数据集市的联合,各部门或业务可以根据自身的发展,建设符合自身主题的数据集市,并持续丰富完善这些数据集市。在应对企业级数据需求时,将这些数据集市的维度信息进行统一整理规范,然后通过一致的维度信息,将这些数据集市连接起来,使数据集市形成一个覆盖企业所有部门或业务的数据仓库,对外提供服务。
根据企业发展阶段和业务发展的速度建议:传统的、业务成熟的企业可以考虑采用Inmon方法建设数据仓库;业务复杂而且差异较大、发展速度又非常快的企业可以考虑Kimball方法建设数据仓库。
美团在初期数据仓库建设的过程中基本采用了Inmon提倡的数据仓库建设方法,采用了DataSource-->ODS→EDW→DM的结构。即由ODS层完成各部门数据源的集成,在ODS的基础上建设了覆盖公司所有业务的包含众多主题的统一的数据仓库,然后由这个统一的数据仓库作为唯一的数据源,为各部门的数据集市提供数据支持。如下图:
采用上面方案的建设背景是,当时美团大多数业务都是通过团购开展的,形式上比较单一,规划建设上比较容易,而且数据组也非常希望建设一个标准的数据仓库。但是公司各部门发展速度非常快,业务变化非常大。Inmon模式下EDW规划复杂、建设周期长,不能非常快速的响应各部门的需求,所以该方案逐步不能适应公司的发展。从而采用了Kimball的变种模式,结构如下:
从图上可以看出,与原有的架构最大的区别是:各部门数据集市的数据源并不是唯一的从数据仓库获取,而是从各部门数据源所集成到的ODS层获取。但是有各部门数据集市也会涉及到跨部门的数据统计,所以这种公司级的数据应用还是从数据仓库中获取。也就是各部门数据集市来支持各部门业务需求;企业级数据需求,从各部门数据集市或ODS层抽取公共模型进行建设(例如:公司级订单、用户等),并且在这里将各部门集市所依赖的公共维度进行统一,来支持公司级或跨部门的业务需求。
数据模型是指实体、属性、实体之间的关系对业务概念和逻辑规则进行统一的定义,命名和编码,主要描述企业的信息需求和业务规则,是业务人员和开发人员沟通的语言,是数据仓库设计工作的第一步。
首先我们需要解决三个问题:①什么是数据模型;②为什么需要数据模型;③如果创建数据模型;
数据模型是抽象描述现实世界的一种工具和方法,是通过抽象的实体及实体之间联系的形式,来表示现实世界中事务的相互关系的一种映射。在这里数据模型表现的抽象的实体和实体之间的关系,通过对实体和实体之间关系的定义和描述,来表达实际的业务中具体的业务关系。
数据仓库模型是数据模型中针对特定的数据仓库应用系统的一种特定的数据模型,一般的来说,我们数据仓库模型分为以下几个层次:业务模型、领域模型(主题域模型)、逻辑模型、物理模型。因此整个数据仓库建模过程中,一般需要经历四个过程:
因此在整个数据仓库的模型的设计和架构中,即涉及到业务知识,也涉及到具体的技术,我们既需要了解丰富的行业经验,同时也需要一定的信息技术来帮助我们实现我们的数据模型,最重要的是,我们还需要一个非常适用的方法论,来指导我们自己针对我们的业务进行抽象、处理、生成各个阶段的模型。
在数据仓库的建设中,我们一再强调需要数据模型,那么数据模型究竟为什么这么重要呢?首先我们需要了解整个数据仓库的建设的发展史。数据仓库的发展大致经历了这样的三个过程:
通过对数据仓库建设的发展阶段,我们能够看出,数据仓库的建设和数据集市的建设的重要区别就在于数据模型的支持。因此,数据模型的建设,对于我们数据仓库的建设,有着决定性的意义。 一般来说,数据模型的建设主要能够帮助我们解决以下的一些问题:
下面是数据仓库模型阶段划分:
从上图可以看出,数据仓库的数据建模大致分为四个阶段:
从定义上来说,业务模型是最高层次的数据模型,主要完成:
主题域模型数据仓库的主要主题和重要业务之间的关系。一般来说,在进行数据仓库系统设计和开发之前,设计开发人员和业务人员通过前期的业务建模,已经对主题域的划分达成共识,因为主题域模型反映的是核心的业务问题。主题域模型设计步骤如下:
主题域建模的流程大致可以划分成如下几个部分:在前一个阶段业务建模的过程中,已经对业务系统进行数据的梳理。根据各业务的特点列出数据主题详细的清单,并对每个数据主题都作出详细的解释,然后经过归纳、分类,整理成各个数据主题域,列出每个数据主题域包含哪些部分,并对每个数据主题域作出详细解释,最后划分成主题域概念模型。
从定义上讲,逻辑模型是以概念模型为基础,对概念模型的进一步细化、分解。逻辑模型通过实体和实体之间的关系描述业务的需求和系统实现的技术领域,是业务需求人员和技术人员沟通的桥梁和平台。 逻辑模型的设计是数据仓库实施中最重要的一步,因为他直接反应了业务部门的实际需求和业务规则,同时对物理模型的设计和实现具有指导作用。他的特点就是通过实体和实体之间的关系勾勒出整个企业的数据蓝图和规则。 概念模型的主题域一般是从企业现有的信息系统和行业自身业务活动汇总的来的业务模型主题域。而逻辑模型除了在概念模型的基础上丰富和细化主题域,并且确定每个主题域包含哪些主题外,还需要:
在逻辑模型的基础上,为应用生产环境选取一个合适的物理结构的过程,包括合适的存储结构和存储方法,称作物理模型的设计过程。逻辑模型转变为物理模型包括以下几个步骤:
实体建模并不是数据仓库建模中常见的一个方法,它来源于哲学的一个流派。从哲学的意义上说,客观世界应该是可以细分的,客观世界应该可以分成由一个个实体,以及实体与实体之间的关系组成。那么在数据仓库的建模过程中完全可以引入这个抽象的方法,将整个业务也可以划分成一个个的实体,而每个实体之间的关系,以及针对这些关系的说明就是我们数据建模需要做的工作。
虽然实体建模看起来好像有些抽象,其实理解起来很容易。即我们可以将任何一个业务划分成3个部分,实体,事件和说明。
上图表述的是一个抽象的含义,如果描述一个简单的事实:“小明开车去学校上学”。以这个业务事实为例,我们可以把“小明”,“学校”看成是一个实体,“上学”描述成一个业务过程,在这里可以抽象为一个具体“事件”,而“开车去”怎可以看成事件“上学”的一个说明。
从上面列举的例子可以了解,我们使用的抽象归纳方法其实很简单,任何业务可以看成3个部分:
由于实体建模法,能够很轻松的实现业务建模的划分。因此,在业务建模阶段和领域建模阶段,实体建模方法有着广泛的应用。一般在没有现成的行业建模的情况下,可以采用实体建模的方法,和客户一起清理整个业务的模型,进行领域概念的划分,抽象出具体的业务概念,结合客户的使用特点,完全可以创建出一个符合自己需要的数据仓库模型来。
但是,实体建模也有着自己先天的缺陷,由于实体说明法只是一种抽象客观事件的方法,因此,注定了该建模方法只能局限在业务建模和领域概念建模阶段。因此,到了逻辑建模阶段和物理建模阶段,则是范式建模和维度建模发挥长处的阶段。
范式建模法其实是我们在构建数据模型常用的一个方法,该方法的主要由inmon所提倡,主要解决关系型数据库中数据存储,利用的一种技术层面上的方法。目前,在关系型数据库中的建模方法,大部分采用的是三范式建模法。
范式是数据库逻辑模型设计的基本理论,一个关系模型可以从第一范式到第三范式进行无损分解,这个过程也可以称为规范化。在数据仓库的模型设计中目前一般采用第三范式,他有着严格的数学定义。从其表达的含义来看,一个符合第三范式的关系必须具有以下三个条件:
根据Inmon的观点,数据仓库模型的建设方法和业务系统的企业数据模型类似。在业务系统中,企业数据模型决定了数据的来源,而企业数据模型也分为两个层次,即主题域模型和逻辑模型。同样,主题域模型可以看成业务模型的概念模型,而逻辑模型则是域模型在关系型数据库上的实例化。
从业务数据模型转向数据仓库模型时,同样也需要有数据仓库的域模型,即概念模型,同时也存在域模型的逻辑模型。这里,业务模型中的数据模型和数据仓库的模型稍稍有一些不同,主要区别在于:
范式建模法的最大优点就是从关系型数据库的角度出发,结合了业务系统的数据模型,能够比较方便的实现数据仓库的建模。但其缺点也很明显,由于建模方法限定在关系型数据库之上,在某些时候反而限制了整个数据仓库模型的灵活性,性能等,特别是考虑数据仓库的底层数据向数据集市的数据进行汇总时,需要进行一定的变通才能满足响应的需求。
维度建模是kimball最先提出的。其最简单的描述就是:按照事实表,维表来构建数据仓库、数据集市。这种方法最被人广泛知晓的名字就是星型建模。
上图就是这个架构中最典型的星型架构。星型模式之所以被广泛使用,在于针对各个维做了大量的预处理,如按照维进行预先的统计、分类、排序等。通过这些预处理,能够极大的提升数据仓库的处理能力。特别是针对3NF的建模方法,星型模式在性能上占据明显的优势。
同时,维度建模法的另外一个优势是:维度建模非常直观,仅仅围绕着业务模型,可以直观的反应出业务问题。不需要经过特别的抽象处理,即可以完成维度建模。这一点也是维度建模的优势。
但是维度建模的缺点也非常明显,由于在构建星星模型之前需要进行大量的数据预处理,因此会导致大量的数据处理工作。而且,当业务发生变化,需要重新进行维度的定义时,往往需要重新进行维度数据的预处理。而在这些预处理的过程中,往往会导致大量的数据冗余。
另外一个维度建模的缺点是:如果只是单纯的维度建模,不能保证数据来源的一致性和准确性,而且在数据仓库的底层,不是特别适用于维度建模的方法。
维度建模是DW/BI系统的核心,他是ETL系统的目标、数据库的结构、支持用户查询和制作报表的模型。建模要实现3个主要设计目标,分别是:能尽可能简洁的向用户展示需要的信息;能尽快返回查询结果给用户;能提供相关信息,以便精确的跟踪潜在的业务过程。
维度建模能使任何事情尽可能简单,但绝不是简化。在数据仓库和商业智能中,维度模型是给用户显示信息的首选结构,其比典型的原系统规范化模型更便于用户理解。维度建模中表更少,信息分组为对用户有意义的、一致的业务类别。这些类别称为维度,有助于用户浏览模型,因为可以忽略与特定分析无关的全部类别。但是尽可能简洁并不意味着模型一定简单。模型必须反映业务,而业务通常都比较复杂,如果简化的过多,一般来说只表示了聚合数据,模型就会丢失对理解业务非常重要的信息。无论如何进行数据建模,数据内容在的复杂性都使大多数人最终愿意通过结构化报表和分析应用程序来访问DW和BI系统。
维度建模能提供更好的查询性能,因为在创建维度时采用了反规范化的方法,通过预先连接各种层次结构和查询表,优化程序考虑的连接路径较少,创建的中间临时表更少。
为了精确跟踪潜在的业务过程,需要采用各种设计模式,以创建出精确捕获和跟踪业务模型。维度模型由一个或者多个中心事实表和与其相关的维度构成。事实表位于中心,而维度环绕在其周围,类似于星型结构,因此又把维度模型成为星型模型。
事实表是维度模型的基本表,存放有大量的业务性能度量值。应力图将从一个业务处理过程得到的度量值数据存放在单个数据中心。由于度量值数据压倒性的成为任何数据中心的最大部分,因此应该避免在企业范围内的不同地方存储其拷贝。用术语“事实”代表一个业务度量值。例如:商品销售记录每个商店每种产品的销售数量和销售额。在各维度值(日期、产品和商店)的交叉点就可以得到一个度量值。维度值的列表给出了一个事实表的粒度定义,并确定出度量值的取值范围是什么。
事实表的设计中要解决几个重要问题:
事实表的分类:事务事实表、周期快照事实表、积累快照事实表。
维度表包含有业务的文字描述。在一个设计合理的维度模型中,维度表有许多列或者属性,这些属性给出对维度表的行所进行的描述。维度表倾向于将列数做的特别大,每个维度用单一的主关键字进行定义,主关键字是确保同与之相连的任何事实表之间存在应用完整性的基础。
维度属性是查询约束条件、成组与报表标签生成的基本来源。例如,一个用户要按照“星期”和“商标”来查看销售额,那么“星期”与“商标”就必须是可用的维度属性。数据仓库的能力直接与维度属性的质量和深度成正比。在提供详细的业务用语属性方面所化的时间越多,数据仓库就越好。在属性列值的给定方面所花的时间越多,数据仓库就越好。在保证属性列值的质量方面所花的时间越多,数据仓库就越好。
最好的属性是文本的和离散的。属性应该是真正的文字而不应是一些编码简写符号。例如:对于产品来说,典型的属性应该包括一个短描述、一个长描述、一个商标名、一个分类名、包装类型、尺寸以及大量其他产品特征等方面的内容。
维度表时常描述业务中的层次关系。例如:产品划分为商标、然后是分类。产品维度的每行都存放有与产品有关的商标和分类。但是存放层次描述信息显得很冗余, 不过也是基于容易使用和查询性能方面的考虑才这样做的。不要受仅仅存储商标编码并为其建立一个单独的商标查询表的固有想法所限制,这种形式可以称为雪花。维度表一般是很不规范的,通常也非常小。既然维度表一般都很小,通过规范化或者雪花来提高存储效率的做法也起不了大作用,所以实际应用中,几乎总是用维度表的空间来换取简明性和可访问性。
还需要了解:退化维度、多层次维度、非规范化扁平维度、雪花维度。OLAP对维度的划分有:强制维度、普通维度、衍生维度、层次维度。
需要掌握:一致性维度集成、缓慢变化维处理、层次维度处理
由数字型度量值组成的事实表连接到一组填满描述属性的维度表上。这个星型特征结构通常被叫做星型连接方案。关于维度方案,应该注意第一件事就是其简明性与对称性。简明性是指用户可以很容易的理解和浏览数据;简明性也提升了性能上的好处,仓库在处理时首先对维度表进行过滤处理,然后用满足用户约束条件的维度表关键字的笛卡尔乘积一次性处理全部的事实表。
维度表模型能够很自然的进行扩展以适应变化的需求。维度模型的可预订框架能够经受住无法预见的用户行为变化所带来的考验。每个维度都是平等的,所有维度都是进入事实表的对等入口。每个逻辑模型不存在内置的关于某种期望的查询形式方面的偏向,不存在这个月要问的业务问题相对于下个月来说具有优化方面的考虑。没有谁希望,如果业务用户采用新的方式进行业务分析,就要调整设计方案这样的事情发生。维度模型的事实与维度表如下:
在设计过程中,最佳粒度或者原子数据具有最佳的维度。被聚合起来的原子数据是最有表现力的数据。原子数据应该成为每个事实表设计的基础。从而经受住业务用户无法预见的查询所引起的特别攻击。对于维度模型来说,完全可以向方案中加入新的维度,只要其值对于每个现有的事实行存在唯一性定义就行。同样,可以向事实表加入新的不曾预料到的事实,只要其详细程度与现有事实表处在一致的水平面上就可以了。可以用新的不曾预料到的属性补充先前存在的维度表,也可以从某个前向时间点的角度在一个更低的粒度层面上对现存维度进行分解。在每种情况下,可以简单的在表中加入新的数据行或者对现在表进行适当的修改。
认识事实与维度表之间互补性的另外一种方式是在所形成的报表中了解他们。如上图,维度属性提供了生成报表标签的内容,而事实表则提供了报表的数字型取值。
最后就像已经强调的那样,展示环节的数据应该是维度形式的。不过,维度模型与规范化模型之间存在着一种自然的关系。理解这种关系的关键在于认识到,单个规范化ER图通常分解为多个维度方案。为机构建立的大型规范化模型可以将电话销售、订购单、装货发票、顾客付款、产品利润等内容全部放在一个图中。在某种程度上讲,规范化ER图对自身就是一种伤害,原因在于他将许多从来就不会出现在单个数据集中的多个业务处理放在了单张绘制图中。可见,规范化模型看起来很复杂,是不足为奇的。
如果有一张已经存在的规范化ER图,将它转换为一组维度模型的第一步是,将ER图分成一些分散的业务处理过程,然后分别单独建模。第二步是选出ER图中那些含有数字型与可加性非关键字事实的多对多关系,并将他们标记为事实表。最后一步是,将剩下的所有表复合成具有直接连接到事实表的单连关键字的平面表,这些表就成为维度表。
维度建模具有一定顺序,分别是:①业务处理②粒度③维度④事实。
业务处理过程是机构中进行的一般都是有源系统提供支持的自然业务活动。听取用户的意见是选取业务处理过程的效率最高的方式。在选取业务阶段,数据模型设计者需要有全局和发展的视角,应该理解整体业务流程的基础上,从全局角度选取业务处理。
要记住的重要一点是,这里谈到的业务处理并不是指业务部门或者职能。通过将注意力集中放在业务处理过程方面,就能在机构范围内更加经济的提交一致的数据。如果建立的维度模型是同部门捆绑在一起的,就无法避免出现具有不同标记与术语的数据拷贝的可能性。多重数据流向单独的维度模型,会使用户在应付不一致性的问题方面显得很脆弱。确保一致性的最佳办法是对数据进行一次性的发布。单一的发布过程还能减少ETL的开发量,以及后续数据管理和磁盘存储方面的负担。
粒度定义意味着对各事实表行,实际代表的内容给出明确的说明。粒度传递了同事实表度量值相联系的细节所达到的程度方面的信息。他给出了后面这个问题的答案“如何描述事实表的单个行?”
粒度定义是不容轻视的至关重要的步骤。在定义粒度时应优先考虑为业务处理获取最有原子性的信息而开发维度模型。原子性数据是所收集的最详细的信息,这样的数据不能再做更进一步的细分。通过在最低层面上装配数据,大多原子粒度在具有多个前段的应用场合显示出其价值所在。原子型数据是高度维结构化的。事实度量值越细微并具有原子性,就越能够确切的知道更多的事情,所有那些确切知道的事情都转换为维度。在这点上,原子型数据可以说是维度方法的一个极佳匹配。
原子型数据可为分析方面提供最大程度的灵活性,因为他可以接受任何可能形式的约束,并可以以任何可能的形式出现。维度模型细节性数据是稳如泰山的,并随时准备接受业务用户的特殊攻击。
当然,可以总是给业务处理定义较高层面的粒度,这种粒度表示最具有原子性的数据的聚集。不过,只要选取较高层面的粒度,就意味着将自己限制到更少或者细节性可能更小的维度上了。具有较少粒度性的模型容易直接遭到深入到细节内容的不可预见的用户请求的攻击。聚集概要性数据作为调整的一种手段起着非常重要的作用,但他绝不能作为用户存取最底层面细节内容的替代品。遗憾的是,有些权威人士在这方面一直含糊不清,他们宣称维度模型只适合于总结性数据,并批判那些认为维度建模方法可以满足预测业务需求的看法。这样的误解会随着细节性的原子型数据在维度模型中的出现而慢慢的消失。
维度所引出的问题是:“业务人员将如何描述从业务处理过程得到的数据?”。应该用一组在每个度量上下文中取单一值而代表了所有可能情况的丰富描述,将事实表装扮起来。如果对粒度方面的内容很清楚,那么维度的确定一般是非常容易的。通过维度的选定,可以列出那些使每个维度表丰满起来的离散的文本属性。常见的例子包括:日期、产品、客户、账户和机构等。
他是设计过程的第四步也是最后一步,在于仔细确定那些事实要在事实表中出现。事实的确定可以通过回答“要对什么内容进行评测”这个问题来进行。业务用户在这些业务处理性能度量值的分析方面有浓厚的兴趣。设计中所有供选取的信息必须满足在第2步中定义的粒度要求。明显属于不同粒度的事实必须放在单独的事实表中。通常可以从以下三个角度来建立事实表:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。