(注意:本文参考的是Inmon的著作,因此主要介绍数据仓库设计的Inmon方法,即关系模型;关于维度模型,即Kimball方法可以参考本系列(二)(五)(六)等)
建数据仓库主要包括两部分工作:与操作型系统接口的设计和数据仓库本身的设计。此处用“设计”一词并不准确,在数据仓库之三中我们提到数据仓库是在启发方式下建造的,即螺旋式的开发过程:首先载入一部分数据供DSS分析员使用,然后根据反馈修改数据或添加其他数据,然后建立数据仓库的另一部分,如此循环。这种反馈过程贯穿于数据仓库的整个开发生命周期中。
仅将数据从操作型环境中取出并放入数据仓库中几乎挖掘不出数据仓库的任何潜力。其中最重要的原因就是数据缺乏集成。将未经集成的数据载入到数据仓库是一个非常严重的错误。数据缺乏集成包括数据编码不一致、度量单位不一致、字段语义的转换、原有数据在不同的DBMS下可能以多种不同格式存储。下面详述数据转换过程的难点。
这里,数据转换是指将从现有操作型系统传送到数据仓库系统。这个过程存在四个主要难点:集成、效率、时基变换、数据压缩。
数据编码不一致:例如,在一个应用中,性别编码为m/f,另一个应用中则编码为0/1,第三个应用中则编码为“男/女”。因此,当数据进入仓库时,应转换为统一的编码。
度量单位转换:例如,长度有的用英寸,有的用厘米,有的用毫米。在数据仓库中用哪种度量单位并不重要,重要的是必须一致。因此,想DW传送数据时,要转换为一致的度量单位。
字段语义的转换:例如,统一字段在几个应用中使用不同的名字。需要建立各个不同字源字段到数据仓库字段的映射。
原有数据在不同的DBMS下可能以多种不同格式存储:例如,它的数据源既可以是IBM DB2,也可以是Oracle、Sybase、Informix、SQL Server数据库和IMS、VSAM文件系统。为了给数据仓库添加数据,所有采用这些技术存储的数据最后都必须转换到同一种技术下存储。
每次进行数据仓库装载时,若对所有数据扫描一次,浪费资源且不可行。
从操作型环境到数据仓库有三种装载工作要做:
前两者都只需装载一次,难度不大。数据仓库刷新时,可采用以下五种技术减少扫描的操作型数据量:
数据从操作型环境到数据仓库时要经历时基变化。
数据从操作型环境传送到数据仓库时,要考虑的另一个问题是对数据仓库中已有的及要传入数据的规模进行管理。数据在抽取和进入数据仓库时都要进行压缩,否则DW中的数据量就会失控。
过程模型仅仅适用于操作型环境。数据模型既可用于操作型环境,又可用于数据仓库环境。一个过程模型一般包括:功能分解、第零层上下文图、数据流图、结构图、状态转换图、HIPO图、伪代码。在建立数据集市时过程模型是有用的。但是过程模型是需求驱动的,因此不适用于数据仓库。
企业数据模型是操作型数据模型与数据仓库数据模型的共同起源。企业数据模型用于操作型系统时,需要做的改动非常少;但是将企业模型用于数据仓库中要做相当多的改动,首先,要去掉纯粹用于操作型环境中的数据,其次,关键字中加入时间元素,再次,合适之处增加导出数据,第四,创建人工关系,第五,进行稳定性分析。稳定性分析是根据各个数据属性是否经常变化的特性将这些属性分组。
数据建模分为三个层次:高层建模(称为实体关系图,或ERD),中间层建模(称为数据项集或DIS),底层建模(称为物理模型)。
集成范围定义数据模型的边界,在建模之前由系统的建模者、管理人员和最终用户共同确定。
高层数据模型标识了实体或主要主题域,每个主题域都要进一步扩展成各自的中间层模型。中间层数据模型有四个基本的构造:主要数据分组、二级数据分组、连接器、数据的“类型”。
物理数据模型通过扩展中间层模型而来,是模型中包含有关键字和物理特性。这是物理数据模型看上去像一系列表,这些表有时称作关系表。最后一个设计步骤是进行性能优化,主要是考虑粒度和分区。物理设计中需要考虑的各种因素的核心是物理I/O的使用情况。
数据模型在迭代开发期间所起的作用:每一次迭代开发都基于同一个数据模型,各次开发工作的结果将产生一个内聚的、高度和谐的整体。
快照包括四个构成部件:标志事件发生的时间单元、用来标识快照的关键字、与关键字关联的主要非关键字数据、二级数据(可选)。
元数据与指向数据仓库内容的索引相似,处于数据仓库的上层,并且记录数据仓库中对象的位置。一般,元数据存储对一下各项进行记录:
数据仓库包含两类数据:企业日常事务数据、参照数据。使用参照数据可以显著地减少数据仓库中的数据量,所以参照数据特别适合用于数据仓库环境。数据仓库管理参照数据的设计技术有很多。一种极端是每隔6个月对整个的参照表生成一个快照。另一种极端是在某一时间起点上对参照表生成一个快照,并收集一年中所有对参照表的活动。第一种方法较简单,但逻辑上不完备,第二种复杂,但逻辑上完备。
数据周期是指从操作型环境中的数据发生改变起,到这个变化反映到数据仓库中所用的时间。通常至少为24小时。原因是:
数据转换是指数据从操作型环境到数据仓库环境的传递。这个过程要完成的主要功能:
早期,程序员需要自己编写程序实现集成,后来出现了数据集成自动化技术,即ETL软件(抽取、转换、装载)。ETL软件分两类:产生源代码的软件和产生参数化的运行时模块的软件。前者比后者欠打,它可以以原有数据的格式对它们进行访问,而运行时软件则需要首先对原有数据格式进行统一。但是统一的过程很麻烦。ETL软件的一个替代产品是ELT(Extract/Load/Transform)软件。ELT的优点是在转换的同时可以引用大量的数据,缺点是跳过转换过程,DW的价值就显著地减少了。
在数据仓库技术中经常提到的一种不同于数据库设计方法是多维方法。包括星型连接、事实表和维。多维方法只适用于数据集市,而不适合于数据仓库。数据集市很大程度上是根据需求来形成的,这与数据仓库不同。文本数据常常出现在维表中,数值数据常出现在事实表中。数据集市DSS设计中星形连接和数据模型怎样配合作为基础使用。星形连接作为设计基础应用于数据集市中很大的实体,而数据模型则应用于数据仓库中较小的实体。数据仓库中的数据时粒度化的,数据集市中的数据时紧凑和综合的。数据必须周期性地从数据仓库移到数据集市。这种转移与从操作型环境到数据仓库的转移相似。
数据仓库不是由处理需求建造成的,而是根据企业需求而设计的。聚集和组织企业需求的最好的办法之一是Zachman框架。Zachman框架一旦建立,企业的信息需求就可以从中提取出来。根据提取的需求,就可以建立企业数据模型。然后根据企业数据模型,就能以迭代的方式建立数据仓库。
Inmon.《Building the Data Warehouse(数据仓库)》(第4版)