2

Scala(JVMベースの言語)用のタイプセーフなリレーショナルデータベースフレームワークであるsquerylに基づいて、リリースに到達する私の小さなプロジェクトがあります。

最初の展開後、複数の更新が行われると予想しています。データベースに入力されたデータは、それらの上に永続化する必要があります。これは、新しいDBスキーマのデータをアップグレードする、ある種のデータ移行手順なしでは不可能です。新しいコードをテストするために古いデータを使用する場合も、互換性パッチが必要です。

現在、フレームワークによる自動スキーマ生成を使用しています。スキーマを最初から作成することしかできないようです。データは保持されません。

自動スキーマ生成を完全に停止することなく、変更されたスキーマへのデータの簡単で形式的な移行を可能にする方法はありますか?

これまでのところ、列を追加する簡単な方法しかわかりません。古いデータをダンプし、新しい列のデフォルト値を提供し、スキーマをリセットし、古いデータを復元します。

列タイプまたはセマンティクスを削除、名前変更、変更するにはどうすればよいですか?

スキーマ生成が本番データベースの移行に役立たない場合、従来の手動/スクリプトによる再デプロイの標準的な手順は何ですか?

4

1 に答える 1

1

Squerylリストでこれについていくつかの議論がありました。コンセンサスは、すべての人に役立つ実際のベストプラクティスはないということです。モデルに基づいてスキーマを更新する自動化されたプロセスを持つことは脆弱であり(列の名前変更などの状況を処理できません)、本番環境では危険な場合があります。個人的には、スキーマの変更をすべてSQLとして記述する「移行」のアイデアが好きです。これを支援するフレームワークがいくつかあり、それらのいくつかをここで見つけることができます。個人的には、psqlコマンドラインユーティリティのライトラッパーを使用して、スキーマの移行とデータの読み込みを行っています。後者の方が、JDBCを介してデータをフィードするよりもはるかに高速です。

于 2012-03-12T19:02:59.207 に答える