最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

增量ETL数据抽取的策略及方法

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-31 17:11:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

这是很久以前在处理ETL增量时的一篇老文章,近年实施大量数据仓库项目中的经验处理方式是不得已时才采取增量处理的方式。而更多采用的方式是严格控制操作数据窗口,在满足业务限制及分析需求的前提下力求数据更新窗口最小化,这种最简单的策略反而被证明是一种简单、快速、高效的做法。以下是旧文:

增量数据抽取是指在进行ETL操作时,只抽取源数据中发生改变的地方,没有发生变化的以抽取数据不进行重复的抽取,增量抽取与完全抽取及更新相对。


1、增量抽取特点

1.只抽取发生变化的地方;

2.相对于完全抽取更快捷,处理量减少;

3.采用增量抽取需要在与数据装载时的更新策略相对应;

当源系统数据量浩大,或需要在相对实时的情况下装载业务系统的数据时,完全抽取几乎不太可能,此时应该考虑合理的增量抽取策略。

2、增量抽取策略

增量抽取的策略在Bill Inmon的经典著作《Building the Data Warehouse》里已有所提及,主要包括以下方法:

  • 时间戳:扫描数据记录的更改时间戳,比较时间戳以确定被更新的数据;
  • 增量文件:扫描应用程序在更改数据时所纪录的数据变化增量文件,增量文件仅仅数据所发生的变化;
  • 审计文件和日志文件:审计文件和日志文件本质上和增量文件一样,审计文件和日志文件的目的是为了实现恢复机制,因此它们记载了各种操作的影响;
  • 修改应用程序代码:修改应用代码以产生时间戳、增量文件、日志等信息,或直接推送更新内容,达到增量更新目标数据的目的;
  • 快照比较:在每次抽取前首先对源数据做快照,并将该快照与上次抽取时建立快照相互比较,以确定源数据所作的更改,并抽取相应更改内容;一般需要逐表逐记录进行比较。
3、增量抽取方法

1)时间戳及增量文件

在处理增量抽取时,时间戳法和增量文件法是相对简单高效的方法,如果源系统的数据记录中已经提供了这些特征数据,则应优先采用相应增量抽取策略。

2)触发器

当源系统的数据是基于数据库存储时,可在源数据库管理系统中设置触发器侦听源数据的增删改事件以监控数据的增量变化,并进一步采取措施将增量变化反映到目标数据中。

具体措施有:

A. 使用配套DTS工具直接捕获数据变化事件并实时刷新目标数据;
B. 与时间戳法或增量文件法结合,在数据变化事件处理逻辑中设置时间戳或产生增量记录;
C. 在捕获到数据变化时间时将增量数据追加到stage table中;

设置触发器的方法逻辑复杂并且会影响源数据库系统的效率。

3)HASH法

快照比较法的改进版本。

在每次抽取时,针对需要侦测变化的内容在Stage区或目标区做快照,快照的方式不是简单的保留快照期的数据记录,而是将其分组(比如按表分组),对每一组数据只记录改组中每一条记录的所有列组合的Hash值;下次快照时,提取源数据,计算各组Hash值,并根据键值与对应Hash值比较,如果不相等则对应记录的某列数据发生了变化。

采用适当的编码方式,hash值中还可以记录较为详细的信息,比如各记录的列及数据变化的操作类型(增、改等)。对于删除的处理则依赖于键值。

4)源数据库系统增量机制CDC(change data capture)

A.SQLServer

为了克服使用时间戳及触发器的弊端,SQLServer2008中提供了更改跟踪变更数据捕获两种跟踪数据变化的方法,这两种方法都是基于日志文件的增量策略。

其中,变更数据捕获通过获取进行 DML 更改的方面和更改的实际数据,记录历史更改信息;而更改跟踪则只是捕获更改了表行这一事实,但不捕获更改的数据。

详细信息可进一步参考如下资源:

http://msdn.microsoft.com/en-us/library/bb933994.aspx

http://msdn.microsoft.com/zh-cn/library/cc280519.aspx

http://msdn.microsoft.com/zh-cn/library/bb895315.aspx
http://msdn.microsoft.com/zh-cn/library/bb933994.aspx
http://blog.csdn.net/zjcxc/archive/2009/03/10/3975644.aspx
http://blog.csdn.net/zjcxc/archive/2009/02/23/3924959.aspx

B. Oracle

1)  物化日志结合物化视图的方法(Materialized)

在源系统中建立物化日志记录增删改等数据变更操作;在目标系统中建立物化视图将物化日志转变为变更数据。

2)CDC

Oracle 9i之后提供CDC技术,以现成的管理框架及较小运行效率代价支持对变化数据的捕获,除了可用来支持增量ETL之外,还可以用来支持其他应用,比如实时数据获取并图形化应用。

Oracle CDC包括两种方式:

A. 同步变化数据捕获(底层基于触发器);
B. 异步变化数据捕获(基于审计日志、流机制);

详细信息可进一步参考如下资源:

http://www.nyoug.org/Presentations/SIG/LI/lisigcdc.ppt

http://download.oracle.com/docs/cd/B28359_01/server.111/b28313/cdc.htm#DWHSG016

http://www.beyeblogs.com/milinddwbi/


楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-20 02:19

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表