Apache kafka 使用Kafka最佳做法捕获Oracle更改数据
我正在从事一个项目,我们需要将Oracle的实时更新流式传输到一系列系统(Cassandra、Hadoop、实时处理等)。我们计划使用金门从Oracle捕获更改,将其写入Kafka,然后让不同的目标系统从Kafka读取事件。 有许多设计决策需要做出: 更新时要将哪些数据写入卡夫卡? GoldenGate以记录ID和更新字段的形式发出更新。这些更改可以通过以下三种方式之一写入卡夫卡:Apache kafka 使用Kafka最佳做法捕获Oracle更改数据,apache-kafka,change-data-capture,oracle-golden-gate,Apache Kafka,Change Data Capture,Oracle Golden Gate,我正在从事一个项目,我们需要将Oracle的实时更新流式传输到一系列系统(Cassandra、Hadoop、实时处理等)。我们计划使用金门从Oracle捕获更改,将其写入Kafka,然后让不同的目标系统从Kafka读取事件。 有许多设计决策需要做出: 更新时要将哪些数据写入卡夫卡? GoldenGate以记录ID和更新字段的形式发出更新。这些更改可以通过以下三种方式之一写入卡夫卡: 全行:对于每个字段更改,发出全行。这提供了“对象”的完整表示,但可能需要进行查询才能获得完整的行 仅更新字段:最
- 全行:对于每个字段更改,发出全行。这提供了“对象”的完整表示,但可能需要进行查询才能获得完整的行李>
- 仅更新字段:最简单,但使用起来有点奇怪,因为您从来没有容易访问的对象的完整表示。如何将其写入Hadoop李>
- 事件:可能是最干净的格式(也最适合卡夫卡),但将db字段更新转换为事件需要大量工作李>
Kafka允许每个使用者读取不同的分区,其中每个分区都保证有序。主题和分区的选取方式必须保证每个分区中的消息完全独立。如果我们为每个表选择一个主题,并根据记录id将记录散列到分区中,那么大多数情况下都应该是这样。但是,添加新的子对象时会发生什么情况?我们需要确保在父级使用其外来id之前对其进行处理。我实施的一个解决方案是仅将记录id发布到Kafka中,并在使用者中使用对原始数据库的查找来获取完整记录。我认为在问题中描述的场景中,您可能希望使用CRM工具API查找特定记录,而不是在代码中对记录查找进行反向工程。 您最终是如何实施该解决方案的