如何在greenplum中实现CDC?

How do implement CDC in greenplum?

我们有少量 gpdb,关键 hadoop.We 正在尝试使用 gpdb 进行 CDC。

我们正在使用 SQL 服务器 2012 作为外部数据源。我们从客户端端只读访问 SQL SERVER。因此,SQL 服务器不允许为数据集成工具捕获 CDC 机制。

我们必须在 greenplum 中实施 CDC。这样它每次只带来更改的行而不是 Full Load。这也会给 SQL 服务器增加批处理作业的每个计划的负担。

我们尝试关注 SQL

这是一个完整的 CDC 查询,它决定了每一行的操作

select * from (select *,case when ( a.ID is null) then 'I'
when ( a.ID is not null and  a.SalesOrder = a.SalesOrder and  a.SalesOrderLine = a.SalesOrderLine) then 'N'
when ( a.ID is not null and ( a.SalesOrder != a.SalesOrder or  a.SalesOrderLine != a.SalesOrderLine)) then 'U'
else 'X'
end as increment_action from tablename)

我们也试着用Link来理解:

同样,我试过大约 12 个来自 Talend 的 link。但它要求 pub/sub 机制,只有在 SQL 服务器 CDC 功能开启时才支持。 因此无法从 talend 的方式做到这一点。

https://www.pivotalguru.com/?page_id=35

有什么方法可以使用 SQL 在 gpdb 中实现增量加载而不是完全加载。 和 有什么方法可以将 SQL SERVER DDL 语法转换成 Greenplum。?

是否有在 gpdb 中实施 CDC 的分步文档或指南?

如有任何帮助,我们将不胜感激?

外包商做 CDC,它是开源的。您可以使用 Outsourcer 或查看代码以查看它是如何完成的并使用您自己的代码重新创建它。

Outsourcer Replication

Source Code