1

Webサービス、フラットファイル、その他の外部ソースから本番データベースに大量のデータをインポートする必要があります。これを行うためにSpringBatchを使用しています。

大きな問題の1つは、これらのデータの一部が相互に関連しているが、同時にインポートされないことです。もう1つの大きな問題は、データが多いため、問題が発生した場合に大規模なトランザクションを実行してロールバックすることができないことです。

どうすればそれができますか?

4

2 に答える 2

2

最善の方法は、実行中のアプリケーションで使用されていない「保持」テーブルにデータをロードすることです。次に、アプリケーションのビジー状態が最も少ないときに、 SELECTINTOを使用してデータをアプリケーションテーブルにコピーする方法を検討します。

このアプローチの利点は次のとおりです。

  1. データを保持テーブルにロードしても、アプリケーションテーブルにロックの影響はありません
  2. データベースの構成に応じて、SELECT INTOは、トランザクションログへの書き込みを最小限に抑えて(またはまったく行わずに)実行できるため、非常に効率的です。
于 2012-07-10T13:58:04.490 に答える
1

これを実行している間、データベースがサービス中でないと仮定します。データベースをバックアップし、すべての制約チェックをオフにし、データをインポートして、制約をオンに戻します。すべてが失敗した場合は、少なくともフォールバックするバックアップがあります。

于 2012-07-10T13:11:22.207 に答える