基于MGO的数据仓库ETL过程构建方法
2014-12-14余肖生吴西燕王东娟王缓缓
余肖生,吴西燕,王东娟,王缓缓,蒋 彬
(三峡大学计算机与信息学院,湖北宜昌 443002)
在数据仓库构建过程中,作业量最大、日常运行中出现问题最多的是从业务数据库向数据仓库抽取、变换、集成数据的作业,即 ETL[1]。ETL 过程在数据仓库的建设与维护中占据了相当重要的位置[2]。ETL过程设计的优劣已经成为数据仓库建设中降低维护成本、提高ETL过程执行效率的关键。本文首先对现有ETL过程的构建方法及其发展进行分析比较,并指出其不足;在此基础上,介绍基于MGO(通用操作符)的ETL过程的构建方法,并将其与现有ETL过程的构建方法进行比较;最后以一个通用操作符(平面文件加载器)的实现为例,描述通用操作符的实现流程。
1 现有ETL比较
1.1 手工ELT
在数据仓库概念提出之前,决策支持系统概念已经被人们广为接受。当时,由于没有专门工具用来构建收集、整合、存储、分析操作数据的信息平台,故主要采用手工方式。手工ELT的工作流程如图1所示[3],其中数据采用自然的方法处理:
1)抽取:相关操作数据以某种方式从操作应用程序中抽取并直接转移到信息平台或信息平台的一个投影系统上。
2)加载:利用相应DBMS提供的加载工具,将数据库中的这些数据加载到该信息平台上。
3)转换:为接下来的查询和分析,使用SQL程序转换这些数据并存储在这个信息平台的数据库中。
该方法的主要优势在于它的高性能,尤其是在信息平台的转换阶段;其不足之处在于生产率低、质量低、管理繁琐、文档质量无法达到满意的效果。
图1 手工ELT的工作流程
1.2 工具辅助的ETL
为了提高生产率和程序质量,促进管理,在近十余年里,研究人员开发了许多数据仓库工具,大多数工具具有以下的相似点:
1)图形用户界面
2)运行时系统基本以一种离散的方式工作[4-5]:
抽取(extract)从数据源(如平面文件或数据库表)抽取数据,并将它们送到ETL服务器,而不是直接进入信息平台,在ETL服务器中使用工具处理和转换数据。
转换(transform)根据具体要求,逐行转换ETL服务器中的数据。
加载(load)为了后续的查询和分析,将已转换的数据加载到信息平台的目标数据库表中。
这些功能复杂的工具可以按照独立于复杂信息平台系统的不同需求设计。此类ETL体系的结构如图2所示。该方法存在以下不足[3,7]:
1)配置弱。考虑到处理能力,相对于数据库服务器而言,ETL服务器的配置要弱一些。
2)不适合的技术。ETL服务器采用的典型逐行处理模式效率不高,尤其是在需要处理的数据量很大时。然而,在数据仓库实践中,大数据量处理是数据仓库的特色。有效处理大数据量是用于承载数据仓库的专业数据库管理系统的主要需求之一。
3)繁忙的数据转换。待处理的数据通过网络连接来回传输至整个系统边界,在一些情况下,这些连接并非足够强,一定程度上降低了处理性能。
图2 工具辅助的ETL流程
1.3 工具辅助的ELT
近几年,为了提高系统的性能,研究人员对现有数据仓库工具进行了根本性的修改,并加快了新工具的开发速度。许多现有的有代表性的数据仓库工具被移植到以下修改的ELT目录中,如图3 所示[6-8]。
图3 工具辅助的ELT流程
1)在数据仓库工具的控制下,从操作应用中抽取有关操作数据并直接转移到信息平台或信息平台的投影系统中。
2)在数据仓库工具的控制下,这些数据被加载到信息平台的数据库中。
3)为了后续的查询和分析,在数据仓库工具的控制下,在信息平台转换并在信息平台的数据库中存储这些数据。
该方式保留了图形用户界面,性能也得到了一定改善。
1.4 3种构建方法的比较
通过前面的分析,笔者将以上3种方法在性能、生产率、软件质量、管理程序、文档质量等5方面进行比较。比较时,采用A、B两个等级(A优于B),每个等级用后缀(+、-)表示其程度,如表1所示。
表1 3种构建方法的比较
2 基于MGO的数据仓库ETL构建方法
通过表1可以看出:上述3种构建方法均存在不足之处,尤其是其中许多活动是重复的。为了克服这些不足,本文提出构建数据仓库ETL的新方法,即基于元数据驱动的通用操作符(metadata-driven generic operator,MGO)的构建方法。该方法的中心思想是:在ETL过程中,考虑到有些活动是重复的,而有些不是,故将重复的和不重复的活动区分开,让重复的活动仅执行一次。为了区分这些活动,将数据仓库里的活动分为通用知识和特定对象的元数据(object-specific metadata)。所谓通用知识,是指在感兴趣领域里具有普适性的知识,有时也称领域通用知识(domain-generic knowledge)。例如,SQL语法中的所有 CREATE、DELETE 语句,编辑操作中的 copy、paste、search、replace等。特定对象的元数据是指具有专指性的知识。元数据主要分为描述性元数据(descriptive metadata)和操作元数据(operative metadata)。描述性元数据目标是描述相应的主题,如加载程序的文档等;而操作元数据定义了系统中的操作/系统对象和它们之间的关系,确定了系统的行为或随后的状态。例如,一个表的列或者从一个源表到目标表的列映射都是操作元数据。前者通常存储在系统目录中,由系统自动维护;而后者存储在用户/工具定义的目录中,由系统构造器手动维护。在数据仓库ETL构建中,领域通用知识是重复的,而特定对象的元数据则不能重复。因此,对每个具体的对象(如表或映射),它必须单独、专门地对待。事实上,每个表有自己的定义元数据,每个列有自己指定的元数据,每个目标列则有自己来自相应的源应用的列的映射。
本文构建新方法的工作流如图4所示,与前述工具辅助的ELT方法类似,但没有辅助工具。事实上,在生产率、软件质量、文档质量、管理程序和性能等关键方面,本文方法优于现代专业的数据仓库工具使用的方法,且成本并未因此增加。具体步骤如下:
1)数据源。主要从源应用的表中抽取数据,并将它们转移到数据仓库的平面数据文件区;
2)MGO。此方法主要依靠12个基本操作符完成数据源到数据仓库的转换与加载。
3)数据库服务器。按照存储格式要求,将通过MGO转换过来的数据存储于此。
3 实例研究
从图4可以看出:基于元数据驱动的通用操作符的构建是此类新方法的核心。图5给出了平面文件加载器(12个基本操作符之一)的构建和实现流程。其核心任务是:将平面数据文件通过控制文件转换为数据仓库中的表。为了实现这一过程,首先要利用存储过程,按照控制文件的格式将元数据中的字段抽取出来,每一个字段写成一个控制文件。实现过程如下:
(此处?为通配符,根据实际情况替换成相应的字符):
SQL*PLUS
SPOOL‘控制文件名’
SELECT Text FROM WT
ORDER BY No
SPOOL OFF
Sql_str= ’??????’
Echo‘USER_ID=???,PW=???,CONTROL=’控制文件名’>f.pmf
Sqlldr PARFILE=f.pmf
这种方法实现了应用系统中的批量平面数据文件到数据仓库对应表的自动导入,大大降低了数据仓库ETL过程的复杂度。蒋彬等将这一方法应用于银行、保险等类型企业数据仓库ETL过程构建,并取得了良好的效果。
图4 基于MGO的数据仓库ETL构建流程
图5 平面文件加载器的构建和实现流程
4 结束语
从实用角度来看,本文提出的方法使得构建一个复杂体系结构的数据仓库过程得到简化,从而即使在非常不利的数据源情况下,依然可以得到高质量数据。从技术角度来看,这种方法代表了一种数据仓库建设的全新范式,它将使数据仓库的构建不再是一个复杂的问题。
[1]张宁,贾自艳,史忠植.数据仓库中ETL技术的研究[J].计算机工程与应用,2002(24):213-216.
[2]张旭峰.ETL若干关键技术研究[D].上海:复旦大学,2006:1-15.
[3]Jiang Bin.Constructing Data Warehouses With Metadatadriven Generic Operators,and more[M].Niederglatt:DBJ Publishing,2011:14-21.
[4]Thammasak Rujirayanyong A,Jonathan J Shi.A projectoriented data warehouse for construction[J].Automation in Construction,2006(15):800-807.
[5]Joe Celko.Joe Celko's Analytics and OLAP in SQL[M].San Fransisco:Morgan Kaufmann Publishers,2006:38.
[6]Vikas Ranjan.A Comparative Study between ETL(Extract-Transform-Load)and E-LT(Extract-Load-Transform)approach for loading data into a Data Warehouse[D].Chico:California State University,2009:2-6.
[7]Robert J Davenport.ETL vs.ELT:A Subjective View[EB/OL].[2012-10-05].http://www.dataacademy.com/files/ETL-vs-ELT-White-Paper.pdf.
[8]Sabir Asadullaev.Data warehouse architectures and development strategy[EB/OL].[2012-10-05].https://www.ibm.com/developerworks/mydeveloperworks/blogs/Sabir/resource/DWarchitecturesanddevelopmentstrategy.Guidebook.pdf?lang=en.