修复:多个数据同步节点并行执行时,如果使用事务输出至Oracle,并发写入同一张表时,执写入数据无异常。
Oracle支持主键冲突策略
支持标准的并发读取功能
支持 GBase8a 数据库
Greenplum 使用事务输出算子时,如果去向表有主键且写入方式为冲突覆盖,并行装载阶段速度会大幅上升
1)用户在定时同步向目标库写入数据时,希望可以将单次当前来源端的所有数据,放到同一个事务内装载:
要么都成功,正常提交事务,更改目标表数据;
要么都失败,事务回滚,对目标表不产生影响。
2)在定时任务同步完成后,可以将当次写入的统计数据写到自定义的表中,以方便后续校验数据。
定时任务写入数据库时支持失败回滚,即任务执行失败后不会对目标表产生影响。
定时任务写入数据库时支持前置处理和后置处理,并支持将这些处理逻辑与核心写入操作一起封装为事务,一同支持失败回滚。
使用该算子需要增加 FineDB 配置,在 fine_conf_entity 数据表中增加配置。
请联系技术支持操作,技术支持联系方式:前往「服务」,选择「在线支持」、电话「400-811-8890」。
直接将数据写入目标表(4.1.5.2 开始支持)
清空目标表,再写入数据(4.1.5.2 开始支持)
基于标识字段,追加/更新/删除数据(4.1.10.2 开始支持)
已配置物理主键:直接使用物理主键
未配置物理主键:支持选择字段作为逻辑主键(4.1.10.2 开始支持)
主键相同,覆盖目标表的数据(4.1.10.2 开始支持)
主键相同,忽略目标表的数据(不支持)
主键相同,节点运行报错
直接将数据写入目标表
清空目标表,再写入数据
未配置物理主键:支持选择字段作为逻辑主键
主键相同,覆盖目标表的数据
Gbase8a
(4.1.10.2 开始支持)
基于标识字段,追加/更新/删除数据
当前支持在「数据同步-写入方式」和「数据转换-DB表输出(事务)」算子中使用。
若设置直接将数据写入目标表,在设置主键冲突策略中,支持设置「主键相同,节点运行报错」和「主键相同,覆盖目标表数据」。
事务控制配置项如下所示:
支持使用的参数:
4.1.10.2 以及之后的版本,若来源端选择了并行取数(3.2.4节),去向端选择事务输出,默认进行并行取数。
例如用户需要将数据同步到 Oracle 时支持失败回滚,并需要在同步成功时,记录本次装载的最大时间到指定的数据表中,以便进行增量同步或者数据校验。
新增定时任务,在数据转换节点中新增 DB 表输入算子,设置数据来源,如下图所示:
点击数据预览即可看到读取数据,如下图所示:
新增 DB表输出(事务) 算子,设置输出数据库的相关信息,如下图所示:
设置写入方式、主键并在事务控制下设置前置 SQL 和后置 SQL,如下图所示:
由于示例想要在同步成功时,记录本次装载的最大时间到指定的数据表中,因此设置后置 SQL:
INSERT INTO "ANONYMOUS"."duandian"(TIME) SELECT MAX(合同签约时间) AS TIME FROM @temp_tbl_nm_full;
注1:SQL 含义为将本次执行数据表的最大「合同签约时间」从中间表中取出,并写入至指定的数据表「duandian」的 TIME 字段中。
注2:中间表与目标表字段相同,作为写入数据回滚的中间存放表,此处@temp_tbl_nm_full 为引用中间表。
运行任务后,若执行成功,即可看到将指定数据同步写入至目标数据库,如下图所示:
同时最大合同签约时间写入指定的 duandian 表中,如下图所示:
若执行失败,则该批量数据均不会被写入指定数据库,实现失败回滚。
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙