关闭

关闭

封号提示

内容

首页 [课程]ETL增量抽取方式.doc

[课程]ETL增量抽取方式.doc

[课程]ETL增量抽取方式.doc

上传者: 没有你的爱情_一片哀伤 2017-11-14 评分 4.5 0 89 12 403 暂无简介 简介 举报

简介:本文档为《[课程]ETL增量抽取方式doc》,可适用于市场营销领域,主题内容包含课程ETL增量抽取方式ETL增量抽取方式ETL增量抽取:要实现增量抽取关键是如何准确快速的捕获变化的数据。优秀的增量抽取机制要求ETL能够将业务系统符等。

课程ETL增量抽取方式ETL增量抽取方式ETL增量抽取:要实现增量抽取关键是如何准确快速的捕获变化的数据。优秀的增量抽取机制要求ETL能够将业务系统中的变化数据按一定的频率准确地捕获到同时不能对业务系统造成太大的压力影响现有业务。相对全量抽取而言增量抽取的设计更复杂、触发器方式触发器方式是普遍采取的一种增量抽取机制。该方式是根据抽取要求在要被抽取的源表上建立插入、修改、删除个触发器每当源表中的数据发生变化就被相应的触发器将变化的数据写入一个增量日志表ETL的增量抽取则是从增量日志表中而不是直接在源表中抽取数据同时增量日志表中抽取过的数据要及时被标记或删除。为了简单起见增量日志表一般不存储增量数据的所有字段信息而只是存储源表名称、更新的关键字值和更新操作类型(knsen、update或delete)ETL增量抽取进程首先根据源表名称和更新的关键字值从源表中提取对应的完整记录再根据更新操作类型对目标表进行相应的处理。例如对于源表为Oracle类型的数据库采用触发器方式进行增量数据捕获的过程如下:这样对表T的所有DML操作就记录在增量日志表DMLLOG中注意增量日志表中并没有完全记录增量数据本身只是记录了增量数据的来源。进行增量ETL时只需要根据增量日志表中的记录情况反查源表得到真正的增量数据。Sql代码()创建增量日志表DMLLOG:createtableDMLLOG(IDNUMBERprimarykey,,,自增主键TABLENAMEVARCHAR()(,,源表名称RECORDIDNUMBER,,,源表增量记录的主键值DMLTYPECH根()。增量类型I表示新增:U表示更新D表示删除EXECUTEDATEDATE,,发生时间)()为DMLLOG创建一个序列SEQDMLLOG上以便触发器写增量日志表时生成ID值。()针对要监听的每一张表创建一个触发器例如对表Test创建触发器如下:createOrreplacetriggerTBEFOREINSERTORUPDATEORDELETEONTforeachrowdeclaredmltypevarchar()beginifINSERTINGthenldmltype:='I’elsifUPDATINGthenIdmltype:=。tYelsifDELETINGthenldmltype:='D’endififDELETINGtheninsertintoDMLLOG(IDTABLENAMERECORDIDEXECUTEDATEDMLjYPE)values(seqdmllog(nextval’Test':old(IDsysdateldmltype)elseinsertintoDMLLOG(IDTABLENAMERECORDIDEXECUTEDATEDMLjYPE)values(seqdmllog(nextval。Test':new(IDsysdateLtiroltype)endifend、时间戳方式时间戳方式是指增量抽取时抽取进程通过比较系统时间与抽取源表的时间戳字段的值来决定抽取哪些数据。这种方式需要在源表上增加一个时间戳字段系统中更新修改表数据的时候同时修改时间戳字段的值。有的数据库(例如SqlServer)的时间戳支持自动更新即表的其它字段的数据发生改变时时间戳字段的值会被自动更新为记录改变的时刻。在这种情下进行ETL实施时就只需要在源表加上时间戳字段就可以了。对于不支持时间戳自动更新的数据库这就要求业务系统在更新业务数据时通过编程的方式手工更新时间戳字段。使用时间戳方式可以正常捕获源表的插入和更新操作但对于删除操作则无能为力需要结合其它机制才能完成。更新时间戳:、全表删除插入方式全表删除插入方式是指每次抽取前先删除目标表数据抽取时全新加载数据。该方式实际上将增量抽取等同于全量抽取。对于数据量不大全量抽取的时间代价小于执行增量抽取的算法和条件代价时可以采用该方式。、全表比对方式全表比对即在增量抽取时ETL进程逐条比较源表和目标表的记录将新增和修改的记录读取出来。优化之后的全部比对方式是采用MD校验码需要事先为要抽取的表建立一个结构类似的MD临时表该临时表记录源表的主键值以及根据源表所有字段的数据计算出来的(BI)MD校验码每次进行数据抽取时对源表和MD临时表进行MD校验码的比对如有不同进行update操作:如目标表没有存在该主键值表示该记录还没有则进行insert操作。然后还需要对在源表中已不存在而目标表仍保留的主键值执行delete操作。、日志表方式对于建立了业务系统的生产数据库可以在数据库中创建业务日志表当特定需要监控的业务数据发生变化时由相应的业务系统程序模块来更新维护日志表内容。增量抽取时通过读日志表数据决定加载哪些数据及如何加载。日志表的维护需要由业务系统程序用代码来完成。、系统日志分析方式该方式通过分析数据库自身的日志来判断变化的数据。关系犁数据库系统都会将所有的DML操作存储在日志文件中以实现数据库的备份和还原功能。ETL增晕抽取进程通过对数据库的日志进行分析提取对相关源表在特定时间后发生的DML操作信息就可以得知自上次抽取时刻以来该表的数据变化情况从而指导增量抽取动作。有些数据库系统提供了访问日志的专用的程序包(例如Oracle的LogMinder)使数据库日志的分析工作得到大大简化。、特定数据库方式(Oracle)以下介绍常见的针对特有数据库系统的增景抽取方式。Oracle改变数据捕获(changeddatacaptureCDC)方式:OracleCDC特性是在Oraelei数据库中引入的。CDC能够帮助识别从上次抽取之后发生变化的数据。利用CDC在对源表进行insert、upclate或delete等操作的同时就可以提取数据并且变化的数据被保存在数据库的变化表中。这样就可以捕获发生变化的数据然后利用数据库视图以一种可控的方式提供给ETL抽取进程作为增量抽取的依据。CDC方式对源表数据变化情况的捕获有两种方式:同步CDC和异步CDC。同步CDC使用源数据库触发器来捕获变更的数据。这种方式是实时的没有任何延迟。当DML操作提交后变更表中就产生了变更数据。异步CDC使用数据库重做日志(redolog)文件在源数据库发生变更以后才进行数据捕获。Oracle闪回查询方式:Oraclei以上版本的数据库系统提供了闪回查询机制允许用户查询过去某个时刻的数据库状态。这样抽取进程可以将源数据库的(BI)当前状态和上次抽取时刻的状态进行对比快速得出源表数据记录的变化情况。、比较和分析可见ETL在进行增量抽取操作时有以上各种机制可以选择。现从兼容性、完备性、性能和侵入性个方面对这些机制的优劣进行比较分析。数据抽取需要面对的源系统并不一定都是关系型数据库系统。某个ETL过程需要从若干年前的遗留系统中抽取Excel或者CSV文本数据的情形是经常发牛的。这时所有基于关系型数据库产品的增量机制都无法工作时间戳方式和全表比对方式可能有一定的利用价值在最坏的情况下只有放弃增量抽取的思路转而采用全表删除插入方式。完备性方面时间戳方式不能捕获delete操作需要结合其它方式一起使用。增量抽取的性能因素表现在两个方面一是抽取进程本身的性能二是对源系统性能的负面影响。触发器方式、日志表方式以及系统日志分析方式由于不需要在抽取过程中执行比对步骤所以增量抽取的性能较佳。全表比对方式需要经过复杂的比对过程才能识别出更改的记录抽取性能最差。在对源系统的性能影响方面触发器方式由于是直接在源系统业务表上建立触发器同时写临时表对于频繁操作的业务系统可能会有一定的性能损失尤其是当业务表上执行批量操作时行级触发器将会对性能产生严重的影响同步CDC方式内部采用触发器的方式实现也同样存在性能影响的问题全表比对方式和日志表方式对数据源系统数据库的性能没有任何影响只是它们需要业务系统进行额外的运算和数据库操作会有少许的时间损耗时间戳方式、系统日志分析方式以及基于系统日志分析的方式(异步CDC和闪回查询)对数据库性能的影响也是非常小的。对数据源系统的侵入性是指业务系统是否要为实现增抽取机制做功能修改和额外操作在这一点上时间戳方式值得特别关注该方式除了要修改数据源系统表结构外对于不支持时间戳字段自动更新的关系型数据库产品还必须要修改业务系统的功能让它在源表t执行每次操作时都要显式的更新表的时间戳字段这在ETL实施过程中必须得到数据源系统高度的配合才能达到并且在多数情况下这种要求在数据源系统看来是比较“过分”的这也是时间戳方式无法得到广泛运用的主要原因。另外触发器方式需要在源表上建立触发器这种在某些场合中也遭到拒绝。还有一些需要建立临时表的方式例如全表比对和日志表方式。可能因为开放给ETL进程的数据库权限的限制而无法实施。同样的情况也可能发生在基于系统日志分析的方式上因为大多数的数据库产品只允许特定组的用户甚至只有DBA才能执行日志分析。闪回杏询在侵入性方面的影响是最小的。(BI)各种数据增量抽取机制的优劣性综合分析如表l所示。增量机制兼容性完备性抽取性对源系统对源系统实现难度能性能影响倾入性触发器方式关系型数据库高优大一般较容易时间戳方式关系型数据库具有“字段”低较优很小大较容易结构的其它数据格式全表删除插入任何数据格式高极差无无容易方式全表比对方式关系型数据库、文本格式高差小一般一般日志表方式关系型数据库高优小较大较容易系统日志分析关系型数据库高优很小较大难方式同步CDC方式Oracle数据库i以上高优大一般较难异步CDC方式Oracle数据库i以上高优很小一般较难闪回查询方式Oracle数据库i以上高较优很小无较容易

类似资料

该用户的其他资料

以人为本防在先 内控严密管到位.doc

金桂苑二期工程施工现场临时用电组织设计.doc

七小校本课程—葫芦教材.doc

《窗》说课稿.doc

核磁弥散成像及增强扫描在诊断非缺血性颅脑病变中的意义.doc

职业精品

精彩专题

上传我的资料

精选资料

热门资料排行换一换

  • 20120407真气运行法课程课…

  • 冯世纶教授经方师承班学员名单.d…

  • 数学大师启示录_希尔伯特.pdf

  • 数学大师启示录_庞加莱.pdf

  • 数学大师启示录_高斯.pdf

  • 数学大师启示录_拉格朗日.pdf

  • 数学大师启示录_伽罗瓦.pdf

  • 数学大师启示录_阿基米德.pdf

  • 武穆遗书.doc

  • 资料评价:

    / 8
    所需积分:0 立即下载

    意见
    反馈

    返回
    顶部