已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ETL中的数据增量抽取机制【摘要】: 为实现数据仓库中数据的高效更新,探讨在数据仓库的ETL(数据的抽取、转换和装载)子系统中进行数据增量抽取时所采用的常见机制,对这些机制的原理,条件,方法以及运行效率等方面进行了详细的阐述,并从兼容性,完备性、性能和侵入性4个方面分析和比较了各种数据增量抽取机制的优劣性。最后,总结了选取数据增量抽取机制所应遵循的主要原则和标准。关键词:数据抽取转换与加载;增量抽取;数据仓库;商业智能0 引言增量抽取是数据仓库ETL(extraction,transformation,loading,数据的抽取、转换和装载)实施过程中需要重点考虑的问题。在ETL过程中,增量更新的效率和可行性是决定ETL实施成败的关键问题之一,ETL中的增量更新机制比较复杂,采用何种机制往往取决于源数据系统的类型以及对增量更新性能的要求。本文重点对各种方法进行对比分析,从而总结各种机制的使用条件和优劣性,为数据仓库项目中ETL工程的实施提供增量抽取技术选型方面的参考。1 ETL概述ETL包括数据的抽取、转换、加载。 数据抽取:从源数据源系统抽取目标数据源系统需要的数据; 数据转换:将从源数据源获取的数据按照业务需求,转换成目标数据源要求的形式,并对错误、不一致的数据进行清洗和加工; 数据加载:将转换后的数据装载到目的数据源。ETL作为构建数据仓库的一个环节,负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。ETL原来主要用于构建数据仓库和商业智能项目,现在也越来越多地应用于一般信息系统数据的迁移、交换和同步。在ETL的3个环节中,数据抽取直接面对各种分散、异构的数据源,如何保证稳定高效的从这些数据源中提取正确的数据,是ETL设计和实施过程中需要考虑的关键问题之一。在集成端进行数据的初始化时,一般需要将数据源端的全部数据装载进来,这时需要进行全量抽取。全量抽取类似于数据迁移或数据复制,它将数据源中的表或视图的数据全部从数据库中抽取出来,再进行后续的转换和加载操作。全量抽取可以使用数据复制、导入或者备份的方式完成,实现机制比较简单。全量抽取完成后,后续的抽取操作只需抽取自上次抽取以来表中新增或修改的数据,这就是增量抽取。在数据库仓库中,无论是全量抽取还是增量抽取,抽取工作一般由数据仓库工具来完成,如oracle的OWB,Sql Server的Integration Services以及专业的ETL商业产品Informatical PowerCenter等。如果企业的预算有限,也可以考虑使用开源项目Pentaho。这些工具都有一个特点,就是本身并没有实现特定的增量抽取机制,它们完成全量抽取后,用户可以通过定制计划任务的方式,实现按一定的周期从源系统中抽取当前周期内产生的增量数据,但至于这些增量数据如何产生,工具并没有提供自动生成增量数据的功能。所以,ETL过程中增量数据的产生机制是一个需要用户重点研究和选择的问题。下面讨论各种增量抽取的实现机制原理。2 增量抽取机制要实现增量抽取,关键是如何准确快速的捕获变化的数据。优秀的增量抽取机制要求ETL能够将业务系统中的变化数据按一定的频率准确地捕获到,同时不能对业务系统造成太大的压力,影响现有业务。相对全量抽取而言,增量抽取的设计更复杂,增量数据抽取中常用的捕获变化数据的方法有以下几种:21 触发器方式触发器方式是普遍采取的一种增量抽取机制。该方式是根据抽取要求,在要被抽取的源表上建立插入、修改、删除3个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个增量日志表,ETL的增量抽取则是从增量日志表中而不是直接在源表中抽取数据,同时增量日志表中抽取过的数据要及时被标记或删除。为了简单起见,增量日志表一般不存储增量数据的所有字段信息,而只是存储源表名称、更新的关键字值和更新操作类型(insert、update或delete),ETL增量抽取进程首先根据源表名称和更新的关键字值,从源表中提取对应的完整记录,再根据更新操作类型,对目标表进行相应的处理。例如,对于源表为Oracle类型的数据库,采用触发器方式进行增量数据捕获的过程如下:(1) 创建增量日志表DML _LOG:create table DML_LOG(ID NUMBER primary key, /自增主键TABLE NAME VARCHAR2(200) ,/源表名称RECORD_ID NUMBER, /源表增量记录的主键值DML_TYPE CHAR(1) , /增量类型,I表示新增:U表示更新;D表示删除EXECUTE_DATE DATE/发生时间);(2) 为DML_LOG创建一个序列SEQ_DML_LOG,以便触发器写增量日志表时生成ID值。(3) 针对要监听的每一张表,创建一个触发器,例如对表Test创建触发器如下:create Or replace trigger T BEFORE INSERT OR UPDATE OR DELETE ON T for each rowdeclare l_dml_type varchar2(1);beginif INSERTING then l_dml_type:=I;elsif UPDATING then I_dml_type:=U;elsif DELETING then l_dml_type:=D;end if;if DELETING theninsert into DML_LOG(ID,TABLE_NAME,RECORD_ID,EXECUTE_DATE,DML_TYPE)values(seq_dml_log.nextval,Test,:old.ID,sysdate, l_dml_type);elseinsert into DML_LOG(ID,TABLE_NAME,RECORD_ID,EXECUTE_DATE,DML_TYPE)values(seq_dml_log.nextval,Test,: new.ID, sysdate,l_dml_type);endif;end;这样,对表T的所有DML操作就记录在增量日志表DML_LOG中,注意增量日志表中并没有完全记录增量数据本身,只是记录了增量数据的来源。进行增量ETL时,只需要根据增量日志表中的记录情况,反查源表得到真正的增量数据。22 时间戳方式时间戳方式是指增量抽取时,抽取进程通过比较系统时间与抽取源表的时间戳字段的值来决定抽取哪些数据。这种方式需要在源表上增加一个时间戳字段,系统中更新修改表数据的时候,同时修改时间戳字段的值。有的数据库(例如Sql Server)的时间戳支持自动更新,即表的其它字段的数据发生改变时,时间戳字段的值会被自动更新为记录改变的时刻。在这种情况下,进行ETL实施时就只需要在源表加上时间戳字段就可以了。对于不支持时间戳自动更新的数据库,这就要求业务系统在更新业务数据时,通过编程的方式手工更新时间戳字段。使用时间戳方式可以正常捕获源表的插入和更新操作,但对于删除操作则无能为力,需要结合其它机制才能完成。23 全表删除插入方式全表删除插入方式是指每次抽取前先删除目标表数据,抽取时全新加载数据。该方式实际上将增量抽取等同于全量抽取。对于数据量不大,全量抽取的时间代价小于执行增量抽取的算法和条件代价时,可以采用该方式。24 全表比对方式全表比对即在增量抽取时,ETL进程逐条比较源表和目标表的记录,将新增和修改的记录读取出来。优化之后的全部比对方式是采用MD5校验码,需要事先为要抽取的表建立一个结构类似的MD5临时表,该临时表记录源表的主键值以及根据源表所有字段的数据计算出来的MD5校验码,每次进行数据抽取时,对源表和MD5临时表进行MD5校验码的比对,如有不同,进行update操作:如目标表没有存在该主键值,表示该记录还没有,则进行insert操作。然后,还需要对在源表中已不存在而目标表仍保留的主键值,执行delete操作。25 日志表方式对于建立了业务系统的生产数据库,可以在数据库中创建业务日志表,当特定需要监控的业务数据发生变化时,由相应的业务系统程序模块来更新维护日志表内容。增量抽取时,通过读日志表数据决定加载哪些数据及如何加载。日志表的维护需要由业务系统程序用代码来完成。26 系统日志分析方式该方式通过分析数据库自身的日志来判断变化的数据。关系型数据库系统都会将所有的DML操作存储在日志文件中,以实现数据库的备份和还原功能。ETL增量抽取进程通过对数据库的日志进行分析,提取对相关源表在特定时间后发生的DML操作信息,就可以得知自上次抽取时刻以来该表的数据变化情况,从而指导增量抽取动作。有些数据库系统提供了访问日志的专用的程序包(例如Oracle的LogMiner),使数据库日志的分析工作得到大大简化。27 特定数据库的方式以下介绍常见的针对特有数据库系统的增量抽取方式。271 Oracle改变数据捕获(changeddatacapture,CDC)方式OracleCDC特性是在Oraele9i数据库中引入的。CDC能够帮助识别从上次抽取之后发生变化的数据。利用CDC,在对源表进行insert、upclate或delete等操作的同时就可以提取数据,并且变化的数据被保存在数据库的变化表中。这样就可以捕获发生变化的数据,然后利用数据库视图以一种可控的方式提供给ETL抽取进程,作为增量抽取的依据。CDC方式对源表数据变化情况的捕获有两种方式:同步CDC和异步CDC。同步CDC使用源数据库触发器来捕获变更的数据。这种方式是实时的,没有任何延迟。当DML操作提交后,变更表中就产生了变更数据。异步CDC使用数据库重做日志(redo log)文件,在源数据库发生变更以后,才进行数据捕获。272 Oracle闪回查询方式Oracle9i以上版本的数据库系统提供了闪回查询机制,允许用户查询过去某个时刻的数据库状态。这样,抽取进程可以将源数据库的当前状态和上次抽取时刻的状态进行对比,快速得出源表数据记录的变化情况。3 比较和分析可见,ETL在进行增量抽取操作时,有以上各种机制可以选择。现从兼容性、完备性、性能和侵入性3个方面对这些机制的优劣进行比较分析。数据抽取需要面对的源系统,并不一定都是关系型数据库系统。某个ETL过程需要从若干年前的遗留系统中抽取Excel或者CSV文本数据的情形是经常发生的。这时,所有基于关系型数据库产品的增量机制都无法工作,时间戳方式和全表比对方式可能有一定的利用价值,在最坏的情况下,只有放弃增量抽取的思路,转而采用全表删除插入方式。完备性方面,时间戳方式不能捕获delete操作,需要结合其它方式一起使用。增量抽取的性能因素表现在两个方面,一是抽取进程本身的性能,二是对源系统性能的负面影响。触发器方式、日志表方式以及系统日志分析方式由于不需要在抽取过程中执行比对步骤,所以增量抽取的性能较佳。全表比对方式需要经过复杂的比对过程才能识别出更改的记录,抽取性能最差。在对源系统的性能影响方面,触发器方式由于是直接在源系统业务表上建立触发器,同时写临时表,对于频繁操作的业务系统可能会有一定的性能损失,尤其是当业务表上执行批量操作时,行级触发器将会对性能产生严重的影响;同步CDC方式内部采用触发器的方式实现,也同样存在性能影响的问题;全表比对方式和日志表方式对数据源系统数据库的性能没有任何影响,只是它们需要业务系统进行额外的运算和数据库操作,会有少许的时间损耗;时间戳方式、系统日志分析方式以及基于系统日志分析的方式(异步CDC和闪同查询)对数据库性能的影响也是非常小的。对数据源系统的侵入性是指业务系统是否要为实现增量抽取机制做功能修改和额外操作,在这一点上,时间戳方式值得特别关注。该方式除了要修改数据源系统表结构外,对于不支持时间戳字段自动更新的关系型数据库产品,还必须要修改业务系统的功能,让它在源表t执行每次操作时都要显式的更新表的时间戳字段,这在ETL实施过程中必须得到数据源系统高度的配合才能达到,并且在多数情况下这种要求在数据源系统看来是比较“过分”的,这也是时间戳方式无法得到广泛运用的主要原因。另外,触发器方式需要在源表上建立触发器,这种在某些场合中也遭到拒绝。还有一些需要建立临时表的方式,例如全表比对和日志表方式。可能因为开放给ETL进程的数据库权限的限制而无法实施。同样的情况也可能发生在基于系统日志分析的方式上,因为大多数的数据库产品只允许特定组的用户甚至只有DBA才能执行日志分析。闪回查询在侵入性方面的影响是最小的。各种数据增量抽取机制的优劣性综合分析如表1所示。表1各种数据增量抽取机制优劣性综合分析增量机制兼容性完备性抽取性能对源系统性能影响对源系统侵入性实现难度触发器方式关系型数据库高优大一般较容易时间戳方式关系型数据库具有”字段”结构的其它数据格式低较优很小大较容易全表删除插入方式任何数据格式高极差无无容易全表比对方式关系型数据库、文本格式高差小一般一般日志表方式关系犁数据库高优小较大较容易系统日志分析方式关系型数据库高优很小较大难同步CDC方式Oracle数据库9i以上高优大一般较难异步CDC方式Oracle数据库9i以上高优很小一般较难闪回A询方式Oracle数据库9i以上高较优很小无较容易通过对各种增量抽取机制的对比分析,我们发现,没有一种机制具有绝对的优势,不同机制在各种因素下的表现大体上都是相对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 与食品公司合作协议书模板
- 2026-2031中国抽屉梳妆台行业市场调查及投资战略预测报告
- 2026-2031中国轨道车辆内装饰行业发展趋势及投资前景预测报告
- 2026-2031中国光端机行业市场调查及投资前景预测报告
- 2026-2031中国公关行业发展趋势预测及投资战略研究报告
- 金融市场开放度的测度研究
- 2025年环保产业与清洁能源知识考察试题及答案解析
- 2025年度有限空间及作业培训考试题(附答案)
- 2025年反假货币知识与技能竞赛题库及答案
- 2025年全国高校辅导员素质能力大赛基础知识测试题附参考答案
- 颈肩腰腿疼中医治疗
- 人教版历史2024年第二学期期末考试七年级历史试卷(含答案)
- 主要粮食作物机收减损技术-农业农机技术培训课件
- 中国血脂管理指南(基层版2024年)解读
- 【医院管理分享】:4C服务模式构建和谐医患关系-武汉大学中南医院实践
- 邮政社招笔试题
- 2024急性脑梗死溶栓规范诊治指南(附缺血性脑卒中急诊急救专家共识总结归纳表格)
- 《抽水蓄能电站施工监理规范》
- 物联网应用技术职业生涯规划
- 2024年云南省公路交通机电工程专业知识模拟试题(100题)含答案
- 茶叶及茶多酚单体EGCG的抗焦虑作用及机制探讨
评论
0/150
提交评论