Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 使用Kafka最佳做法捕获Oracle更改数据_Apache Kafka_Change Data Capture_Oracle Golden Gate - Fatal编程技术网

Apache kafka 使用Kafka最佳做法捕获Oracle更改数据

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和更新字段的形式发出更新。这些更改可以通过以下三种方式之一写入卡夫卡: 全行:对于每个字段更改,发出全行。这提供了“对象”的完整表示,但可能需要进行查询才能获得完整的行 仅更新字段:最

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

更新时要将哪些数据写入卡夫卡?

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

  • 全行:对于每个字段更改,发出全行。这提供了“对象”的完整表示,但可能需要进行查询才能获得完整的行
  • 仅更新字段:最简单,但使用起来有点奇怪,因为您从来没有容易访问的对象的完整表示。如何将其写入Hadoop
  • 事件:可能是最干净的格式(也最适合卡夫卡),但将db字段更新转换为事件需要大量工作
在哪里执行数据转换和清理?

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

如何确保并行消费者的订单处理?


Kafka允许每个使用者读取不同的分区,其中每个分区都保证有序。主题和分区的选取方式必须保证每个分区中的消息完全独立。如果我们为每个表选择一个主题,并根据记录id将记录散列到分区中,那么大多数情况下都应该是这样。但是,添加新的子对象时会发生什么情况?我们需要确保在父级使用其外来id之前对其进行处理。我实施的一个解决方案是仅将记录id发布到Kafka中,并在使用者中使用对原始数据库的查找来获取完整记录。我认为在问题中描述的场景中,您可能希望使用CRM工具API查找特定记录,而不是在代码中对记录查找进行反向工程。 您最终是如何实施该解决方案的