没有CDC的可能的Kafka流?

时间:2019-05-21 20:16:40

标签: database apache-kafka apache-kafka-connect cdc

我正在工作一个项目。我很好奇是否可以在没有CDC的数据库上实现Kafka。 (CDC并非一直都打开) 找不到在线讨论其他选项的资源。是否可以将数据直接输入到kafka?例如,编写C#代码以读取数据库,然后插入充当连接器的Kafka?

2 个答案:

答案 0 :(得分:2)

注意这一点,它解释了所有问题:-)

https://www.confluent.io/kafka-summit-ny19/no-more-silos-integrating-db-into-apache-kafka

tl; dr:您可以编写一些代码,但是问题实际上应该您编写一些代码:)几乎可以肯定。您可以使用“适当的” CDC来从事务日志中获取事件,也可以将“基于查询的CDC”与JDBC Source连接器一起使用来轮询新记录。上面的讨论中讨论了每种方法的优缺点。

答案 1 :(得分:1)

可以,但不应该。将CDC视为另一种软件,当然您可以编写类似的软件。您需要处理许多棘手的事情:

  • 您应该从数据库日志中读取数据(MySQL中的binlog,MongoDB中的oplog ...),因此您必须了解要导出的每个数据库供应商的日志格式。
  • 维护持久性数据。假设您将一次交易中的数据列表写入Kafka。当您在中间步骤进行书写并且发生错误时会发生什么?您必须重试。否则,系统中从Kafka读取数据的另一部分将看到部分数据。 ...

背后有很多原因,这仅仅是理论上的解决方案。这是来自great blog的一个人,他在分布式数据库方面经验非常丰富,讨论过如何将自定义CDC写入Postgres或任何其他数据库供应商。