变化数据随时都可能生成,因此需要不断的将新的变化同步过去。有两种方法可以完成这个任务。

  • 第一种办法可以通过计划实现。例如创建一个计划,每半个小时执行一次同步接口。这样可以每半个小时将变化数据同步到目标。此法需要注意计划的重复间隔,要保证在重复调用之前,上一次调用已经完成,一般可以用于定期同步的需求。
  • 第二种办法是在创建一个包,利用ODI 提供的 CDC 相关的工具轮询日记,一旦有了变化就调用同步接口。此法可以满足实时性较高的需求。

1、创建Package

Designer->Projects->“项目名称”->First Folder->Packages,右击选择“New Package”,定义个名称,如下图:

2、设置关系图

2.1 OdiWaitForLogData

在关系图中添加用于 CDC 的工具: OdiWaitForLogData,属性如下图所示: 属性的配置将每1秒钟轮询WEB_CUSTOMER的日记表,直到发现1条变化记录。

2.2 添加映射

拖动映射到右边的关系图,属性如下图所示:

2.2 OdiSleep

在关系图中添加用于 CDC 的工具: OdiSleep,属性如下: 等待1秒,继续轮询。

3、执行包

执行包操作后,会发现这个包会一直在执行,并处于 OdiWaiteForLogData 这一步,如下图: 源表插入数据,SQL如下图: 在Operator中会发现已完成数据同步,并且进入下一个轮询: 当然,如果在源表删除或者更新一条数据,目标表也会同步删除或更新的。