gpt4 book ai didi

apache-kafka - 使用 Kafka 最佳实践的 Oracle 变更数据捕获

转载 作者:行者123 更新时间:2023-12-03 17:43:32 24 4
gpt4 key购买 nike

我正在做一个项目,我们需要将实时更新从 Oracle 流式传输到一系列系统(Cassandra、Hadoop、实时处理等)。我们计划使用 Golden Gate 从 Oracle 捕获更改,将它们写入 Kafka,然后让不同的目标系统从 Kafka 读取事件。
有很多设计决策需要做出:

更新时要写入 Kafka 的数据是什么?

GoldenGate 以记录 ID 和更新字段的形式发出更新。这些更改可以通过以下三种方式之一写入 Kafka:

  • 完整行:对于每个字段更改,发出完整行。这给出了“对象”的完整表示,但可能需要进行查询以获取完整行。
  • 仅更新字段:最简单,但使用起来有点奇怪,因为您永远无法轻松访问对象的完整表示。如何将其写入 Hadoop?
  • 事件:可能是最干净的格式(并且最适合 Kafka),但是将 db 字段更新转换为事件需要大量工作。

  • 在哪里执行数据转换和清理?

    Oracle DB 中的模式是由第 3 方 CRM 工具生成的,因此不是很容易使用 - 有奇怪的字段名称、转换表等。可以在 (a) 源系统之一中清理这些数据,( b) Kafka 使用流处理,(c) 每个目标系统。

    如何保证并行消费者的有序处理?

    Kafka 允许每个消费者读取不同的分区,其中每个分区都保证是有序的。需要以确保每个分区中的消息完全独立的方式选择主题和分区。如果我们为每个表选择一个主题,并根据 record_id 将记录散列到分区,这在大多数情况下应该有效。但是,当添加新的子对象时会发生什么?我们需要确保它在父级使用它的 foreign_id 之前得到处理

    最佳答案

    我实现的一种解决方案是仅将记录 ID 发布到 Kafka 和消费者中,使用对原始数据库的查找来获取完整记录。我认为在问题中描述的场景中,您可能希望使用 CRM 工具 API 来查找该特定记录,而不是对代码中的记录查找进行逆向工程。
    您最终是如何实现该解决方案的?

    关于apache-kafka - 使用 Kafka 最佳实践的 Oracle 变更数据捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30219868/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com