历史版本4 :增删改数据同步(非数据比对且有时间戳) 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 问题描述

用户在定时任务进行数据同步时,如果源数据库同时有增删改变化时,可以使用数据比对,但是如果数据量很大,想要更好的提高同步效率,就可以使用本文的方案进行数据同步。

1.2 实现思路

1.2.1 来源表有时间戳

1)同步删除数据:通过比对主键,删除来源表中被物理删除但是目标表中还存在的数据。

2)使用时间戳同步新增和修改的数据:

获取上次同步的时候,来源库的最大时间戳,并设置为参数 cur_timestamp。

获取这次同步的时候,来源库的最大时间戳,并设置为参数 tmp_timestamp。

获取来源表相对目标表的增量数据,即 order_timestamp(来源表业务时间戳)>cur_timestamp 的数据,并将增量数据同步到目标表。

3)更新时间表同步时间戳和执行记录

1.2.2 来源表无时间戳



2. 来源表有时间戳且有增删改编辑

2.1 前提条件

创建执行记录数据表,便于获取每次同步的时间戳,如下图所示:

注:两个时间字段初始值可以设置为一个比较早的时间,早于业务数据时间戳,以便初次同步全量数据。

2.2 同步来源表中删除的数据

通过比对主键,删除来源表中被物理删除但是目标表中还存在的数据。

创建定时任务后,使用「数据转换」节点,进入编辑界面,使用DB表输入功能,获取来源表中主键 order_id_from,如下图所示:

SELECT order_id AS order_id_from
FROM `demotest`.`F_ORDER_TIMESTAMP_FROM`

使用DB输出算子,获取目标数据表的主键,如下图所示:

SELECT order_id AS order_id_target
FROM `demotest`.`F_ORDER_TIMESTAMP_TARGET`

使用「数据比对」算子,比对来源表和目标表的 order_id 主键,获取来源表删除但是目标表还存在的数据,如下图所示:

查看比对结果即可看到来源端删除的数据 1002 被标识出来,如下图所示:

使用DB输出算子将比对结果源表删除的数据从目标表中删除,设置写入方式为「追加写入数据」,逻辑主键选择「order_id」