Postgres / Kafka-更改数据捕获(CDC)

时间:2020-02-03 15:12:39

标签: postgresql

我想将对配置表的更改传递给Kafka。

我有一个包含100,000行的Postgres表,通常一天仅更改100-500行,但是在极少数情况下,一次交易中所有10万行都可以更改。该表包含一个ID字段和一个大约10,000个字符长的JSON字段。

我想将完整的JSON字符串写到Kafka以便更改行。我读到有3个主要选项

1)可以读取WAL并写入Kafka的实用程序

2)将写入Kafka的触发器

3)定期执行SQL作业,该作业将检查每行的时间戳,并将自上次检查以来已更改的行写入Kafka,并将时间戳记在“已处理”字段中

A)选项1的缺点是我不控制Kafka消息的格式+如果更新时我没有与Kafka的连接该怎么办(我不希望仅因为Kafka而回滚)

B)选项2的缺点是放慢插入和更新的速度

C)选项3的缺点是,即使间隔10到20秒没有变化,我也需要不断检查是否有变化。

您会推荐哪个选项?

当前,我倾向于选择选项3,但需要找到解决方案

1)如何“唤醒”并搜索已修改的行,而不是每隔10到20秒不断检查和比较表中所有行的日期。

2)如何有效地将JSON复制到Kafka并将时间戳记在“已处理”列中?我可以在一个事务中完成它而不必长时间锁定整个表吗?

谢谢

0 个答案:

没有答案