JPA db スキーマの移行とさまざまなツールに関するスタックオーバーフロー スレッドが多数あります。ただし、大規模なデータベースのオフライン スキーマ移行を提案する際に、サービスのダウンタイムが長すぎる可能性があることを考慮している人はいないようです。
だからここに私の最初の考えがあります:
1 つの JPA エンティティを 2 つの JPA エンティティにリファクタリングしたいとします。「トラック」を「トラック」と「エンジン」に (エンジン属性を別のエンティティに移動します)。移行計画は次のようになります。
- 2 つの新しい JPA エンティティ "TruckNew" と "Engine" を作成します。
- 「Truck」、「TruckNew」、「Engine」にアクセスするDAO(または何でも)を次のように調整します。
- フォールバックとして「トラック」を使用する
- エンティティを「Truck」から「TruckNew」および「Engine」に変換する別のデータ移行スレッドを実行することで、ダウンタイムなしでバックグラウンドで移行を実行し、残りのアプリケーションに対して透過的になります。
- 「TruckNew」の名前を「Truck」に変更します。
ここで質問です。このようなタスクをサポートするツールはありますか? その作業の少なくとも一部を処理する JPA プロバイダー機能はありますか?