

英语原文共 5 页,剩余内容已隐藏,支付完成后下载完整资料
第12卷第5号2007 804-808
商品号:1007-1202(2007)05-0804-05
DOI 10.1007 / s11859-007-0045-5
新的研究与实施
基于SQL的ETL方法
□包玉斌,宋杰,冷芳玲,王大玲,于戈
东北大学信息科学与工程学院,辽宁沉阳110004
摘要: 本文分析了现有传统ETL(提取,转换,加载)方法的主要特点,优点和缺点,并总结了一些影响ETL工具性能的因素。然后,提出了一种新的ETL方法E-LT(提取,加载和转换)。E-LT方法应用数据库映射技术来实现ETL过程中的加载阶段和转换阶段在提取阶段之后同时执行。因此,它可以使用SQL命令完成加载和转换处理,并消除了传统ETL过程中加载前的暂存区域。提出了一种基于E-LT方法的ETL引擎框架。详细讨论了ETL流程,包括初始加载和增量刷新,提出了基于SQL的初始加载算法。通过实验证明和理论分析,E-LT方法在整个装载过程中的性能优于某些商业ETL方法。最后,以E-LT方法在海洋数据仓库中的实际情况为例,讨论了该方法的有效性。
关键词:数据仓库 ETL;E-LT;的SQL
CLC编号: TP 311.13
接收日期: 2007-03-01
基金会项目:国家自然科学基金资助
中国(60673139,60573090)
传记: 包玉斌(1968-),男,副教授,博士,研究方向:数据仓库,数据挖掘。电子邮件:baoyb@mail.neu.edu.cn
引言
ETL(提取,转换,加载)流的实现是建筑数据仓库(DW)中最复杂的工作之一。ETL流程的设计和实施工作量约占数据仓库整体工作量的60%至80%[1]。因此,在ETL工具[2-7]上已经做了很多研究工作。同时,有一些商业或开源ETL工具[8-10]。
在传统的ETL(TETL)方法中,中间层是数据源与DW之间的桥梁,所有数据提取,转换和加载工作都由中间层完成。TETL方法的优点是用于设计ETL的无平台语言,而缺点是它不能在源端和目标端使用本地代码优化。主要问题如下:①ETL工具中的数据转换或逐行质量检测易于使转换流程成为整个ETL过程的性能瓶颈;② 从数据源到ETL工具的数据传输,最后到目标端的数据传输,加剧了网络流量,并导致额外的运行开销。影响任何ETL工具性能的主要因素是其体系结构[11]。
因此,提出了一种新的ETL方法E-LT(提取,加载和转换)。所提出的方法不仅简单地将数据从源侧完全复制到仓库侧,而且使用数据源的分布式属性在DW侧创建数据源的镜像,然后应用数据库系统或文件系统的底层协议来完成从中提取数据的操作。数据源。E-LT方法适用于数据库地图-技术可实现在提取阶段之后同时执行的ETL过程的加载阶段和转换阶段。因此,它可以使用SQL命令完成加载和转换处理,并消除了传统ETL过程中加载前的暂存区域。实验结果表明,基于E-LT的ETL工具的性能优于某些流行
E-LT方法概述
与TETL不同,我们提出的E-LT方法在加载阶段之后或同时执行转换。它使用SQL语句先执行提取,然后执行加载和转换,并且不需要特殊的工具来转换数据。图1说明了提出的E-LT方法的过程。
在E-LT模式下,加载阶段是最关键的,而将L(oading)阶段放在T(transformation)之前则不会
图1 E-LT的过程
意思是简单地将数据从源完全复制到仓库,但是在DW端建立了数据源的镜像。如果数据源是平面文件,则可以使用文件传输协议(FTP)。如果数据源是数据库,则可以使用分布式数据库链接技术。总之,整个ETL过程由目标端的SQL语句完成。由于消除了可能导致性能瓶颈的ETL中间层,并使用E-LT方法中的高效SQL语句或RDBMS或数据库供应商提供的特殊加载命令,因此可以实现更显着的性能改进。由于在ETL实现中仅使用SQL语句,因此ETL工具可以轻松实现和维护。E-LT方法的框架由许多组件组成(见图2)。
|
图2 E-LT方法的框架 805 |
元数据管理组件管理用于构造SQL语句的元数据。这些元数据描述了数据源,DW和ETL规则。元数据接口组件是元数据和框架中其他组件之间的桥梁。它提供了一系列与业务相关的方法来访问元数据。SQL语句生成组件是框架的核心部分。它包含许多轻量级,灵活且接口一致的SQL语句生成器。SQL优化组件用于优化SQL脚本。流程组装
组件生成可执行的ETL流。对于所有ETL规则,将生成两个流,即初始加载流和增量更新流。流控制组件按顺序获取流链的每个SQL语句,并调用数据库访问组件以执行它们。日志组件监视ETL工具的执行以确保数据质量。它记录操作日志,错误日志,分析日志和更改日志。变更管理 组件接收系统变更,并通知其他组件针对变更进行调整。
通过以上基于E-LT的方法框架,它具有以下优点:① 使用SQL语句和局部优化机制来提高性能;②减少网络流量;③通过分布式数据加载实现更好的可扩展性;④ 无需额外的程序编码即可有效地支持任何种类的数据源;⑤简单轻松地进行异常处理;⑥开发和部署成本低。
基于SQL的E-LT实现
E-LT方法可通过SQL语句实现,而高级语言可用于自动实现用于构建SQL脚本的算法并触发SQL脚本执行。每个RDBMS提供用于分布式数据库连接,函数,存储过程和触发器的SQL命令。这些语言特长启用了基于SQL的ETL流程。另一方面,基于SQL的ETL是高效的。原因有以下三个:①大多数数据库系统都会优化SQL语句的执行,因此基于SQL的ETL可能会应用数据库系统提供的本地优化机制。②某些不符合过滤条件的数据可以在数据源侧消除。因此,这减少了很多网络流量。③ 基于SQL的ETL方法按块而不是逐行加载数据。
以Oracle数据库作为数据源和基于Oracle的DW之间的ETL过程为例,本节讨论用于实现E-LT方法的辅助结构和一些基于SQL的关键算法。
辅助表
E-LT方法需要分别在数据源侧和DW侧创建一些辅助表,以帮助SQL语句完成完整的ETL过程。
2.1.1 尺寸映射表
维度映射表(DMT)位于DW侧,用于保持维度表及其源表之间的对应关系,以便在加载事实表时在每个维度中查找引用主键作为事实表的外键。DMT中的元组数量等于维表中的元组数量。每个尺寸表都有一个对应的DMT。
2.1.2 日志表
日志表是数据源侧的辅助表,用于保持数据库表的数据更改。初始加载后,由于插入,删除和更新源数据表而导致的数据更改将记录到日志表中,直到下一个增量刷新时间点为止。为了减小表的大小并提高执行性能,同一星型架构中每个维度的所有源表都共享相同的一维Log表,而同一星型架构中的DW事实表的所有源表都共享一个维日志表。相同的事实日志表。日志表结构被省略。
基于SQL的算法
在本小节中,基于维度表,维度映射表和事实表的顺序描述了基于SQL的算法。SQL命令将提供一些复杂的算法。
2.2.1 初始加载
在这里,我们讨论维表,DMT和事实表的初始加载方法。
对于维表,由于维表在初始加载时为空,因此它们的初始加载仅需要合并维表的所有对应源表,然后将结果直接附加到对应维表中。对于维映射表,如果源表中的元组在维表中具有相应的记录,则这两个记录的两个主键以及源表和维表的名称都记录在DMT中。源表和维度表之间主键的对应关系可以使用SELECT子句找到,并附加到DMT中。对于事实表,可以使用SELECT子句从相应事实表的每个源表中选择满足过滤条件的数据记录,
2.2.2 表格刷新
在传统的WD环境中,假设是将源数据ETL转换为DW后,它们是稳定的,不会再次更改。但是在实际应用中,这种假设并不成立。因此,我们应该考虑如何在DW上更新,删除,插入和附加数据。用于上述操作的相应的基于SQL的算法并不难设计。因此,由于空间的限制,我们忽略了它们。
2.2.3 日志表处理
日志表应用于增量刷新。在增量刷新之前,应处理日志表以简化操作。由于同一元组在增量刷新之前可能会更改几次,因此日志表中有多个记录与源表中的同一元组相对应。因此,在进行增量刷新以减少一些不必要的操作时应考虑这些情况。日志表的处理流程如下:
首先,如果一个元组具有有关删除的日志信息,则仅删除日志信息记录在日志表中,而有关该元组的所有其他信息都将被删除。然后,如果在日志表中存在有关同一元组的插入和更新日志信息,则更新信息仅保留在日志表中,因为更新操作是通过删除旧的,然后插入新的来进行的。最后,对于日志表中的更新记录,通过根据实体主键删除重复项,只有相同记录的最后更新日志会保留在日志表中。
E-LT过程设计
在实际的ETL过程中,假设分别有N个维表,事实表,维映射表和日志表,并且每个维表,事实表或维映射表分别具有M个对应的源表。表1显示了用于完成每个ETL流的SQL语句数量的统计结果。
表1 每个ETL流中的SQL命令数
项目 恢复
|
初始加载 |
删除 |
插入 |
更新 |
|
|
Dim Tbl |
ntilde; |
ntilde; |
ntilde; |
- |
|
MDT |
M times; N |
ntilde; |
M times; N |
0 |
|
Fact Tbl |
M times; N |
ntilde; |
M times; N |
- |
|
Log Tbl |
0 |
- |
4 N |
- |
E-LT流程包含初始加载流程,维表和MDT刷新流程以及事实表增量刷新流程。
一组SQL命令可以由E-LT框架中的SQL组件构造,并由Flow组件自动组装成相应的流程。初始加载流的汇编算法的伪代码如下所示:算法 1 InitialLoadingFlow()
输入:ETL元数据;
输出:加载结果;
步骤1 对 每个维表
步骤2执行初始加载尺寸表;
步骤3为每个维度的源表。桌子
步骤4执行初始加载映射表;
每个事实表的步骤5
步骤6为当前事实表中的每个源表
步骤7执行初始加载事实表;
步骤8返回true;
省略了用于增量刷新维表和事实表的其他算法。
实验与讨论
为了证明所提出的E-LT方法的有效性和效率,在本节中,提出了一些测试基于SQL的E-LT方法性能的实验。另外,描述了该方法的用例,并
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[405845],资料为PDF文档或Word文档,PDF文档可免费转换为Word
