数据仓库之二 数据仓库设计--Kimball方法
本文介绍的是数据仓库设计的Kimball方法,即多维模型;关系模型,即Inmon方法参见(四)
多维数据模型
-方体:数据汇总。方体是数据,方体的维度即各个维表,方体的值即事实表的度量;星型图则是事实表与维表的组织结构,与数据无关。
原语:
立方体定义(事实表):
define cube <cube_name> [<dimension_list>]:<measure_list>维定义(维表):
define dimension <dimension_name> as (<attribute_or_subdimension_list>)
度量
根据所用的聚集函数分为三类:
分布的--一个聚集函数是分布的,如果它能用如下分布方式进行计算:设数据划分为n个集合,将函数用于每个划分,得到n个聚集值;再将函数用于前述n个聚集值得到的结果与将函数用于整个数据集(不划分)得到的结果一样,则该函数可以用分布方式计算。一个度量是分布的,如果它可以用分布聚集函数得到。如count(),sum(),min(),max()都是分布聚集函数。
代数的--如avg(),min_N(),max_N(),standard_deviation()都是代数聚集函数。
整体的--如median(),mode(),rank()都是。
多维数据库模式
星型模式;雪花模式;事实星座模式(多个事实表共享维表)
数据仓库设计
典型的数据仓库设计过程:
-选取待建模的商务处理, 例如, 订单, 发票, 库存等.
-选取商务处理的粒度, 例如,单个事务、一天的快照等
-选取用于每个事实表记录的维, 如,时间、商品、顾客、供应商、仓库、事务类型和状态 等
-选取将安放在事实表中的度量. 典型的度量是可加的数值量, 如dollars_sold和units_sold
数据仓库设计步骤
- 概念模型设计;
概念模型最常用的是E-R法(实体-联系法,Inmon支持这种方法),使用E-R图作为描述工具。另一种方法是Kimball支持的多维模型。
此步骤主要完成的工作是:(1)界定系统边界;(2)确定主要的主题域及其内容。
例如,商场的边界可以界定为包含销售子系统、采购子系统、库存子系统在内的集合。在此基础上,确定三个基本主题:顾客、供应商、商品。
- 技术准备工作;
本阶段工作:技术评估,技术环境准备。
成果:技术评估报告,软硬件配置方案,系统(软硬件)总体设计方案。
- 逻辑模型设计;
数据仓库的逻辑模型描述了数据仓库的主题的逻辑实现,即每个主题所对应的关系表的关系模式的定义。
本阶段主要工作:(1)粒度层次划分;(2)数据分割策略;(3)记录系统定义;(4)关系模式定义。
物理模型设计;
主要工作:(1)确定存储结构;(2)确定索引结构;(3)确定存放位置;(4)确定存储分配。数据仓库生成;
主要工作:(1)设计接口;(2)数据装入。
接口是指将操作性环境下的数据装载进入数据仓库环境,需要在两个不同环境的记录系统之间建立一个接口。
- 数据仓库运行与维护
包括:(1)建立DSS应用;(2)理解需求,改善和完善系统,维护数据仓库。
DSS应用开发的步骤:确定所需的数据、编程抽取数据、合并数据、分析数据、回答问题、例行化。
数据仓库环境--Inmon
数据仓库环境
数据仓库是一个面向主题的、集成的、非易失的、随时间变化的用来支持管理人员决策的数据集合。数据仓库包含粒度化的企业数据。在数据仓库的所有特性中,集成是最重要的。
数据仓库中数据的主要设计问题:粒度问题,分区。
分区
数据分区的标准完全由开发人员来决定。在数据仓库环境中,日期几乎总是分区标准中的一个必然组成部分。可采用的分区标准包括时间、业务范围、地理位置、组织单位等等。
数据仓库中的数据组织
简单堆积结构
轮转综合数据存储
简单直接文件
连续文件
数据仓库的关键字总是复合关键字,因为:日期几乎总是关键字的一部分;分区总是关键字的一部分。
数据仓库环境主要构件
- 操作型源系统
- 数据聚集环节:ETL
- 数据展示:数据应以维度形式进行展示、存储和访问;数据中心中必须包括详细的原子数据。
- 数据存取工具:所有数据存取工具访问的是数据仓库展示环节中的数据。
设计数据仓库--Inmon方法(即关系模型)
从操作型数据开始
数据转换难点
数据缺乏集成--格式编码不一致
访问现有系统数据的效率
从操作型环境到数据仓库有三种装载工作要做:
装载档案数据。
装载操作型系统中的现有数据。
将上次DW刷新以来操作型环境中发生的变化(更新)从操作型环境中装载到数据仓库中。
前两者都只需装载一次,难度不大。数据仓库刷新时,可采用以下五种技术减少扫描的操作型数据量:
扫描在操作型环境中被打上时戳的数据。
扫描增量文件。
对事务处理产生的日志文件或审计文件进行扫描。日志文件与增量文件基本相同,但日志文件不如增量文件专用于此功能。
修改应用程序代码。不常用。
将一个“前”映像文件和一个“后”印象文件进行比较。这种方法很麻烦、复杂,耗费资源,因此是下下策。
时基变化
数据压缩
数据仓库与数据模型
数据仓库的数据模型
数据建模分为三个层次:高层建模(称为实体关系图,或ERD),中间层建模(称为数据项集或DIS),底层建模(称为物理模型)。
数据模型与迭代式开发
数据模型在迭代开发期间所起的作用:每一次迭代开发都基于同一个数据模型,各次开发工作的结果将产生一个内聚的、高度和谐的整体。
相关物理设计技术
数据模型的输出是大量的表,每个表包含关键字和属性,其中每个表只包含少量数据。通常将这些表物理合并,使得I/O代价最小化。需要物理设计人员解决的是采用什么样的策略来合并这些表。
另一种能够节省I/O的设计技术是创建数据数组。
引入冗余数据。
当访问率相差悬殊时,对数据做进一步的分离。
引入导出数据(即已计算出的)以减少所需I/O。
最具创新性的技术之一是创造性索引或创造性概要文件。
参照完整性管理。
元数据
元数据,即描述数据的数据,与指向数据仓库内容的索引相似,处于数据仓库的上层,并且记录数据仓库中对象的位置。
数据周期
数据转换
早期,程序员需要自己编写程序实现集成,后来出现了数据集成自动化技术,即ETL软件(抽取、转换、装载)。
星型连接
在数据仓库技术中经常提到的一种不同于数据库设计方法是多维方法。包括星型连接、事实表和维。
需求和Zachman框架
数据仓库不是由处理需求建造成的,而是根据企业需求而设计的。聚集和组织企业需求的最好的办法之一是Zachman框架。Zachman框架一旦建立,企业的信息需求就可以从中提取出来。根据提取的需求,就可以建立企业数据模型。然后根据企业数据模型,就能以迭代的方式建立数据仓库。
数据仓库的概念建模与概念设计-Golfarelli
数据仓库设计包括3个主要阶段:概念设计、逻辑设计、物理设计,其中,概念模型即为星型图或雪花模型;而逻辑设计阶段则是对星型图的细化。。3种不同的设计场景:数据驱动的场景、需求驱动的场景、混合场景。在数据集市设计中可以使用3种基本的系统方法:数据驱动的方法、需求驱动的方法和混合方法。它们的区别在于源数据库分析和终端用户需求分析阶段所占的比重。
概念建模
DFM维度事实模型
数据仓库的概念设计
Oracle Warehouse Builder(OWB)创建数据仓库
Oracle的OWB是目前最好的三大ETL产品之一。OWB不但可以可以完成数据的抽取、转换和加载,还能帮助用户在Oracle数据库中创建ROLAP(Relational Online Analysis Process)和MOLAP(Multidimensional Online Analysis Process)数据仓库对象,数据质量管理,商务智能定义等。
OWB数据处理流程
(1)进入“Design Center”
新建“控制中心(Control Center)”
新建“项目(Project)”
定义“数据源模块(Module)”
定义“目标数据模块(Module)”
设计“映射(Mapping)”
设计“进程流(Process Flow)”确定映射运行的先后顺序
设计“计划(Schedule)”
“配置(Configure)”映射和工作流,添加不同映射和工作流的“计划”,部署后会形成“工作(Job)”
(2)在Design Center中创建Control Center,并且将其配置为缺省的Control Center
(3)打开“控制中心管理器(Control Center Manager)”
确定数据源和目标数据库的实际物理配置,“注册(Register)”“位置(Location)”为部署和执行打下基础
“部署(Deploy)”某个项目、位置、模块下所有对象,这些操作完成了如下工作:DDL、DML、Control File、Workflow代码、Job生成代码或者ABAP等代码在目标用户所在数据库上的生成,DDL语句的部署同时完成了对象在目标用户所在数据库上的生成,DML、Control File、Workflow、Job需要下一步的执行才可以真正完成
“执行(Execute)”工作,实现周期ETL