Oralce增量同步方案系列2-Kettle增量模型
Oralce增量同步方案系列1-方案选型
雄赳赳气昂昂,打仗一定是军未动粮草先行。咱们这个也得有粮草,提起精神挽起袖子一起开始吧。
1.思考题
首先咱们抛开ETL工具,自己想想如果咱们自己做该怎么做这件事情?
- 从源获取同步表TABLE_A数据
- 从目标库同步表TABLE_A获取数据
- 拿到两张表的数据判断增删改查
- 将判断结果写入到目标库中
看上去貌似也不难吗?工作量也不大,楼主想说的亲们你用java自己写要多久完成?一张表多久?假设有1000张表要同步呢?
有木有现成的组件供我们使用,提高开发效率呢?最好有可视化界面,拖拖拽拽一个功能完成?
2.Kettle
环境篇
- JDK1.8
- kettle7.1直接官网上面下载
-
Oracle11GR2两个节点数据库(可以不同的实例)
数据库安装完毕后将某个用户下的数据表导出一份做实验;
基于本篇刚开始的思考题,kettle中给我们提供了组件如下:
- 我们需要两个表输入控件,从源库以及目标库中获取数据,这里需要注意后面的orderby 表的主键字段必须指定,否则数据流转到第二步骤比对会错误(基于下标比对记录)
通过合并记录组件,依赖于关键字ID增加一个标志位用来判断记录的CRUD
switch/case用于判断将数据流转到那一步
删除
删除或者更新
最终模型如下
3.总结
有了工具是不是感觉效率高了很多?
咱们这个模型是否能经受住大数据量的冲击?例如1100w条数据的增量更新这抗的住吗?
如果我想在加一张表B怎么办?
这个转换只能执行一次我要定时同步怎么做?
好吧抛个引子咱们一步步来解决问题,请继续关注楼主的后续系列教程
Spring+Quarz+Kettle调度模型