DBスキーマの変更を追跡するメカニズム [closed] 質問する

DBスキーマの変更を追跡するメカニズム [closed] 質問する

DB スキーマの変更を追跡および/または自動化する最適な方法は何ですか? 私たちのチームではバージョン管理に Subversion を使用しており、この方法で一部のタスクを自動化できました (ビルドをステージング サーバーにプッシュし、テスト済みのコードを運用サーバーに展開する)。ただし、データベースの更新は手動で行っています。コードと DB の更新がさまざまなサーバーにプッシュされるバックエンドとして Subversion を引き続き使用しながら、異なる環境のサーバー間で効率的に作業できるソリューションを見つけるか作成したいと考えています。

多くの一般的なソフトウェア パッケージには、DB のバージョンを検出して必要な変更を適用する自動更新スクリプトが含まれています。これは、大規模 (複数のプロジェクト、場合によっては複数の環境と言語) でもこれを行うための最善の方法ですか? そうである場合、プロセスを簡素化する既存のコードはありますか、それとも独自のソリューションを展開するのが最善ですか? 以前に同様のものを実装し、それを Subversion のコミット後フックに統合した人はいますか、それともこれは悪い考えですか?

複数のプラットフォームをサポートするソリューションが望ましいですが、私たちの作業の大部分は Linux/Apache/MySQL/PHP スタック上で行われるため、このスタックをサポートすることは必須です。

ベストアンサー1

Rails の世界には、移行の概念があります。これは、データベース固有の SQL ではなく、Ruby でデータベースを変更するスクリプトです。Ruby 移行コードは、現在のデータベースに固有の DDL に変換されるため、データベース プラットフォームの切り替えが非常に簡単になります。

データベースに変更を加えるたびに、新しい移行を記述します。移行には通常、変更を適用する「up」メソッドと変更を元に戻す「down」メソッドの 2 つのメソッドがあります。1 つのコマンドでデータベースを最新の状態に更新できます。また、データベースを特定のバージョンのスキーマに更新するためにも使用できます。Rails では、移行はプロジェクト ディレクトリ内の独自のディレクトリに保存され、他のプロジェクト コードと同様にバージョン管理にチェックインされます。

OracleのRails移行ガイド移行をかなりうまくカバーしています。

他の言語を使用する開発者は移行を検討し、独自の言語固有のバージョンを実装しています。騒ぎ立てるは、Rails のマイグレーションをモデルにした PHP マイグレーション システムです。これがあなたが探しているものかもしれません。

おすすめ記事