面向数据仓库的ETL工具的研究与实现

2018-04-12 04:23林昆
计算技术与自动化 2018年1期
关键词:数据仓库

林昆

摘 要:阐述了ETL工具在数据仓库系统的建设过程中所处的重要地位,提出了一个基于工作流引擎的ETL系统设计。系统实现一个轻量级的工作流引擎作为ETL流程的调度中心,利用元数据保存记录ETL流程的信息,创建基于数据库引擎的ETL操作组件库来完成从数据源到数据目标的数据映射,并初步实现了对大数据环境数据抽取的支持,从而构建了一个具有良好可扩展性和开放性的ETL系统。

关键词:数据仓库;ETL;工作流引擎;元数据管理

中图分类号:TP311.1

文獻标志码:A

1 引 言

数据仓库是面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持经营管理中的决策制定过程[1]。服务于商业智能的数据仓库的成功实施,体现着对新的观念和解决方案日益增长的需求[2-4]。数据仓库的数据源自于不同的业务系统,这些数据的异构性、空缺或冗余等问题是制约数据仓库数据质量的重要因素[5]。此外,供决策使用的数据仓库的数据是统计性数据,而来自日常系统的细节数据的简单堆砌无法满足商业智能的要求。

数据仓库化建设作为建立数据仓库的必要步骤,通常需要建立从数据源到数据目标的多对一的映射关系,ETL(Extraction-TransformatiorrLoad,抽取一转换一加载)工具提供一个方便使用的仓库化建设方法,使用户可以有效的构建从异构数据源到数据目标的映射关系。

2 ETL相关概念

ETL,即数据抽取(Extraction)、转换(Trans-formation)和加载(Load),是构建数据仓库的必要步骤。数据管理员根据实际需求,定义特定的映射关系,实现从业务系统数据源到目标数据仓库的迁移,并在迁移过程数据完成了必要的转换和清洗,如图1所示。

2.1 ETL的具体步骤

数据仓库建设的一个重要环节是将数据从各个具体的业务系统中抽取出来,清除数据存在的缺陷和不一致性,完成必须的加工处理,最后将数据加载到数据仓库中[6]。这一过程形成了一个模块化、流程化和易修改的模型。下面详细介绍各个步骤的细节。

1)数据抽取( Extraction)

ETL过程的第一个环节,从数据源中抽取数据,为后续各个处理操作提供数据准备。

业务数据源中包含了大量的细节数据,抽取需要根据数据仓库的预定义模型,挑选对仓库主题有贡献的部分,再将其抽取进入ETL系统。这一过程中需要考虑到:

·数据源来自哪些表或文件。

·数据库模型的一致性。

·需要抽取哪些字段,是否设置抽取条件。

2)数据转换( Transformation)

通过抽取操作进入ETL系统的数据,往往存在着严重的异构性。这些数据虽然都是数据仓库必需的,但是由于来源于异构数据源,数据在格式、命名方式、值范围表示方式等方面都存在着差异。

针对这些差异,数据转换主要完成两方面的任务:一是把不同数据源、格式不一致的“脏数据”清洗成一致的数据;二是对原始数据进行必要的转换处理以满足数据仓库的要求[7]。

3)数据加载(Load)

数据加载的任务就是将前面两个步骤处理完成的数据,加载到数据目标中,完成数据仓库的数据准备[8]。

3 ETL系统的架构设计

如图2所示,ETL系统的设计思想是以工作流为控制调度中心,利用元数据信息保存和记录ETL过程信息,定义ETL过程中各种转换规则的工作以组件的形式存在,并提供可视化界面供用户定义、修改ETL的流程,系统通过数据访问模块访问数据源和数据目标。

将工作流技术和元数据技术应用到ETL工具中已经是目前ETL工具发展的一种趋势。利用这两种技术,ETL流程的灵活性和可控制性将大大提高,用户可以根据需要自由的选择数据清洗和数据转换操作,并按照数据处理的流程灵活的编排所选择的操作;同时ETL工具的可扩展性也得到增强,在工作流技术的支持下,所有的数据清洗和转换操作都成为工作流活动的资源,因此工具可以根据需要灵活的添加清洗和转换操作,从而扩展相应的处理能力。

3.1 元数据管理

元数据是对ETL过程的形式化定义,它包括ETL流程信息的定义和ETL操作规则的定义两个主要部分。流程信息主要记录了ETL过程中包含的各种操作,以及操作之间的先后顺序关系;操作规则信息主要记录了每个操作的具体转换规则设置,如过滤器的过滤条件,投影操作的字段列表选择等等。

如图3所示,ETL系统的元数据呈树形的层次关系,ETL流程包含了若干任务和转移信息,转移信息用来标识任务先后顺序,从而确定ETL流程中各任务的关系图;在ETL系统中,操作组件被指派给工作流任务,作为任务的执行应用程序;每个操作组件包含着特定的转换规则设置和操作属性,转换规则是指操作中处理的各个字段的映射关系,如源表A的year,month,day三个字段映射到目标表B的date字段,操作属性是指针对数据行记录的处理属性,如只处理源表中工龄字段值大于10年的记录。

ETL系统的元数据的树形关系特点使得元数据信息很适合用XML文件来记录。XML树结构直观地表现出元数据的关系,并提供方便的操作方法。

3.2 工作流引擎

为了提供灵活的控制调度能力,本系统构建轻量级工作流引擎,调度中心接收到由元数据管理模块解析生成的流程定义数据,检查ETL任务之间的依赖关系、转发控制等关联,从而确定任务执行的实际流程,并按照这个流程调度活动进行执行,工作流调度流程如图4所示:

3.3

ETL操作组件库

ETL系统中,最终完成从数据源到数据目标的映射转换的工作是由ETL操作组件来承担的。一个功能健全的ETL操作组件库,是ETL系统必备的部分。

在本系统中,完成这项工作的操作部件以组件库的形式发布,供工作流引擎调度执行;同时,操作组件遵循统一的接口开发,并添加到组件库中;从而大大增强了系统的可扩展性。系统现有的操作组件库如表1所示:

4 ETL系统的实现

4.1 基于XML的元数据管理

在ETL系统中,元数据库是一个基础元素,它保存记录了ETL过程中所需的各种辅助信息,是ETL过程正确执行的关键。这些辅助信息主要包含了如下信息:

·映射元数据(mapping meta_data,MM):这一模型用于描述映射规则及其映射表达式。我们使用映射表达式来表示标识目标字段如何从一系列源字段映射而来所需要的信息。

·源模型( source model,SM):用于描述業务系统源数据的模型。

·目标模型( target model,TM)和源模型类似,它描述一个目标数据模型。

ETL系统中拥有一个丰富的ETL操作组件库,这些组件是完成数据映射的最终实现者,为了保存记录各种操作组件信息,为工作流引擎提供一个统一的使用接口,系统利用面向对象设计的思路,构建元数据继承体系,抽象得到一个统一的接口,屏蔽了复杂、相异的具体实现。

元数据管理实现中,元数据信息以XML文件的形式保存,元数据中各种对象信息用一个节点表示,对象之间的关系,则在树形层次关系中得以体现。元数据管理包括了内存对象到文件信息的编辑、更新以及文件信息到内存对象的解析、构造两个部分。

4.2 轻量级的工作流引擎

工作流引擎对ETL流程的执行进行总体控制,是ETL系统的调度中心。工作流引擎负责从ETL流程定义形成的图结构中,分析出各个阶段中处于就绪状态的任务,分配相应的资源,并启动任务执行,如图5所示,工作流引擎的主要工作包括:

(1)解析流程定义文件,分析出流程中包含的任务;

(2)分析流程图中各任务的状态;

(3)为就绪状态的任务分配系统资源;

(4)启动得到资源的任务;

(5)循环步骤2~步骤4,直到整个流程执行完成。

在整个流程的调度过程中,工作流引擎维持着三个队列一一未就绪任务队列、就绪状态任务队列和已完成任务队列,三个队列的管理如下:

·流程刚启动的时候,就绪状态任务队列包含了流程的启动任务;

·系统存在空闲资源时,引擎将处于就绪状态任务队列队头的任务出队,为其分配资源,并启动执行;

·任务执行成功后,引擎将任务被加入到已完成任务队列中。

·当有新任务进入已完成任务队列时,启动任务状态分析工作,分析任务的转移信息,更新状态的就绪状态,并将已处于就绪状态的任务加入到就绪队列。

当所有的任务均成功执行后,引擎便完成对ETL流程的调度。

4.3 基于数据库引擎的ETL操作组件

基本数据库引擎的ETL操作组件实现中,我们允许数据库管理系统(DBMS)在作为数据存储介质的同时,扮演数据转换引擎的角色。ETL系统中的各种转换映射规则,可以以soL查询的形式体现,soL查询可以用于任何构造过程,包括数据抽取、直接存储、清洗过程和整个流程的映射规则信息传送。

从ETL映射规则到soL查询的产生过程,由soL生成器完成。生成器可以从元数据库中读取必要的参数和映射规则来创建一个soL转换。具体来说,一个映射元数据作为生成器的参数输入,从而生成操作的soL查询。在这个过程中,所有的控制和检查都应用于数据,因此,这些查询不仅仅是对数据的修饰;它装载数据模式结构和有效的值集。我们使用soL查询是因为它们易于理解,而且在DBMS中非常高效。现有的工具大都创建一系列的程序来完成转换过程,对这些工具进行优化是相当不容易的。相反,soL生成器使用查询优化来得到高性能。

4.4 ETL系统的可扩展性与开放性

ETL系统的核心实现包括了wfProcess(工作流流程)、wfActivity(工作流活动)、wfTransition(工作流转移)、ETLLib(ETL操作组件库)和Re-pository(元数据管理)五大部分,其中wfProcess、wfActivity和wfTransition组成了ETL系统的流程管理内核,负责整个数据仓库化过程编排和执行;ETLLib是数据抽取、转移、清洗和加载操作的具体实现,包含了若干种具体操作组件,流程执行时,ETLLib操作组件作为一种资源依附到wfAc-tivity中,从而得到执行;Repository则负责整个ETL过程的记录和持久化工作。

ETL系统的实现形成了wfProcess-wfActivity-ETLLib三层管理模式,从而实现了ETL流程管理与操作组件库的解耦,同时ETLLib定义了简明规范的接口,在面对不断变化的数据处理需求时,一方面可以遵循ETLLib接口,开发新的内置操作组件,扩展系统的处理功能;另一方面,对于特殊的小众需求,用户可自行开发符合接口规范的外部组件,并通过相关参数设置,将外部组件依附到wfActivity中,成为ETL流程的一环;内置组件的简易扩展和对外部组件的支持,使ETL系统具备良好的可扩展性和开放性。

4.5 ETL系统对大数据环境的支持

近年来,大数据技术发展迅猛,以Hadoop为代表的业界主流技术日趋成熟和稳定,越来越多的企业和单位开始将生产和管理数据存储在大数据平台上,ETL系统操作组件库增加了两个实验性的操作组件,如表2所示,以增强ETL系统对大数据环境的支持。

5 结束语

面向数据仓库的ETL工具从数据仓库化建设的角度实现多平台数据环境和异构数据环境的数据集成,利用工作流技术和元数据管理技术实现ETL流程的灵活定义、更新和调度执行已经是ETL系统发展的一个趋势。

本文阐述了ETL的过程及其在数据仓库系统建设中所处的重要地位,展示了一个基于轻量级工作流引擎的ETL系统设计,并且以组件的形式定制ETL转换规则操作,使系统具有较好的开放性和可扩展性;同时,系统初步实现了对大数据环境数据抽取的支持,使得ETL工具能够更好的适应大数据环境的数据处理需求。在后续的研究中,我们将以ETL流程优化和对大数据环境的全面支持作为研究重点,通过对流程的分析,利用合理的交换、提取/分发、合并/分解等手段,将ETL流程中的选择操作向前推、数据处理操作向后推,从而提高整个ETL流程的执行效率,并提升ETL工具对大数据时代发展需求的支持。

参考文献

[1]WILLIAN H I.数据仓库[M].北京:机械工业出版社,2006.

[2]孟维一,基于数据仓库的保险商业智能系统设计与实现[D].北京:北京交通大学,2016.

[3]李娜.基于数据仓库的商务智能经营系统设计与实现[J].现代电子技术,2016,39(15):140-144.

[4]王新蓓,谢文阁,王中权,数据仓库解决方案在电子商务中的应用[J].数字技术与应用,2015,(4):101-101.

[5] 李芸,基于增强ETL过程的大数据策略研究[J].电脑知识与技术,2014,(34):8081-8082.

[6] 曾志浩,姚贝,张琼林,等.基于Hadoop平台的用户行为挖掘[J].计算技术与自动化,2015,(2):100-103.

[7] 张春亮.基于ETL的企业数据交换平台的设计与实现[D].哈尔滨工业大学,2016.

[8] 王彦慈,银行业务数据仓库数据导入的分析与设计[J].软件,2012,33(9):147-148.

[9]徐俊刚,裴莹,数据ETL研究综述[J].计算机科学,2011,38(4):15-20.

[10] 林建昌,电力行业分布式ETL数据集成系统研究与实现[D].成都:电子科技大学,2015.

猜你喜欢
数据仓库
中小学智慧校园建设中信息孤岛的破解之路
基于数据仓库的数据倾斜解决方案研究
七大云计算数据仓库
数据湖正在成为新的数据仓库
移动互联网APP数据仓库的应用
数据仓库系统设计与实现
电子商务中的数据挖掘及其应用
数据仓库技术在高校信息系统中的应用
数据复用在存储数据仓库中的运用
虚拟数据仓库在电力行业的应用