繁体   English   中英

如果我们通过Apache Kafka设置RDBMS复制,FK(外键)是否会出现问题?

[英]Do FKs(foreign keys) present a problem if we set up RDBMS replication through Apache Kafka?

我想知道Apache Kafka是否可以用于具有关系数据库的容错环境,该关系数据库可以通过实例复制并通过kafka进行复制。

在此处输入图片说明 我是Kafka的新手,互联网上的许多消息人士说,使用Kafka Connect可以轻松完成此操作,但是该问题有很多方面,我从来没有找到任何解释:

我们如何保证复制过程中不会违反任何外键? 我已经看到连接器将数据更改发送到数据库中每个表的单独的kafka主题,但是我们如何以创建它们的相同顺序读取它们,以便在复制期间不违反FK? 即使我们将所有更改放在一个主题中,也可能对该主题进行了分区,然后我们将如何以相同的顺序阅读它们? 这是否意味着我们只能将单个主题用于单个分区? 或者,也许我们应该删除目标数据库中的所有FK约束,而不关心它们的完整性?

我确实认为为只读目的而建立关系数据库是不合适的,但是为此,有许多传统客户无法承担一次全部重写的负担。

我目前在一个在RDBMS数据库上使用CDC(更改数据捕获)的项目中。

以我为例,CDC为数据库中的一个表写入一个主题,并且分区数实际上为1(以确保所有消息按顺序排列)。

不幸的是,在Kafka中不能保证FK约束的完整性。 我的意思是,如果完整性在数据库中有效,那么它将在Kafka上使用,但是没有验证系统可以检查FK约束(您可以在非Kafka Streams字段中加入不是FK的字段)。

使用Kafka Stream,您当然可以执行“联接”操作,但是您必须知道源数据库上的FK约束才能执行一些有效的业务代码。

编辑:当然,您可以使用CDC编写的每个主题,并使用更多分区将其生成另一个主题,然后您可以根据需要重新分配数据(甚至使用新的架构)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM