【问题标题】:Caching oracle table data into Elastic search DB effectively有效地将 oracle 表数据缓存到 Elastic 搜索数据库中
【发布时间】:2020-09-23 18:59:45
【问题描述】:

在 Java 中将 oracle 数据缓存到 Elastic search DB 的最佳方法 Oracle DB 是拥有数百万条记录的主数据,需要根据搜索文本进行搜索。所以需要使用 ES 缓存来获得性能。

现在我正在查看最佳方式在 oracle DB 和 ES DB 之间进行同步。

【问题讨论】:

  • 我刚刚实现了类似的东西(POC) - 用 ES 替换 Oracle Text 索引。 Shareplex(商业产品)执行从 Oracle 到 Kafka 流的逻辑数据复制。然后一个简单的 Java 应用程序从 Kafka 读取消息并将它们存储到 ES 中。延迟是最小的。 PS:Shareplex 类似于用于 BigData 的 GoldenGate(但更便宜)
  • 我目前使用 RecursiveAction 和 ForkJoinPool 来做池复制。
  • 使用hibernate.org/search你会感谢我的:)

标签: java spring oracle elasticsearch spring-data-jpa


【解决方案1】:

我做了上述系统。欢迎大家提出改变建议

我在 oracle 和 hibernate 上使用 spring JPA 带有 ES 的 Spring JPA

伪代码

  1. 检查 id 是否存在于 ES 存储库中

  2. 如果存在 返回页面

  3. 如果丢失

    3.1 使用 Oracle Repository 从 oracle db 获取

    3.2 用户 java.util.concurrent.RecursiveAction 将数据从 oracle repo 复制到 ES repo 并使用 ForkJoinPool 调用递归操作。 (或者您可以执行自己的自定义逻辑以多线程方式执行此操作)

    3.3 返回页面(解决上述步骤 3.2 的一个问题是使用守护线程)

  4. 结束

请发表您对此改进的建议。

【讨论】:

  • 并且需要在 crud 操作中保持更新最新记录...
猜你喜欢
  • 2022-07-21
  • 1970-01-01
  • 1970-01-01
  • 2012-01-05
  • 2018-09-30
  • 2023-04-01
  • 1970-01-01
  • 2015-04-11
  • 1970-01-01
相关资源
最近更新 更多