Webサービス、フラットファイル、その他の外部ソースから本番データベースに大量のデータをインポートする必要があります。これを行うためにSpringBatchを使用しています。
大きな問題の1つは、これらのデータの一部が相互に関連しているが、同時にインポートされないことです。もう1つの大きな問題は、データが多いため、問題が発生した場合に大規模なトランザクションを実行してロールバックすることができないことです。
どうすればそれができますか?
Webサービス、フラットファイル、その他の外部ソースから本番データベースに大量のデータをインポートする必要があります。これを行うためにSpringBatchを使用しています。
大きな問題の1つは、これらのデータの一部が相互に関連しているが、同時にインポートされないことです。もう1つの大きな問題は、データが多いため、問題が発生した場合に大規模なトランザクションを実行してロールバックすることができないことです。
どうすればそれができますか?
最善の方法は、実行中のアプリケーションで使用されていない「保持」テーブルにデータをロードすることです。次に、アプリケーションのビジー状態が最も少ないときに、 SELECTINTOを使用してデータをアプリケーションテーブルにコピーする方法を検討します。
このアプローチの利点は次のとおりです。
これを実行している間、データベースがサービス中でないと仮定します。データベースをバックアップし、すべての制約チェックをオフにし、データをインポートして、制約をオンに戻します。すべてが失敗した場合は、少なくともフォールバックするバックアップがあります。