代码之家  ›  专栏  ›  技术社区  ›  Mikser

如果我们通过apachekafka设置RDBMS复制,FKs(外键)会出现问题吗?

  •  0
  • Mikser  · 技术社区  · 7 年前

    我想知道apachekafka是否可以用于具有关系数据库(一个源和多个源,通过Kafka实例复制)的容错环境。

    enter image description here 我对卡夫卡很陌生,互联网上的很多消息都说,使用卡夫卡连接可以很容易地做到这一点,但有几个方面的问题我从来没有找到任何解释:

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

    我确实觉得用一个只读的关系数据库是不合适的,但是有很多遗留的客户机,我们不能一次重写。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Saïd Bouras    7 年前

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

    在我的例子中,CDC为数据库中的一个表写入一个主题,分区的数量实际上是1(以确保所有消息都是有序的)。

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

    当然,您可以使用CDC编写的每一个主题,并将其生成一个具有更多分区的其他主题,然后按照您的需要重新分发数据(甚至使用一个新的模式)。

    推荐文章