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