2

我正在一个 Spring Java EE 应用程序中工作,该应用程序必须处理两个不同的数据源 A 和 B。

因为应用程序需要以一致的方式更新 A 和 B。如果一次更新失败,则整个过程都会失败,必须进行回滚。

我对如何实现应用程序有两种不同的想法:

  1. 我必须将这两个更新都包含在分布式事务 XA 中。这种方法在性能方面会很昂贵。此外,B 源将很快关闭,保持整个 XA 基础设施可能是一个瓶颈;
  2. 我可以设置从 db A 到 db B 的 Oracle DB 链接,并让我的应用程序相信它只使用单个数据源和本地事务,而 Oracle 处理更新同步。当 B 将被关闭时,我将简单地删除 B 更新并关闭 DB Link。

对于这两种情况,你怎么看?

4

1 回答 1

0

使用 DB 链接的查询将在 Oracle 中隐式启动分布式事务。因此,您获得的开销与处理 XA 和应用程序中的两个数据源相同。

我们一直在使用 XA,它从来都不是瓶颈。不用担心。

于 2013-03-08T14:48:38.580 回答