基于可复用构件思想的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)层间接口构件。为了在各个数据仓