我有一种情况,作为在线交易的一部分,我必须将一些数据保存到其他数据库中,更新其他数据库时有一点延迟(几秒钟)就可以了。现在由于两个数据库都是 Oracle,我有以下 3 个选项,我需要了解哪个更好。
Oracle 数据库链接:其中我将 SQL 转换为 PL/SQL,并让我的数据库负责写入另一个基于 Oracle 的 DEV 环境数据库,这两个数据库都在同一服务器中作为不同的模式,而在生产中它们恰好是两个独立的 ORACLE RAC由几个路由器和交换机隔开。
Spring Batch:以某种方式使用批处理作业从我的源数据库中选择事务并处理并写入另一个目标数据库。这样我的在线交易就不会失败,因为其他数据库出现故障或遇到性能问题或面临网络问题。如果他们失败了,我可以为工作重新启动能力编写代码。Spring batch 是否适合这种事件发布案例?我将来会遇到任何挑战吗?
2-Phase-Commit:我简单地实现了 2PC 并将数据保存在两个数据库中的事务中。或者也许让它看起来更面向未来并保存在消息传递系统和我的源数据库中。