基于ELT技术的数据仓库系统建立的研究

2010-08-23 04:46冯春辉
制造业自动化 2010年10期
关键词:数据仓库数据源数据库

冯春辉

FENG Chun-hui

(河北邢台学院 ,邢台 054001)

0 引言

近年来,数据仓库领域的分析和研究成为学者关注的重点和热点之一,那么如何建立数据仓库也成为一个重要的问题。由于数据仓库中的数据来源的多样化和异构化,在数据仓库入库之前往往需要做大量的数据预处理工作。而这部分工作在数据仓库建立的整个过程中所占的比例又比较大,因此显得格外重要。另外,数据预处理工作的好坏直接影响后期的数据分析工作,如OLAP分析,数据挖掘等。低质量的数据可能导致不够准确的分析结果甚至是错误的结果。因此,数据仓库的入库数据的预处理工作得到了越来越多的重视。

ETL正是为了解决数据预处理问题而提出来的。ETL是Extraction-Transformation-Loading的缩写,即数据抽取、转换、装载的过程[1],ETL为建立数据仓库提供可靠的高质量的数据。

1 ETL原理

1.1 ETL在数据仓库中的作用

数据仓库作为一个独立的数据环境,需要将数据从联机事务处理环境、外部数据源、脱机的数据存储介质导入到数据仓库中[2]。待转移的数据不仅仅是同构的,更多的情况是异构的,数据的异质性包括以下几个方面:

1)系统级的不一致性,主要指采用的操作系统或者数据库系统不同,体现在本课题中,所建立的电厂机组综合评优系统采用的是Oracle数据库,而各大电厂的业务系统有的采用Oracle、SQL Server等关系型数据库,有的仅使用了简单的Access、Foxprol等文件型数据库;

2)数据结构层次的不一致性,即语法级和结构级差异,指数据对象的命名、数据类型、数据格式上的差异以及各数据源的结构约束方面的冲突、接口和模式上的不同等;

3)语义表达方面的不一致性,对同一对象的描述采用不同的编码或规范,或同一个编码在不同的系统中表述的物理对象不同等。

这些数据的异质性构成了复杂的数据环境,给数据仓库的建立带来一定的难度。ETL过程就是要消除数据源的这些异构性,将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层进行清洗、转换、集成,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中,数据仓库平台建立之后,即可在此基础上进行联机分析处理、数据挖掘等数据分析操作。因此ETL不仅是数据仓库建立过程中极其重要的一部分,也是一个极其复杂的工作。在数据仓库项目中,ETL会占其整个项目开发时间的60%-70%,为后期的OLAP、数据挖掘、决策分析等提供足够的支持。

1.2 ETL的本质过程

宏观上,ETL可以被视为一整套数据整合的解决方案。具体来讲也可看成数据导入导出的工具,图1为ETL体系结构图。

图1 体系结构图

由于数据源和项目目标可能有所不同,有时一款软件的几个功能就可完成任务,有时则需要多款软件。数据仓库需要的数据不是一次性就可以导入完成的,这是反复操作的活动,一般按照固定周期运行的。下面介绍ETL的本质过程。

1.2.1 数据抽取

数据抽取即中的ETL中的E(Extraction)。抽取主要是针对分布式的事物数据库,在比较清楚的理解数据含义后,规划所需要的数据源,制定可操作的数据源读取规则及增量抽取的原则,并进行向指定目的地的导出工作。源数据一般以分布式的方式进行存储,而且类型多样化,可能是一个关系型数据库,可能是一个文本文件,Excel文件或DBF文件,也可能是其他类型文件,我们可以采取应用 ODBC,JDBC或FTP等标准进行数据文件的连接。常用的数据抽取一般采取以下几种方法:

1)数据仓库的数据库系统与源数据库系统的类型一致。一般来说,这种情况下设计比较容易,DBMS都会提供数据库链接功能,在数据仓库一侧的数据库服务器和原业务系统之间建立直接的链接关系就可以通过写查询语句直接访问。

2)数据仓库的数据库系统与源数据库系统的类型不一致。这种情况下也可以通过ODBC的方式建立数据库连接,如果不能建立数据库连接,可以有两种方式完成:一种是将源数据通过工具导出成.txt或者是.xls文件,然后再将这些源系统文件导入到目标中。另一种方法则通过自己动手编写程序接口的方式来完成。

3)文件类型源数据。例如.txt,.xls文件,可以培训业务人员利用数据库工具将这些数据导入到指定的数据库,然后从指定的数据库抽取,或者可以借助提供的工具实现。

4)数据量大的系统。这种情况下,必须考虑增量抽取,我们可以用业务系统记录业务发生的时间来作为增量的标志,每次抽取之前首先判断记录最大的时间,然后根据这个时间去业务系统取大于这个时间所有的记录。

1.2.2 数据转换

数据转换即ETL中的T(Transformation),是过程中最复杂的部分。其原因是数据转换需要对各种不同的数据做出统一的标准,即标准化即将入库的数据,因此,涉及的方法和技巧都比较多。它主要是针对数据仓库建立的模型,通过一系列的转换来实现将数据从业务模型到分析模型,依据内建的库函数,自定义脚本或其他的扩展方式,实现了各种复杂的转换,并且支持调试环境,清楚的监控数据转换的状态。数据转换是真正将源数据变为目标数据的关键环节,它包括数据格式转换,数据类型转换,数据汇总计算,数据拼接等等。实际应用中常见的转换规则包括以下几个类型:

1)直接映射。这种类型是最简单的类型,不需要转换。那么唯一需要注意的地方在于两侧数据精度的问题要统一起来。

2)字段运算。这种类型是对某些数值型字段进行求和,求积等的运算。处理方法也比较简单。

3)参照转换。这种类型类似于事物数据库中通过主键进行关联查询。我们通过这个“参照”以找到需要的字段里面的数据,并且这个数据往往是唯一的。

4)字符串处理。这种类型的数据有可能并非简单的字符串,比如说身份证号往往在数据库中存储为字符串类型,因此对不同的字符串应采取不同的转换策略。

5)空值判断。有时候空值在数据库中会出现意想不到的问题,因此对于可能有NULL值的字段,不要采用“直接映射”的规则类型,必须对空值进行判断,或者将它转换成特定的值。

6)日期转换。这种类型不存在原则性问题,异构数据源的日期数据格式可能不相同,在这里需要对不同的日期格式进行统一。

7)日期运算。后期进行统计分析时往往需要对一周,一个月,一年甚至几年的数据进行分析,那么需要比较完整的日期运算函数。

8)既定取值。数据仓库中有些特定的字段是一些固定的取值,因此这个转换规则需要工作人员手工确定下来,在数据转换的时候正确的输入。

1.2.3 数据加载入库

作为ETL中的L(Loading),数据加载主要任务是将上述步骤处理过的高质量数据载入数据仓库中,即数据入库。我们可以通过数据文件直接装载的方式或直接连接数据库的方式来进行数据装载。

2 ETL在应用中的改进

本文在对ETL分析和研究的基础上,对传统的ETL进行了一些必要的改进,以使得ETL能够更好的为创建数据仓库服务。

2.1 传统的ETL

传统的ETL架构中,从事物数据库直接通过ETL连接到数据仓库中,通过实现标准化的接口和统一的处理过程来完成ETL过程,传统的ETL架构图如图2所示。

图2 传统ETL架构图

这里需要对传统的ETL架构进行说明,首先,若数据分析工作于数据抽取工作同时进行,则可能出现数据抽取影响到数据分析工作的情况,也就是说数据抽取缺少一个中间的确定环节,在抽取完成之前就进行分析,则会影响分析结果。其次,在源数据库数据不断大量增加的情况下,由于数据仓库的入口只有一个,势必造成数据仓库的处理负担加重,可能导致不可预测的后果。因此,本文在传统的ETL处理过程的基础之上进行了一定改进来解决上述问题。

2.2 改进的ETL

本文对传统的ETL改进的主要思想就是缓存。图3显示了改进之后的ETL架构图:

改进之后的ETL处理过程包含以下优点:

1)采用交换节点进行缓存可以避免出现数据分析和数据抽取相互影响的情况。

图3 改进之后的ETL架构图

2)当源数据库的数量和源数据库中数据的数量大量增加的情况下,可以通过增加交换节点的办法保证数据仓库的性能不会受到较大的影响,其原因是交换节点对元数据已经进行了一次ETL处理,那么交换节点存储的数据已经大大的标准化,基本满足数据仓库中数据的要求,因此,当从交换节点ETL交换到数据仓库中的时候计算量就会大量减少,减轻数据仓库负担。

3)加入交换节点之后,数据从事物数据库载入数据仓库需要经过两次ETL过程,这样得到的更高质量的数据。

4)另外,采取了交换节点之后,我们可以对源数据库以及数据仓库分别进行隔离,能够保证数据的安全性。

3 ETL的实现

本文采用了数据仓库的开发工具Oracle Warehouse Builder (OWB),OWB是Oracle公司推出的一个用于帮助企业构建数据仓库的集成工具[3],用于快速设计、部署和管理商务智能系统。OWB提供对ETL的完全集成和维度建模、数据质量管理、数据审计,以及数据和元数据的整个生命周期的管理。在OWB中建立的映射如下图4所示。

图4 数据装载映射图

部署图如图5所示。

图5 部署结果图

部署完成之后,就可以运行映射,完成装载,如图6所示。

4 结论

本文在对ETL过程的分析和研究基础上,针对ETL过程以及其不足,提出了一种改进的ETL实现方法。该方法能够创建可靠的高质量的数据仓库。尽管该方法在ETL处理思想上有所提高,但是在数据转换等细节的实施过程中,仍然需要继续研究,以建立更可靠,质量更高的数据仓库。

图6 映射执行结果图

[1]王丽珍,周丽华,陈红梅,等.数据仓库与数据挖掘原理及应用[M].科学出版社,2005.

[2]张宁,贾自艳,史忠植.数据仓库中ETL技术的研究[J].计算机工程与应用,2002,38(24).

[3]冈萨雷斯,著.吴刚,董志国,译. IBM数据仓库及IBM商务智能工具[M].北京:电子工业出版社,2004.

猜你喜欢
数据仓库数据源数据库
基于数据仓库的数据倾斜解决方案研究
基于数据仓库的住房城乡建设信息系统整合研究
Web 大数据系统数据源选择*
基于不同网络数据源的期刊评价研究
数据库
探析电力系统调度中数据仓库技术的应用
数据库
数据库
数据库
基于数据仓库的数据分析探索与实践