データベースをバージョン管理下に置きたいです。
少なくとも何らかのデータはそこに保存しておきたいです(卒業生言及: ユーザー タイプと管理者)。また、パフォーマンス測定のために、生成されたテスト データの大規模なコレクションが必要になることもよくあります。
データベースにバージョン管理を適用するにはどうすればよいですか?
ベストアンサー1
マーティン・ファウラーは、このテーマに関して私のお気に入りの記事を書いています。出典: http://martinfowler.com/articles/evodb.html私は、運用データベースを簡単にアップグレードしたいため、alumbや他の人が提案しているように、スキーマ ダンプをバージョン管理下に置かないことにしました。
単一の運用データベース インスタンスを持つ Web アプリケーションの場合、次の 2 つの手法を使用します。
データベースアップグレードスクリプト
スキーマをバージョンNからN+1に移行するために必要なDDLを含むシーケンスデータベースアップグレードスクリプト。(これらはバージョン管理システムに含まれます。)次のような_version_history_テーブル
create table VersionHistory (
Version int primary key,
UpgradeStart datetime not null,
UpgradeEnd datetime
);
アップグレード スクリプトが実行されるたびに、新しいバージョンに対応する新しいエントリが取得されます。
これにより、データベース スキーマのどのバージョンが存在するかを簡単に確認でき、データベース アップグレード スクリプトが 1 回だけ実行されるようになります。繰り返しますが、これらはデータベース ダンプではありません。各スクリプトは、あるバージョンから次のバージョンに移行するために必要な変更を表します。これらは、運用データベースに適用して「アップグレード」するスクリプトです。
開発者サンドボックスの同期
- 運用データベースをバックアップ、サニタイズ、縮小するためのスクリプト。運用 DB へのアップグレードごとにこれを実行します。
- 開発者のワークステーションでバックアップを復元 (および必要に応じて調整) するスクリプト。各開発者は、運用 DB へのアップグレードのたびにこのスクリプトを実行します。
注意: 私の自動テストはスキーマが正しいが空のデータベースに対して実行されるため、このアドバイスは必ずしもお客様のニーズに完全には適合しません。