1. 概述
1.1 应用场景
用户在定时任务进行数据同步时,如果源数据库同时有增删改变化,且没有时间戳,可以直接使用数据比对,但是如果数据量很大,想要提高同步效率,就可以使用本文的方案进行数据同步。
1.2 实现思路
来源表制造比对字段「md5」,目标表也新增「md5」字段,并使用数据比对进行增删改变化标识,最终写入数据表中。
主键相同,MD5不同,则更新;
主键不同,来源有但目标无,则新增;
主键不同,来源无但目标有,则删除。
说明:增加 MD5 校验列,直接作为列存储比对效率较高。
demo 示例详情请参见:https://demo.finedatalink.com/ 增删改数据同步至目标表(MD5校验)
2. 操作步骤
1)新建定时任务后,选择「数据转换」节点,进入编辑界面,新增一个 DB输入算子,取出来源表数据,同时新增一个 MD5 字段,方便后续作为比对字段,如下图所示:
SELECT
*,
MD5(CONCAT(order_id,order_business_date,order_status,product_name,user_name,order_quantity,order_price)) AS order_md5,
NOW() AS etl_time
FROM `demotest`.`F_ORDER_NOTIMESTAMP_MD5_FROM`
得到如下结果:
2)新增一个 DB输入算子,取出目标表数据,目标表需要另外增加一个MD5 字段,如下图所示:
注:如果原先没有目标表,则需要手动在目标数据库创建一个,除了业务字段还需要新建一个MD5 字段,方便后续作为比对字段。
3)使用数据比对算子,比对来源表和目标表,设置逻辑主键为 order_id,比对字段为 order_md5,如下图所示:
4)使用DB输出算子,将比对结果写入目标表,如下图所示:
5)设置写入方式和逻辑主键,如下图所示:
运行任务后即可看到目标表同步了来源表的变化。