[ETL] 基于可复用构件思想的ETL架构设计
数据仓库的数据来源常包含着噪声数据、不完整数据、甚至是不一致的数据。为了得到高质量的数据,必须对抽取(Extract)出来的原始数据做一系列复杂转换(Transform)处理,最后装载(Load)到数据仓库中。这种从原始数据到数据仓库之间,对数据进行的操作称为ETL过程,其工作量大约占系统的60%,实现ETL过程的效率和质量很大程度上决定了数据仓库系统的构建效率和质量。目前研究ETL过程都是集中于个案的研究,强调ETL系统的可扩展性和灵活性,对于如何在类相似或相近的数据仓库项目中共享ETL过程的研究则很少,很大程度上阻碍了数据仓库项目建设效率的进一步提高。如何在一类相似或相近的数据仓库项目中发现其共同特征、知识和需求,使得ETL过程可以在这些数据仓库项目中被反复使用,大幅度提高实现ETL过程的效率,从而提高数据仓库构建的效率,研究该问题具有一定理论意义及实用价值。 基于此,这里研究了基于构件的思想,设计并实现了可重用的ETL架构,经北京银联、江苏银联、浙江银联筹10家银联省级分公司的数据仓库项目实际应用,表明该架构是有效的。 1 基于可复用构件思想的ETL架构设计 1.1 设计思想 基于构件技术的软件复用提倡以已有的工作为基础,充分利用过去工作中积累的知识和经验,将已经辨识的具有相对独立功能的构件应用于新系统的开发,保证新系统开发的过程中,能够将重点集中于辨识和实现应用系统特有的构成成分,最终缩短系统开发周期,提高系统的质量。 基于构件技术的软件复用的核心思想包括如下几个方面: (1)构件化设计。通过系统地分析一类相似或相近的数据仓库项目,识别出其共同特征和可变特征,并对这些特征进行抽象,形成领域分析模型,并据此进一步识别出可复用的构件。 (2)层次化设计。层次化设计可以提高系统的可扩展性和可维护性。通过层次化设计可以将所有识别的构件按一定的规则(如抽象级别、处理对象和处理的功能)分类管理,然后以分层的形式来组织,进而确定不同层构件之间的交互方式,保证每个构件的变化只涉及它的邻近两层的相关构件,实现系统一定程度上的开放性。 (3)接口化设计。不同层次的构件之间需要沟通,沟通需要规范,通过规范的接口可实现构件之间沟通的规范化。接口只制定规范,具体实现交由构件内部完成。接口化设计将构件的差异放到实现阶段,而不是在设计阶段,使得设计阶段可以致力于软件架构设计的完整性和复用性,使得不同系统之间处理的差异通过替换构件而无需变动架构就可得到解决。 1.2 ETL架构模型设计 基于可复用构件思想的ELT架构(如图1所示)主要分成基础服务层、抽取层、集成转换层、特殊处理层四个层次,每个层次的功能如下所述。 ![]() 1.2.1 抽取层 抽取层构件位于ETL架构的最底层,直接面对数据源,完成数据抽取阶段的工作。鉴于数据仓库数据源差异性大的特点,这个层的ETL构件在不同数据仓库间差异很大,可重用程度总体上比较低。 1.2.2集成转换层 集成转换层构件主要将抽取层抽取的数据转换成格式规范、含义统一、质量良好的数据,并集成到数据仓库中。由于是在两个层接口构件之间,所以集成转换层构件的输入和输出都要满足层间接口构件的约定,在相似数据仓库项目之间的差异主要体现在业务处理规则上。集成转换层为每类数据对象提供一类ETL处理构件,同层构件之间相对独立,通过抽象各个相似数据仓库项目业务规则,将其封装在构件内,保证ETL架构在相似数据仓库之间移植时,只要通过配置业务规则,ETL构件即可投入使用。 1.2.3特殊处理层 为了保证后续功能开发者可以将注意力放在功能关注的指标上,而不要关心指标的具体口径,更不要担心指标口径变化和指标口径在相似数据仓库项目之间的差异对功能移植造成不利影响,在集成转换层构件处理的基础上,专门增加了特殊处理层,负责将数据仓库中按流水交易形式组织的数据换算成按KPI组织的形式。 1.2.4 基础服务层 为了给ETL提供一个相对稳定和灵活的架构,在元数据管理的构件识别的基础上引入了基础服务层,扩展了传统意义上的元数据管理的功能,包含元数据管理构件、层间接口构件、KPI自动测试构件三大类:这些构件构成了ETL基础和骨架,为系统的稳定性和适应性奠定了基础。 (1)元数据管理构件。元数据是关于数据的数据,元数据管理构件主要完成ETL子系统中元数据管理模块的功能,具体分成三小类,分别是负责维护数据仓库架构的维护类构件、负责维护业务规则的维护类构件和调度类构件。 (2)层间接口构件。为了在各个数据仓库项目之间平稳的移植ETL,在此设计了层间接口构件。从抽象层面上为各数据仓库项目提供一个相同的ETL处理框架,为ETL处理过程各层次的各种功能构件提供接口,实现构件具体处理过程对架构的透明化,为系统功能扩展留下了余地。 (3)KPI(关键绩效指标)自动测试构件。测试无疑是保证系统质量的一个重要方法,ETL也不例外,但是,ETL过程测试和一般的软件测试在测试过程、测试方法、评价标准等方面都有比较大的不同,它是一个非常繁琐、工作量巨大、有一定规律的过程。 从抽象层面上看,一类相似或相近的数据仓库项目每个KPI(关键绩效指标)的维度组合是相对固定的,测试标准和过程是一致的,所以,在ETL架构中,专门提供了KPI自动测试类构件,为每类KPI提供一个自动测试构件,其基本处理逻辑如图2所示。 ![]() 该类构件能够快速发现ETL架构中集成层和转换层中相关构件数据处理过程中隐藏的问题,从而降低ETL过程测试的难度和工作量,大幅度提高ETL架构的效率和质量。 2银联统计分析系统ETL构件识别与架构设计 为了说明基于可重用构建思想的ETL架构的有效性,下面介绍该架构在多家银联统计分析系统中的实际应用。 2.1 银联统计分析系统的介绍 银联统计分析系统是建立在数据仓库基础上的,为银联各分公司领导提供决策辅助信息的系统。其目的是为了更深入应用银联积累的大量跨行交易数据,是为了促进分公司、银行、金融监管机构和行业客户对业务进行全面、及时、准确的分析和定位,及时了解业务发展动态和预测,及时解决业务发展中存在的问题。 银联在全国有37家省级分公司。各分公司所关心的数据内容,关注的KPI体系,KPI的评价标准都是一致的。但是,各分公司由于当地经济发展水平不同,银行卡应用深度不同,导致各分公司业务种类差异很大,即使是同一种业务,其成熟程度、规范程度差异也很大,体现在数据上就是数据源的种类不一致,即使是相同的业务数据源,在数据结构、业务判断规则、数据表现形式方面也有很大差异性。 这种共性大差异性也大的多个数据仓库系统,设计上选用可重用性构件的思想来指导ETL的架构设计,实现上采用自己开发的拥有自动知识产权决策支持系统产品:数据挖掘商业应用平台(Compass)。该平台包括智能流程管理子系统、报表专家子系统、多维分析子系统、数据挖掘子系统四个部分。其中智能流程子系统是一个独立的ETL开发工具,能够支持基于可复用构件思想ETL过程的实现。 2.2 银联统计分析系统ETL构件分层识别 在银联统计分析系统ETL设计阶段,依据图1所示的ETL架构和设计思想来设计和组织ETL各处理阶段可重用构件以及构件之间的接口规则: (1)抽取层。银联统计分析系统抽取层处理的数据主要三类:业务数据、维度数据、辅助数据。业务数据主要包括全流水、二次清分数据、公共支付、固网支付、网上支付等业务交易数据;维度数据主要包括商户信息、机构信息、终端信息、地区信息等;辅助数据主要是卡bin信息、发卡信息等。 银联统计分析系统这个层面的数据除了全流水数据外,其他的内容在各个分公司表现形式、处理规则差异很大,封装成构件的价值不大,所以这个层面可以识别的构件只有全流水抽取。 (2)集成转换层。鉴于各分公司统计分析系统所关心的数据内容,关注的KPI体系,关注的维度数据(商户、机构、终端)信息相似度很高,所以这个层面可以识别的构件比较多,主要有两大类:流水数据集成转换构件;维度类数据集成转换构件,具体包括商户、机构、终端、商户类别、地区信息的集成转换构件。 辅助数据因为类型多样,差异比较大,可重用价值不高,所以不对其识别构件。 (3)特殊处理层。银联统计分析系统的特殊处理层的构件不再按照数据类别识别,而是根据每个指标的使用频率、涉及数据记录数的多少识别三类构件:交易指标类构件、调账指标类构件、维度统计指标类构件,分别负责交易类指标、调账类指标、商户和终端发展情况的统计。 (4)基础服务层。各分公司银联统计分析系统对元数据管理要求基本一致且没有特殊要求,银联统计分析系统将其识别为元数据管理构件。 考虑到银联统计分析系统处理的数据对象基本一致,差异主要体现在数据的表现形式和处理规则上,加上ETL过程构件之间传递数据量很大,这里选用数据池的形式而不采用函数调用的形式来定义构件接口。例如,所有分公司对商户关注的信息都是一样的,但是每个分公司提供的商户信息的表现形式却各不相同,抽取层接口数据池通过约定抽取层商户信息抽取过程生成内容和格式,为集成转换层商户信息集成转换构件提供一个稳定的数据源,使其不必关心用户提供的数据源是什么形式。 考虑到银联统计分析系统关注的指标繁多,一次性全部识别成控件难度和工作量都很大。所以,首先识别并封装最重要的、最常用的交易类指标的自动测试构建;然后是调帐指标和维度统计指标的自动测试构件的识别和封装。 2.3 银联统计分析系统ETL架构设计 基于可复用构件思想银联统计分析系统ETL架构具体包含六个功能模块(如图3所示)包括:元数据抽取模块、可重用构件选择和导入模块、数据仓库架构自动维护模块、ETL过程定义模块、ETL调度模块、ETL构件生成模块。各个模块的具体功能分工如下: (1)元数据抽取模块。这个模块主要完成两项工作:抽取银联业务数据和维度数据元数据,并在此基础上对系统进行更精确的定义,例如银联各类数据源提供的时间周期、银联数据仓库数据保留的时间和备份频率等信息。 (2)可重用构件的选择和导入模块。在银联统计分析系统的分析和设计阶段,已经识别了抽取层、集成转换层等各层有重用价值的构件。为了管理和重用这些构件,构件选择和导入模块的功能有两个:第一,从银联构件库中抽取已经封装的全流水交易数据抽取构件、集成转换构件、KPI转换构件、维度类数据集成转换构件(包括商户、机构、终端、商户类别、地区信息五类构件)、KPI自动测试类构件,将其导入到ETL过程库,按照ETL架构(见图1)对导人的构件分层组织,生成系统的ETL过程框架(如图4(a)所示),图4(a)中的ETL过程链中三个JOB节点分别对应ETL架构(见图1)中的抽取层、数据集成转换层、特殊处理层,图4(b)~(d)分别对应各导人构件(一个JOB节点代表一个导人构件的处理过程)在这三个层次中的组织形式。第二,模块可根据新项目银联分公司特殊业务规则和指标口径配置每个构件的处理规则,将配置信息加入元数据库中。 (3)数据仓库架构自动维护模块。数据仓库架构自动维护模块主要功能是依据元数据库中的信息,为银联统计分析系统完成数据仓库的创建和初始化工作,完成事实表、维度表创建,完成每个构件需要的配置表、中间表和临时表的建立等工作,而这些原本需要用手工来实现和维护的。 (4)ETL过程定义模块。在初始框架的基础上,可通过ETL定义模块可视化地定义构件库中没有可重用构件的ETL过程,例如手续费和品牌费抽取、商户信息抽取(如图5所示)、终端信息过程等,使整个银联统计分析系统的ETL趋于完善。 (5)ETL调度模块。ETL调度模块可以根据系统的调度设置,执行ETL过程库中的ETL过程,实现数据抽取、转换、加载、换算等工作。 (6)可重用构件生成模块。对于新定义的ETL过程,若可重用价值高,可通过ETL构件生成模块从ETL过程库中抽取相应ETL处理过程包装成可重用构件。可重用构件一般包括以下内容:ETL处理过程、配置过程说明文档、相关表(配置表、中间表和临时表)的信息、初始化数据、特殊规则配置功能界面,构件这些构成部分由ETL构件生成模块分别存入到构件库中相关表中。 ![]() ![]() 3 结 语 这里介绍了一个基于可复用构件思想的ETL架构,以北京银联、江苏银联、浙江银联等10家省级银联统计分析系统为例,介绍了该架构各层构件的识别过程,设计了ETL模块构成以及各模块主要功能。该架构已经在10家省级银联分公司的统计分析系统的ETL构建中应用,实践表明该架构是有效的,它能够在比较短的时间内完成统计分析系统的构建,可有效缩短系统的开发周期,大幅度降低各分公司的时间成本和资金成本,对于推动数据仓库和商业智能在银联各个省级分公司的应用有显著意义和使用价值。 |