ETL系统增量抽取方案

一、触发器

在被抽取的源表上建立插入、修改、删除三种触发器,当源表中数据发生变化,相应的触发器将变化的数据写入一个增量日志表,日志表只存储源表名称、更新关键字值和操作类型(insert,update,delete)。ETL先从日志表取源表名称和关键字值,再去源表抽取完整记录,根据操作类型对目标表做处理。

二、时间戳

通过比较系统时间与源表时间戳字段的值来决定抽取哪些数据,源表需存在时间戳字段,并且业务系统在更新时要更新时间戳。

但是对delete操作无法捕获,数据准确性受影响。

注:可在业务层面避免delete操作,采取对数据增加删除标识字段的方法来处理。

三、全表删除插入方式

每次抽取前,先删除目标表数据,全部抽取全部加载,缺点是效率很差。

四、全表比对方式

在抽取时,ETL进程逐条比较源表和目标表数据,将变化的记录读取出来。

优化:MD5比较

在源数据库建立一张结构和源表类似的MD5临时表,记录源表主键和根据所有字段计算出的MD5校验码。每次抽取时,对源表和MD5临时表进行MD5比对,性能很差。

五、系统日志分析

分析数据库本身的日志,判断变化的数据。

1.oracle提供了日志专用程序包LogMiner,可以简化工作;

2.CDC方式,改变数据捕获,可分为同步CDC和异步CDC;

3.闪回查询方式,oracle允许用户查询过去某个时刻的数据库状态,利用当前状态和上次抽取时状态对比,快速得出数据记录变化状况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值