ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 增量数据抽取的策略及方法介绍

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

原创 Linux操作系统 作者:ceo_lxy 时间:2011-03-10 09:18:29 0 删除 编辑

增量数据抽取是指在进行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. 异步变化数据捕获(基于审计日志、流机制);

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12122734/viewspace-688884/,如需转载,请注明出处,否则将追究法律责任。

上一篇: QQ被盗
请登录后发表评论 登录
全部评论

注册时间:2008-06-02

  • 博文量
    519
  • 访问量
    495301