阅读数:

kettle实现异构数据同步(四)

0

说明

今天谈谈kettle(v7.2)数据同步之增量更新,在实际的业务中经常会遇到增量更新的问题,一般有两种做法:
1、先全量删除、后全量插入
优点:简单,快速;
缺点:修改的增量数据体现不出来,数据体积庞大
2、当前数据和历史数据进行一一对比
优点:增量数据体积小,更符合业务场景要求
缺点:计算成本高、耗费资源

总体实现

本例使用的mysql数据库,数据库连接这里不再赘述,参见上一篇
说明用到的组件:
1、输入:表
2、合并记录:用来比较当前和历史数据,生成比较标记,kettle预设的四种状态:
“identical” 标识没变化
“changed” 有更新
”deleted“ 已删除
“new”新增
3、switch/case:选择分支
4、空操作
5、获取系统信息
6、插入、更新
7、删除
总体效果图
kettle41

详细说明

1、输入
today指当天的数据或者最新的数据;yestoday指历史数据;需要说明的是today 和yestoday的关键业务字断必须一致、且均需要按照对比字断进行order by,否则可能会出现意想不到的
情况;
2、合并记录
kettle42
比如:
today yestoday result
a | b a | b a | b | c
1 | 11 1 | 11 1 | 11 |identical
2 | 22 2 | 222 2 | 222|changed
3 | 33 4 | 44 3 | 33 |deleted
4 | 44 |new

3、switch/case
kettle43 4、空操作
如果第三步flag为 identical 则什么也不干
5、获取系统信息
获取当前日期,更新业务时间字段
kettle44 6、插入、更新
根据关键字段比较,new为插入,changed为更新
7、删除
插入、更新、删除 ,需要注意的是比较的关键字断值不能为null,否则查询比较会有问题

运行

50w+数据,对比后增量更新,30s-40s


^-^欢迎回复交流^-^


0
赏点咖啡钱^.^