在ETL过程中,如果遇到源库物理删除一条记录,在本库同步做逻辑删除。这个除了写SQL通过主键全表比对外,大家可有通过kettle解决的?

0
已邀请:
3

BAO胖子 - 15年BI经验,涉足电力,快消品,医药,信息服务等行业的BI老兵。 2015-09-01 回答

我没用过KETTLE,看看能不能给你点思路:
1. 源系统相关表建触发器,但这个一般不太现实,不过不管怎样也是一种解决方案
2. 用change data capture这类软件去源系统捕获日志,但这种软件要花钱购买而且价格不菲,此外还是需要安装在源系统上,很多系统管理员会非常不爽这种事情。且,源系统的数据变化要走日志,如果不走归档日志或者用truncate以及load加载数据关闭日志的模式,你还是无法捕获到这些数据
3. 全表比对。这个不要害怕,如果上游系统的数据量低于10W,全表比对没有你想象的那么性能低下。这里面有个tips,就是用checksum code,这种类似CRC码的模式对源表多Column进行预先计算,而在目标表中也添加此column,而全表比对时只需要比对主键以及checksum code, 10W行数据的话速度也是可以接受的。全表比对在Datastage中有CDC的控件可以帮助你完成,非常简单,我猜kettle也有类似的东西,如果没有就SQL outer join,也不复杂。
1

牟瑞 - 大数据 Hadoop 讲师 Hadoop入门课程地址:http://www.hellobi.com/course/39 有架构师,技术总监,CTO的职位请联系我! 2015-08-27 回答

如果你有足够的权限的话,可以开启数据监控服务,对源数据库做数据的监控。
SQLServer有CDC,MySQL可以监控bin log.然后通过处理监控到的数据日志表来避免全表扫描,加快处理速度。
0

子建 - Kettle讲师、顾问、数据仓库架构 2015-08-18 回答

用kettle做,也是用SQL的思路,只是图形化而已

要回复问题请先登录注册