2

私は、AとBの2つの異なるデータソースを処理する必要があるSpringJavaEEアプリケーションで作業しています。

アプリケーションは一貫した方法でAとBを更新する必要があるため。1つの更新が失敗すると、プロセス全体が失敗し、ロールバックを実行する必要があります。

アプリケーションの実装方法について、2つの異なるアイデアがあります。

  1. 両方の更新を分散トランザクションXAに含める必要があります。このアプローチは、パフォーマンスの点でコストがかかります。さらに、Bソースはまもなくオフになり、XAインフラストラクチャ全体を維持することがボトルネックになる可能性があります。
  2. データベースAからデータベースBへのOracleDBリンクを設定し、Oracleが更新の同期を処理している間、アプリケーションが単一のデータソースとローカルトランザクションでのみ機能していると信じ込ませることができます。Bがオフになるときは、Bの更新を削除して、DBリンクをオフにします。

これらの2つのシナリオについてどう思いますか?

4

1 に答える 1

0

DBリンクを使用するクエリは、Oracleで分散トランザクションを暗黙的に開始します。したがって、アプリケーションからXAと2つのデータソースを処理するのと同じオーバーヘッドが発生します。

私たちは常にXAを使用しており、これがボトルネックになったことはありません。心配しないで。

于 2013-03-08T14:48:38.580 に答える