4.1 数据仓库的定义

数据仓库数据的4个基本特征

 数据仓库的数据是面向主题的

 数据仓库的数据是集成的

 数据仓库的数据是不可更新的

 数据仓库的数据是随时间不断变化的

 

数据仓库的数据是面向主题的

1.主题

是一个抽象的概念,是在较高层次上将企业信息系统中的数据综合、归类并进行分析利用的抽象。面向主题的数据组织方式,就是在较高层次上对分析对象的数据的一个完整、一致的描述,能完整、统一地刻画各个分析对象所涉及的企业的各项数据,以及数据之间的联系。


如果数据仓库的诗句是基于一个业务的需求而组建的,那么如果再创建数据仓库的时候我们一定要有一个主题
比如同样是刚才看到的商场的数据库,我现在想分析商品,那么商品就可以作为一个主题
我们就进行数据组织,在组织的过程中围绕主题,保证数据的一致性、完整性,这样的过程都是围绕一个主题完成的

从信息管理的角度    在一个较高的管理层次上对信息系统中的数据按照某一具体    的管理对象进行综合、归类所形成的分析对象。

 从数据组织的角度    一些数据集合,对分析对象进行了比较完整的、一致的数据    描述,这种描述不仅涉及数据自身,还涉及数据之间的关系。

2.主题划分的原则

必须保证每个主题的独立性。保证对主题进行分析时所需的数据都可以在此主题内找到,保证主题的完备性。

3.主题划分的实例

“会员制”经营方式的商场,按业务已建立起销售、采购、库存管理以及人事管理子系统。

仓库的组织结构图 仓库的组织结构设计_数据

这里拿采购来举例

仓库的组织结构图 仓库的组织结构设计_仓库的组织结构图_02

围绕主题我们要进行重新的数据组织,那么以商品为例,

商品的主题包含有固有信息,采购信息,销售信息,库存信息,每一种信息我们都需要一些属性来进行数据表现

我们看到在我们的数据当中有可能是从原来的数据库一张表得到的,也可能是来自于若干个表进行的集成

那么我们围绕主题,把原来的数据库当中的数据进行了相应的一个整合和一个重组

仓库的组织结构图 仓库的组织结构设计_数据仓库_03

我们看到在顾客和供应商之间他们没有交集,但是他们和商品都是有交集的,在交集的地方他们实际上事由一些共用的一些属性,那么它们是可以作为键的一部分,这是我们看到在主题之间的一些关联

 

数据仓库的数据是集成的

 统一源数据

   命名规则、编码、数据特征及度量单位

 综合和计算

我们在构建数据仓库的时候,我们可能要从数据库的不同的表或者可能是不同的数据库当中进行数据的提取

那么进行整合的时候,我们要把很多的内容进行整合

比如说它的命名规则,包括我们的编码以及他的度量单位都要进行一个相应的整合

例如在原来数据当中记录一个人的性别,可能用男女,可能用0或1俩表示,也可能是英文的F和M来表示

那么在原来的不同的系统当中它都是正常的,但是当我们整合到一起的时候,我们一定要统一它的编码

 

综合计算就是我们在进行数据仓库构建的时候,我们可能不是要的原来的细节数据,比如说销售,我不需要细节的

有时候需要一些综合的,比如说每日的或者每周的甚至是每月的,那么我们就需要对原来的数据进行一些综合计算这样的工作,所以它的数据是一个集成的

 

 

数据仓库的数据是不可更新的

具有非易失性或非易变性。可以支持不同的用户在不同的时间查询相同的问题时获得相同的结果。


我们会经常看到数据仓库有一个共性叫做非易失性或者叫非易变性
当我们从原始的数据提取了数据到数据仓库以后,这个数据集我们就不动了
也就是说如果任何一个用户他在不同的时间去看这组数据的时候,它都是一样的,有的同学可能会觉得说
数据仓库的数据不是就不准确了吗?刚才我们看到最开始的那张表,实际上对它的准确度要求并不是非常严格的
因为我们的目的是用来进行分析,那么一个微小的改变它对整个的分析实际上没有太大的影响
这样我们会使我们数据仓库的数据变得比较稳定一些,这是它的不可更新的特性

数据仓库的数据是随时间不断变化的

1.数据仓库的数据随时间变化

2.数据仓库的数据追加

(1)时标方法

(2)DELTA文件

(3)前后映象文件的方法

(4)日志文件


看起来会觉得这个特性和前面的特性会有冲突,前面说不可更新,后面说不断变化
不可更新是说提取过来的数据我们就不改了
不断变化实际上我们需要对数据仓库的数据不断的取追加新的数据
比如说我上个月数据提取完了那么当这个月结束的时候我可能还要把它追加进来
这时候我们是往数据仓库里边来继续添加新的数据,这个是我们所说的不断变化的概念
 
进行追加我们看到它有很多种方式
不管是用我们的时标方法、日志方法,我们可以定义一个规则,使得我们的数据的追加它可以是一个自动的过程

 

 

4.2 数据仓库的结构

 

数据仓库的结构

仓库的组织结构图 仓库的组织结构设计_元数据_04


当我们使用数据仓库的时候
我们需要从我们当前的数据库系统进行数据的提取,我们可以把当前使用的一些信息拿过来
我们称作当前细节级的数据
在数据仓库中,我们会进场进行一些汇总的计算,比如说我要从当前的数据当中要进行一些按周为单位的数据查询
我可以把数据组织成按周这样的一个提取方式,我们可以把它进行一定的综合,这个综合的程度还不是很高,我们称为轻度综合级。在上面我们还可以进行更高的综合,比如按月进行查询,我需要月销售表,我就可以相对的是一个叫高度综合级,过一段时间我们的数据可能它的用处不大了,我们可以把它作为历史数据进行存储
 
在数据结构当中,可以看到一个叫做元数据,元数据它是贯穿着我们整个数据结构的各个层面

元数据


“关于数据的数据”
如传统数据库中的数据字典就是一种元数
元数据经常被叫做 “关于数据的数据”
什么叫关于数据的数据呢
比如说你听到了张三李四王五,你就感觉这不就是一个人的名字吗
如果我们在数据库当中我们想为这些定义各一个它的内容的话,我们可能就写上一个姓名
你就知道刚才张三李四王五它们表示的概念就是姓名
那么姓名就是关于这些数据的一个数据
在某种程度上
比如我们说一些表的表头实际上就是一些元数据
在传统的数据库定义当中,我们知道有数据字典的概念,数据字典实际上就是我们说的一种元数据
 
元数据在整个的数据仓库当中,甚至包括我们原来的数据库系统当中都是非常非常重要的
因为我们通过元数据我们能够知道数据仓库里面有什么,而且它里边的具体内容和它的位置我们都可以通过元数据进行相应的定义,那么有了元数据我们就可以快速的找到我们所需要的各种信息

元数据的重要性

 最基本的元数据相当于数据库系统中的数据字典。

 元数据定义了数据仓库有什么,指明了数据仓库中数据的内容和位置,刻画了数据的抽取和转换规则,存储了与数据仓库主题有关的各种商业信息,而且整个数据仓    库的运行都是基于元数据的。

 

有两类人会用到元数据:最终用户(包括商业分析员)、IT人员(包括开发和管理人员)

 最终用户需要的元数据也称商业元数据,它像一幅公路    地图,显示了信息所在的地方,以及如何到达那个地方。包括:数据内容、汇总数据、商业维度、商业指标、浏览路径、源系统、装换规则、更新周期等。


比如终端用户需要进行一些数据分析,我怎么能找到它呢
比如我们要去一个地方,需要导航。元数据就像导航信息,它在什么位置以及我们如何到达这个位置,所以我们看到元数据它的作用实际上是非常重要的
具体内容有以上内容
如果我们是最终用户,我们需要元数据来获取这些信息

 IT人员需要的元数据也称技术元数据,为负责开发、管理和维护数据仓库服务。

包括:源数据结构、源平台、数据抽取方法、外部数据、清洗规则、维度模型、初始装载、增量装载等


这是另外一类就是开发人员
对于开发人员来说需要的元数据也称技术元数据
比如开发的时候我要知道这个数据它从哪来,它数据的结构,它使用的一些平台,然后我们如何从原来的数据进行抽取
后边我们怎么来定义抽取的规则,之后整个数据模型是怎么定义的,包括后边数据当中要进行装载以及未来的增量的处理,我们IT人员都是需要知道这些相应的信息

元数据的分类

(1)按元数据的类型:关于基本数据、用于数据处理和关于企业组织结构的元数据。

(2)按抽象级别:概念级、逻辑级和物理级的元数据。

(3)按元数据承担的任务:静态和动态

(4)从用户的角度:技术元数据和业务元数据。

 

这是根据不同的角度进行了相应的划分

 

元数据的内容

(1)数据源的元数据

(2)数据模型的元数据

(3)数据准备区元数据

(4)数据库管理系统元数据

(5)前台元数据


它包含了我们使用数据仓库的始终,从最开始数据源到最后系统的应用
每一个环节它都对我们的整个的细节都需要进行相应的定义
比如数据源为例
数据源当中比如说数据是从什么地方得来的,然后我要在什么平台使用,谁来负责,每个人有什么样的权限都需要在数据源当中进行相应的定义

粒度的概念

 粒度是指数据仓库的数据单位中保存数据细化或综合程    度的级别。

分为两种形式:1.按时间段综合数据的粒度2.样本数据库 (根据采样率的高低来划分 )


如果把当前数据库的数据进行挖掘数据仓库进行提取的时候,我可以存储细节数据,我也可以进行一些综合
比如说我按周或者按月进行相应的提取,那么粒度不是见得越大越好或者越小越好
如果粒度很小的话,我们能够进行的查询就会比较多,但是我们在进行一些数据综合的时候,它的效率比较低
如果我们为了效率高存储了很多综合的数据,当我们需要一些细节数据的时候那我们就查不到
所以我们需要存储各种粒度的数据

样本数据库


比如说我现在已经有很多数据了,我要进行相应的数据分析或者数据挖掘的时候,如果我要是从这一大量数据来跑的话
效率比较低,一般我们会通过该一些采样得到一个样本数据,我们在样本数据上先做一些探索性的实验
如果这个模型建立的比较好,我们再通过该所有的数据再来继续往下进行我们的实验 这是有关粒度的概念

分割问题

 将数据分散到各自的物理单元中去以便能分别独立处理,以提高数据处理效率。(分片)

 分割的标准:按日期、地域或业务领域等。


我们数据量很大很大的时候,可能给它存放在一个地方并不是很方便
因此我们经常可能要把它们进行一些分割,分割有时也称作分片
分割是可能是按照一个日期,一个地域或者是某一业务领域来进行分割
还有一种分割,我们说的是逻辑上的分割
它可能在物理上还是一个地方,但是我们可能是按照日期来进行数据的提取,这也是一种分割
数据仓库中的数据组织形式数据仓库中的数据有多种组织形式,以下是几种常见的形式

仓库的组织结构图 仓库的组织结构设计_仓库的组织结构图_05

比如在数据库中我们把每天数据进行了一个综合,然后每天都这样做,我们就一天天的数据进行了堆积

这是数据仓库里边的一种组织形式

仓库的组织结构图 仓库的组织结构设计_仓库的组织结构图_06

第二种是轮转综合

轮转综合就在刚才前面的基础上面,比如说每天进行的一个综合

那么现在七天一周了,就可以进行一周的综合

到了四周以后就进行一月的综合

到了一年就进行一年的综合

诸如此类我们可以在原来的基础上一层一层的进行综合,这种我们称作一个叫轮转综合

仓库的组织结构图 仓库的组织结构设计_元数据_07

我们直接从我们的数据当中进行一些数据的提取

比如说我把它直接拿过来,就是一个1月份的数据,我并没有从前面一天一周然后一月来做这样的一个综合

仓库的组织结构图 仓库的组织结构设计_数据仓库_08

还有一种叫连续结构

我们可以把每月的数据给它综合到一个文件,再把这个文件放古来,变成一个连续的结构文件

以上几种都是我们在数据仓库中常见的结构,当然它的结构还有很多种

 

 

 

4.3 数据仓库系统的设计

仓库的组织结构图 仓库的组织结构设计_元数据_09


如果我们要进行一个数据仓库的设计,我们首先要做的事情就是要进行一个概念模型的设计
在这里面我们要界定系统的边界并确定我们的主题域,为了这样一件事我们要做相应的技术准备
就是这件事就是要在技术上它是可行的,有了这俩个步骤后可以进入具体的分析阶段
前面说了要确定主题域,我们要进行相应的逻辑模型的设计,物理模型的设计以及数据仓库的实施过程
比如说逻辑模型进行设计的时候,比如粒度的概念,分割策略以及具体到一个模型的设计
我们在这个环节当中都要给出相应的定义,那么有了逻辑模型的话,我们在物理模型的时候要定义它的存储结构
索引机构等等这些信息,到后边才是我们具体去把数据进行相应的装载来形成我们的数据仓库
我们可以在这个基础上进行数据仓库的运行,如果有一些问题的话我们再回来进行重新的调整
这是数据仓库设计中的一个大致流程

1.概念模型设计:界定系统边界、确定主要的主题域

2.技术准备工作:技术评估和环境的准备

3.逻辑模型设计:确定要装载的主题、粒度层次划分、数据分割策    略、关系模式定义和记录系统定义

4.物理模型设计:确定数据的存储结构、索引策略、数据存放位置    和存储分配

5.数据仓库生成:设计接口和将数据装入

6.数据仓库运行与维护:开发决策支持系统DSS的应用;进一步理    解需求,调整和完善数据仓库系统,维护数据仓库

 

1.数据仓库系统与数据库系统设计的不同

(1)面向的处理类型不同

(2)面向的需求不同

(3)系统设计的目标不同

(4)两者的数据来源或系统的输入不同

(5)系统设计的方法和步骤不同

 

数据仓库设计的几个特点

仓库的组织结构图 仓库的组织结构设计_数据_10

SDLC是系统开发生命周期四个英文单词的字头

如果原来做过数据库系统开发的话就很清楚这样的一个流程

比如我现在有一个应用的需求,我要开发一个刚才说的商场的系统

比如我要管理进货、销售以及库存,那么这是需求,我们根据它的需求进行相应的分析

然后构建我们的数据库,进行相应的设计编程,通过测试最后来实施相应的系统

如果系统当中某些地方没有满足我们的要求我们可以反过来进行相应的调整

我们把这样一个过程是称作系统开发的一个生命周期

仓库的组织结构图 仓库的组织结构设计_元数据_11

我们来看它里面的具体内容

首先我们在上层看到的是一些数据库以及外部的一些数据

在这些数据的基础上对数据仓库进行建模,然后进行对数据的集成操作,最后我们构建了数据仓库

在数据仓库上面我们可能进行一些相应的编程做一些决策支持

最后我们发现它能够解决我们的一些问题,这时候我们称作理解需求,我们又反过来可能再重新进行一些调整

那么这个过程跟我们刚才的过程它不是完全一个逆序的过程,但它总体是一个逆的过程

首先我们看到在原来的系统当中先有需求在进行系统的设计,而这个过程是先有了我们的数据仓库再反过来理解

看它能够解决什么样的问题,因此我们的这个过程就把它称作是刚才系统开发生命周期的一个逆过程

这个CLDS实际上就是我们刚才系统开发生命周期正好给它反过来,它本身并不代表原来单词的这样一个含义

它表述的就是我们刚才整个开发过程的一个逆过程

下面我们再看它的一个特点叫做数据驱动

 

 

4.数据驱动

 从已有数据出发的数据仓库设计方法称为“数据驱动”    的系统设计方法。

 利用以前所取得的工作成果

 不再是面向应用

 

利用数据模型

 数据模型是联系操作型数据环境的设计、数据仓库数据    环境的设计、操作型数据处理应用的开发和设计以及DSS    应用的开发与设计的纽带。

 

我们现在经常听到一个词叫做大数据,也就是基于数据进行一些应用或者进行一些数据挖掘

是希望通过我们的数据来产生它的一个相应的一个结果

所以如果是从数据出发的话,并不是说首先有了一个什么应用需求再去做

而是希望通过数据来产生相应的模型,通过数据来产生一些潜在的知识一些规则

所以我们看它的特点叫做数据驱动

 

数据驱动实际上要我们把数据模型给它创建好,通过这个数据模型来作为数据库设计和数据仓库设计的纽带

 

我们看下边这个图

仓库的组织结构图 仓库的组织结构设计_仓库的组织结构图_12

这个图中创建了一些数据模型,那么这些数据模型它实际上是把原来的操作型数据和数据仓库

我们的分析型数据做了一个关联,通过它我们能够把两边的数据进行整合

 

 

 

这是讲模型设计的一个方式

数据仓库设计的三级数据模型####

1.概念数据模型

常用的表示方法是实体—联系(E-R)法,用E-R图作为它的描述工具。

(1)矩形

表示实体——主题,在矩形框内写上主题名。

(2)椭圆

形表示主题的属性,无向边把主题与其属性连接起来。

(3)菱形

表示主题之间的联系,菱形框内写上联系的名字。

第一概念数据模型可以沿用我们在数据库设计当中的这种E/R方法,E/R它是实体联系模型

在这里面它的实体实际表示的就是我们的主题

椭圆则是表示实体当中的一个属性,在这里它表示的是一个主题的属性

菱形它表示的是主题和主题之间的联系

仓库的组织结构图 仓库的组织结构设计_数据仓库_13

我们看刚才前面讲的例子

比如说把一个销售系统现在进行数据分析了,可以给它归纳了相应的几个主题,商品、供应商以及顾客主题

这个主题现在就是我们的一个实体,每一个主题所需要的信息作为一个属性,它们之间的联系用菱形给它表述出来

这是我们看到的一个模型

 

 

2.逻辑数据模型

主题与主题之间的联系都用关系来表示。

3.物理数据模型

在逻辑数据模型的基础之上实现的,物理数据模型设计时,考 虑的主要因素: I/O存取时间、空间利用率和维护代价。


除此之外我们还可以进行我们逻辑模型的设计,它可以把我们主题和主题之间的联系用关系来进行表示
此外还有另外一个层面就是物理模型设计,可以在真正实现的一个环节把它进行相应的设计
除了前面的这种方法以外,我们在进行数据仓库设计的时候它还有其他的一些模型,不做详细讲解了

4.高层数据模型、中间层数据模型和低层数据模型(数据模型的另一种提法)

(1)高层数据模型

对数据抽象程度最大,使用E-R图。

(2)中间层数据模型:4种基本构造

联接数据组:本主题域与其他主题域间的联系,一个主题的公共码键。

基本数据组:属于基本不会发生变化的项。

二次数据组:基本不变化,但又存在变化的可能的数据项。类型数据组:经常变化的数据项。

(3)低层数据模型:物理数据模型

仓库的组织结构图 仓库的组织结构设计_数据仓库_14

在真正的数据仓库中还会有一些非常实用的模型

这个例子这个立方体想象成一个三维坐标,那么在X轴它就是一个日期,y轴看到是一个城市,Z轴是商品

我们可以想象,以这样的三个角度去观察一下相应的数据,这是看到的一种描述数据的方法

 

 

那么在刚才的那个图当中我们的XYZ一般给它称作是维度或维

维度实际上是相同数据类型的一个集合,比如说时间维度,把时间作为一个集合来进行商品的度量

也可以按照地区,看到某一个地区它的销售,这也是一种相应的度量

这是我们看到每一个坐标维度的概念

我们知道原来数据库系统它就是一个二维表,刚才看到的数据立方体它实际上就是一个三维表

可能数据当中还有很多要用更多维度来去描述它,可能我们从表面上用图是表现不出来

但是可以想象在观察数据的时候,可以有两维、三维、N维那么这样我们叫做一个多维数据集

 

 

 维就是相同类数据的集合,商店、时间和产品都是维。各个商    店的集合是一维,时间的集合是一维,商品的集合是一维。每    一个商店、每一段时间、每一种商品就是某一维的一个成员。

 每一个销售事实由一个特定的商品、一个特定的时间、一个    特定的商品组成。

 两维表,如通常的电子表格。三维构成立方体,若再增加一    维,则图形很难想象,也不容易在屏幕上画出来。

对于逻辑数据模型可以使用不同的存储机制和表示模式来实现多维数据模型。

 

 目前使用的多维数据模型主要有星型模型、雪花模型、星网模型、第三范式等。

在进行多维数据集设计的时候,它实际上是有很多种形式,比如星型模型、雪花模型、星网模型、第三范式等。

 

星型模型####

大多数的数据仓库都采用“星型模型”。

星型模型是由“事实表”(大表)以及多个“维表”(小表)所组成。 “事实表”中存放大量关于企业的事实数据(数量数据)。 例如:多个时期的数据可能会出现在同一个“事实表”中。“维表”中存放描述性数据,维表是围绕事实表建立的较小的表。


星型模型像平常看到的星星一样在放射
我们整个星型模型会有大表和小表这样的概念
大表一般称作一个“事实表”就是里边记录着我们销售的比如说企业销售中的一些事实数据
小表我们一般称作一个维度表,也就是观测数据的各种不同的角度

 

星型模型数据如下图:

仓库的组织结构图 仓库的组织结构设计_元数据_15

事实表就是大表,它记录着企业的一个销售数据,而这些小表就是我们观测数据当中的不同的角度

这种模型称作是一个星型模型

 

仓库的组织结构图 仓库的组织结构设计_数据_16

如果把它映射到具体的数据当中就是这样一种方式

在事实表中它要记录着你观测的各个维度中它的键以及相应的观测数据

比如说观测它的数量以及它的总价

我们的小表就是我们说的是同样的一种数据的集合

比如把地区的数据日期的数据给它单独汇总成一张表作为我们的维度表

除此之外还有一种模型就是叫雪花模型

 

雪花模型####

 雪花模型对星型模型的维表进一步层次化,原来的各维表可能被    扩展为小的事实表,形成一些局部的“层次”区域。

 在上面星型模型的数据中 ,对“产品表”“日期表”“地区表”    进行扩展形成雪花模型数据见下图。

雪花模型它实际上实在星型模型中做了一种延伸,也就是把一些维度给它进行了相应的层次化

仓库的组织结构图 仓库的组织结构设计_仓库的组织结构图_17

比如说我们原来的一个地区表

除了看到原来地区以为,给它每一个地区都划分到了某一个省

那么日期可以把集体的这样一个日期信息进行了月和年这样一个层次划分

我们把这样的一种数据结构称作雪花模型

 

星网模型####

 星网模型是将多个星型模型连接起来形成网状结构。多个星型模型通过相同的维,如时间维,连接多个事实表。

仓库的组织结构图 仓库的组织结构设计_元数据_18

比如说我们看到这张表

那么它在整个表当中会有多个事实表,其中的一些维度表会变成在两个事实表中共享那么这样的一种模型称作星网模型

 

参考资料
mooc——北京语言大学-数据库与商业智能