获取数据库增量数据的几种方式

原创 2012年03月30日 10:20:58
a.触发器:在要抽取的表上建立需要的触发器,一般要建立插入、修改、删除三个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个临时表,抽取线程从临时表中抽取数据,临时表中抽取过的数据被标记或删除。触发器方式的优点是数据抽取的性能较高,缺点是要求业务表建立触发器,对业务系统有一定的影响。 

        b.时间戳:它是一种基于快照比较的变化数据捕获方式,在源表上增加一个时间戳字段,系统中更新修改表数据的时候,同时修改时间戳字段的值。当进行数据抽取时,通过比较系统时间与时间戳字段的值来决定抽取哪些数据。有的数据库的时间戳支持自动更新,即表的其它字段的数据发生改变时,自动更新时间戳字段的值。有的数据库不支持时间戳的自动更新,这就要求业务系统在更新业务数据时,手工更新时间戳字段。同触发器方式一样,时间戳方式的性能也比较好,数据抽取相对清楚简单,但对业务系统也有很大的倾入性(加入额外的时间戳字段),特别是对不支持时间戳的自动更新的数据库,还要求业务系统进行额外的更新时间戳操作。另外,无法捕获对时间戳以前数据的delete和update操作,在数据准确性上受到了一定的限制。 

    c.全表比对:典型的全表比对的方式是采用MD5校验码。ETL工具事先为要抽取的表建立一个结构类似的MD5临时表,该临时表记录源表主键以及根据所有字段的数据计算出来的MD5校验码。每次进行数据抽取时,对源表和MD5临时表进行MD5校验码的比对,从而决定源表中的数据是新增、修改还是删除,同时更新MD5校验码。MD5方式的优点是对源系统的倾入性较小(仅需要建立一个MD5临时表),但缺点也是显而易见的,与触发器和时间戳方式中的主动通知不同,MD5方式是被动的进行全表数据的比对,性能较差。当表中没有主键或唯一列且含有重复记录时,MD5方式的准确性较差。 


d.日志对比:通过分析数据库自身的日志来判断变化的数据。

pentaho kettle 实现数据库间增量同步

今天刚接触 etl工具, 公司要求要实现一个 数据库同步任务,要求从两个表中同步数据。所以写下这篇博客记录一下。 思路:     常用的同步机制 就是  在A表中添加 时间戳字段  命名为 ...
  • zhangweicsdn
  • zhangweicsdn
  • 2016年03月29日 17:57
  • 7838

如何增量导入MYSQL数据库中的数据

  • qq_20261343
  • qq_20261343
  • 2016年02月20日 18:49
  • 2433

kettle入门(七) 之kettle增量方案(一)全量比对取增量-根据唯一标示

kettle的转换ktr里有一个图元叫做合并记录可以把数据记录分为源和目的根据唯一标示 进行全量比对,...
  • xiaohai798
  • xiaohai798
  • 2015年08月01日 14:57
  • 29025

app后端设计(10)--数据增量更新

在新浪微博的app中,从别的页面进入主页,在没有网络的情况下,首页中的已经收到的微博还是能显示的,这显然是把相关的数据存储在app本地。     使用数据的app本地存储,能减少网络的流量,同时极大提...
  • newjueqi
  • newjueqi
  • 2014年02月12日 12:54
  • 20327

用户实时行为数据采集

用户实时行为数据采集如下:   1.web、wap通过埋点实时发送用户行为数据至后端server, app直接调用http接口,server通过logback直接输出日志文件  2.flum...
  • u011955252
  • u011955252
  • 2016年11月30日 19:51
  • 1374

oracle 增量抽取数据存储过程

抽取日志表 create table ETL_LOG_DRAGON_ALERT ( tablename VARCHAR2(50), etlbegintime DATE, etlen...
  • liuao107329
  • liuao107329
  • 2017年01月17日 20:03
  • 1493

MySQL中的INSERT查询后获取自动增量值

很多时候,我们有一定的要求,同时更新这两个表。比方说,我们有两个的表CUSTOMER_DETAILS和CUSTOMER_ADDRESS。一些细节,如地址同时增加了在CUSTOMER_DETAILS行,...
  • JiaLiSOFTWARE
  • JiaLiSOFTWARE
  • 2012年08月31日 16:27
  • 1939

sql基本查询———增量

(前面两部分来自http://blog.itpub.net/21251711/viewspace-1102677/) --查询Oracle正在执行的sql语句及执行该语句的用户 SELEC...
  • fengzhongsanfaxielin
  • fengzhongsanfaxielin
  • 2016年01月12日 14:17
  • 1473

【Apache Flume系列】Flume-ng案例分享及source编码格式问题

流式分析案例场景分析;以及相关的编码处理
  • WeiJonathan
  • WeiJonathan
  • 2014年12月09日 13:51
  • 7116

flume-ng-sql-source实现oracle增量数据读取

一、下载编译flume-ng-sql-source 下载地址:https://github.com/keedio/flume-ng-sql-source.git ,安装说明文档编译和拷贝jar包 ...
  • chongxin1
  • chongxin1
  • 2017年09月11日 20:49
  • 922
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:获取数据库增量数据的几种方式
举报原因:
原因补充:

(最多只允许输入30个字)