数据仓库基础(二)

上一篇 / 下一篇  2012-07-10 15:28:02 / 个人分类:数据仓库

逻辑数据映射(Logical Data Map)用来描述源系统的数据定义、目标数据仓库的模型以及将源系统的数据转换到数据仓库中需要做操作和处理方式的说明文档,通常以表格或Excel的格式保存如下的信息:

目标表名:

目标列名:

目标表类型:注明是事实表、维度表或支架维度表。

SCD类型:对于维度表而言。

数据库名:源数据库的实例名,或者连接字符串。

源表名:

源列名:

转换方法:需要对源数据做的操作,如Sum(amount)等。

逻辑数据映射应该贯穿数据迁移项目的始终,在其中说明了数据迁移中的ETL策略。在进行物理数据映射前进行逻辑数据映射对ETL项目组是重要的,它起着元数据的作用。项目中最好选择能生成逻辑数据映射的数据迁移工具。

What are the four basic Data Flow steps of an ETL process?

在ETL过程中四个基本的过程分别是什么?

Kimball数据仓库构建方法中,ETL的过程和传统的实现方法有一些不同,主要分为四个阶段,分别是抽取(extract)、清洗(clean)、一致性处理(comform)和交付(delivery),简称为ECCD。

1.抽取阶段的主要任务是:

读取源系统的数据模型。

连接并访问源系统的数据。

变化数据捕获。

抽取数据到数据准备区。

2.清洗阶段的主要任务是:

清洗并增补列的属性。

清洗并增补数据结构。

清洗并增补数据规则。

增补复杂的业务规则。

建立元数据库描述数据质量。

将清洗后的数据保存到数据准备区。

3.一致性处理阶段的主要任务是:

一致性处理业务标签,即维度表中的描述属性。

一致性处理业务度量及性能指标,通常是事实表中的事实。

去除重复数据。

国际化处理。

将一致性处理后的数据保存到数据准备区。

4.交付阶段的主要任务是:

加载星型的和经过雪花处理的维度表数据。

产生日期维度。

加载退化维度。

加载子维度。

加载1、2、3型的缓慢变化维度。

处理迟到的维度和迟到的事实。

加载多值维度。

加载有复杂层级结构的维度。

加载文本事实到维度表。

处理事实表的代理键。

加载三个基本类型的事实表数据。

加载和更新聚集。

将处理好的数据加载到数据仓库。

从这个任务列表中可以看出,ETL的过程和数据仓库建模的过程结合的非常紧密。换句话说,ETL系统的设计应该和目标表的设计同时开始。通常来说,数据仓库架构师和ETL系统设计师是同一个人。

What are the permissible data structures for the data staging area? Briefly describe the pros and cons of each.

在数据准备区中允许使用的数据结构有哪些?各有什么优缺点?

1.固定格式的文本文件。(Flat File

Flat File指的是一种保存在系统上的一种文本文件格式,它以类似数据库的表的方式用行和列来保存数据。这种文件格式经常用来进行数据交换。用于保存数据不太合适。

2.XML数据集。

多用于数据交换,用户保存数据不太合适。

3.关系数据库的表。

保存数据的较理想选择。

4.独立的数据库表。

独立的数据库表一般指建立的表和其他表没有外键约束关系。这样的表多用于数据处理。

5.三范式或者关系型模型。

6.非关系型数据源。

非关系型数据源一般包括COBOL copy books、VSAM文件、Flat文件、Spreadsheets等。

7.维度模型。

8.原子事实表和聚集事实表。

9.代理键查找表。

When should data be set to disk for safekeeping during the ETL?

简述ETL过程中哪个步骤应该出于安全的考虑将数据写到磁盘上?

Staging的意思就是将数据写到磁盘上。出于安全及ETL能方便重新开始,在数据准备区(Staging Area)中的每个步骤中都应该将数据写到磁盘上,即生成文本文件或者将建立关系表保存数据,而不应该以数据不落地方式直接进行ETL。

Explain the three basic delivery steps for conformed dimensions.

简述对一致性维度的三种基本的交付步骤。

答:数据整合的关键就是生成一致性维度,再通过一致性维度将来自不同数据源的事实数据合并到一起,供分析使用。通常来说,生成一致性维度有如下三个步骤:

1.标准化(Standardizing

标准化的目的是使不同数据源的数据编码方式,数据格式等相同,为下一步数据匹配打下基础。

2.匹配(Matching and Deduplication

数据匹配的工作有两种,一种是将不同数据源的标识同一事物的不同属性匹配到一起,是数据更完善;另一种是将不同数据源的相同数据标识成重复,为下一步的筛选打下基础。

3.筛选(Surviving

数据筛选的主要目的是选定一致性维度作为主数据(Master Data),也就是最终交付的一致性维度数据。

What steps do you take to determine the bottleneck of a slow running ETL process?

如果ETL进程运行较慢,需要分哪几步去找到ETL系统的瓶颈问题。

答:ETL系统遇到性能问题,运行很慢是一件较常见的事情,这时要做的是逐步找到系统的瓶颈在哪里。

首先要确定是由CPU、内存、I/O和网络等产生的瓶颈,还是由ETL处理过程产生的瓶颈。

如果环境没有瓶颈,那么需要分析ETL的代码。这时,我们可以采用排除的方法,需要隔离不同的操作,并分别对它们进行测试。如果是采用纯手工编码方式的ETL处理,隔离不同的操作要麻烦一些,这时需要根据编码的实际情况来处理。如果是采用ETL工具的话,目前的ETL工具应该都有隔离不同处理的功能,隔离起来相对容易一些。

分析最好从抽取操作开始,然后依次分析各种计算、查找表、聚集、过滤等转换环节的处理操作,最后分析加载操作。

实际的处理中,可以按照下面的七个步骤来查找瓶颈。

1.隔离并执行抽取查询语句。

先将抽取部分隔离出来,去掉转换和交付,可以将数据直接抽取到文件中。如果这一步效率很差,基本确定是抽取SQL的问题。从经验来看,未经调优的SQL是一个最常见的导致ETL效率差的原因。如果这步没有问题进入第二步。

2.去掉过滤条件。

这一条是针对全抽取,然后在ETL处理中进行过滤的处理方式而言。在ETL处理中做过滤处理有时会产生瓶颈。可以先将过滤去掉,如果确定为这个原因,可以考虑在抽取时进行数据过滤。

3.排除查找表的问题。

参照数据在ETL处理过程中通常会加载到内存中,目的是做代码和名称的查找替换,也称查找表。有时查找表的数据量过大也会产生瓶颈。可以逐个隔离查找表,来确定是否是这里出现问题。注意要将查找表的数据量降到最低,通常一个自然键一个代理键就可以,这样可以减少不必要的数据I/O。

4.分析排序和聚集操作。

排序和聚集操作都是非常费资源的操作。对这部分隔离,来判断是否因为它们引起性能问题。如果确定是因为这个,需要考虑是否可以将排序和聚集处理移出数据库和ETL工具,移到操作系统中来处理。

5.隔离并分析每一个计算和转换处理。

有时转换过程中的处理操作也会引起ETL工作的性能。逐步隔离移除它们来判断哪里出了问题。要注意观察像默认值、数据类型转换等操作。

6.隔离更新策略。

更新操作在数据量非常大时是性能非常差的。隔离这部分,看看是否这里出了问题。如果确定是因为大批量更新出了性能问题。应该考虑将insert、update和delete分开处理。

7.检测加载数据的数据库I/O

如果前面各部分都没有问题,最后需要检测是目标数据库的性能问题。可以找个文件代替数据库,如果性能提高很多,需要仔细检测目标数据库的加载过程中的操作。例如是否关闭了所有的约束,关闭了所有的索引,是否使用了批量加载工具。如果性能还没有提高,可以考虑使用并行加载策略。


TAG:

 

评分:0

我来说两句

日历

« 2024-05-16  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 151700
  • 日志数: 33
  • 建立时间: 2012-06-27
  • 更新时间: 2013-04-02

RSS订阅

Open Toolbar