2012-03-09 9 views
2

squeryl - Scala(JVMベースの言語)用の型保証されたリレーショナルデータベースフレームワークに基づいて、リリースに達する小さなプロジェクトがあります。sqerylで管理されている既存のデータを移行するにはどうすればよいですか?

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

私はフレームワークによる自動スキーマ生成を使用します。それは最初からスキーマを作成することしかできないようです - データは残っていません。

スキーマの自動生成を完全に停止せずに、変更されたスキーマにデータを容易かつ正式に移行できる方法はありますか?

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

列の種類やセマンティクスを削除、名前変更、変更するにはどうすればよいですか?

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

答えて

1

Squerylリストでこれについていくつかの議論がありました。コンセンサスは誰にとっても効果的なベストプラクティスが存在しないという傾向があります。モデルに基づいてスキーマを更新する自動化されたプロセスを持つことは脆弱であり(列の名前変更などの状況を処理できない)、プロダクションで危険な可能性があります。個人的には、スキーマ変更のすべてがSQLとして書かれている「マイグレーション」という考えが好きです。これに役立ついくつかのフレームワークがあり、それらの一部を見つけることができますhere。個人的には、psqlコマンドラインユーティリティの軽いラッパーを使用して、スキーマの移行とデータ読み込みを行うだけです。後者の方がデータをJDBC経由で読み込むほうがずっと高速です。

関連する問題