使用Apache kafka

时间:2017-02-10 19:52:14

标签: oracle apache-kafka

我想从我的oracle数据库中公开数据表并公开到apache kafka。技术上可行吗? 我还需要从我的oracle表中流式传输数据并将其通知给Kafka。 你知道这个用例的好文档吗? 谢谢

4 个答案:

答案 0 :(得分:7)

  1. 您需要Kafka Connect JDBC源连接器来加载Oracle数据库中的数据。 Confluent有一个开源捆绑连接器。它已经与Confluent Platform的其余部分打包和测试,包括模式注册表。使用此连接器就像编写简单的连接器配置和启动独立的Kafka Connect进程或向Kafka Connect集群发出REST请求一样简单。可以在here

  2. 找到此连接器的文档
  3. 要将变更数据从Oracle事务数据库实时移动到Kafka,您需要首先使用变更数据捕获(CDC)专有工具,该工具需要购买商业许可证,例如Oracle的Golden Gate,Attunity Replicate,Dbvisit复制或Striim。然后,您可以利用它们提供的Kafka Connect连接器。它们都列在here

  4. 来自Redhat的开源CDC工具Debezium计划开发一种不依赖Oracle Golden Gate许可证的连接器。相关的JIRA是here

答案 1 :(得分:0)

您可以使用Kafka Connect将数据导入/导出到Kafka。使用Kafka Connect非常简单,因为不需要编写代码。您只需配置连接器。

如果没有可用的连接器且您想提供自己的连接器,则只需编写代码。已有50多个连接器可用。

来自Confluent Inc的Oracle有一个连接器(“Golden Gate”):https://www.confluent.io/product/connectors/

答案 2 :(得分:0)

从表面上看,这在技术上是可行的。但是,请理解该问题对下游应用程序有影响。 因此,要全面解决有关技术可行性的原始问题,请牢记以下内容:

  1. 排序/提交语义是否重要?特别是跨桌子。
  2. 实例崩溃(Kafka / CDC组件)中的连续表更改是否重要?
  3. 当表定义发生变化时 - 您是否希望应用程序继续工作,或者是否会采用计划的变更控制?
  4. 您想要移动部分数据子集吗?
  5. 需要支持哪些数据类型?例如嵌套表支持等。
  6. 您是否需要处理压缩的逻辑更改 - 例如关于更新/删除操作?您将如何在消费者方面解决这个问题?

答案 3 :(得分:0)

您也可以考虑使用OpenLogReplicator。这是一个新的开源工具,可读取Oracle数据库重做日志并将消息发送到Kafka。由于它是用C ++编写的,因此具有非常低的延迟(如10ms左右),但吞吐率却相对较高。

它处于开发的早期阶段,但是已经有一个工作版本。您可以尝试制作POC并检查一下其工作原理。