2011-11-30 13 views
5

レコードをあるデータベースから別のデータベースに移動したい。レコードは最初のデータベースから削除し、2番目のデータベースにアトミックに挿入する必要があります。実装方法j2eeで長期実行分散トランザクション

xa? 私はxaがリソースのブロックロックを必要とする2フェーズコミットアルゴリズムを使用すると考えています

ターゲットデータベースはEISデータベースですので、最小限の時間ロックする必要があります。

+0

「長時間走っている」とはどういう意味ですか?時間?日々 ? –

+0

両方のOracleデータベースですか?その場合は、dblinkを使用することもできます。このコネクションはあなたのdb層の中にあります。それは手続きやplsqlを通して呼び出すことができます。 – techuser

答えて

0

XAはロック機構には何の入射もありません。 2つの別々のトランザクショナルリソースを更新しても、ACIDityが保持されるようにします。あなたのユースケースは、私が正しく理解していれば1つしか更新しないので、ここではXAは必要ありません。

+0

xaでない場合、他には何ですか? –

+0

ローカルトランザクション。 1つのデータベースを更新しています。データがGUIから来るのか、別のデータベースから来るのかは関係ありません。データベースを更新する他のユースケースとまったく同じように、ターゲットデータベースを使用します。 –

+0

ローカルトランザクションを使用している場合、データはターゲットにコミットされるが、ソースからはクリアされない可能性があります。 –

1

XAは確かに2フェーズコミットブロックプロトコルですが、私のケースでは、最初のエンティティが非常に高速である2つのエンティティしか存在しません。 2PCは効率的に動作します。

より一般的なシナリオでは、3フェーズコミットを使用できます。それは非ブロッキングプロトコルです。どんなjava仕様も持っていないようだが。

また、BTPとhttp://jotm.objectweb.org/jotm-btp.html は、JDBCアダプタとどのように容易に融合できるかわかりません。

関連する問題