[解決済み] DBスキーマの変更を追跡する仕組み [終了しました]
質問
DB スキーマの変更を追跡および/または自動化するための最良の方法は何でしょうか? 私たちのチームはバージョン管理に Subversion を使用しており、この方法でいくつかのタスクを自動化することができました (ビルドをステージング サーバーにプッシュし、テストしたコードを本番サーバーにデプロイする) が、データベース更新はまだ手作業で行っています。 私は、コードと DB の更新がさまざまなサーバーにプッシュされるバックエンドとして Subversion を使用し続けながら、異なる環境を持つサーバー間で効率的に作業できるソリューションを見つけるか作成したいと思います。
多くの一般的なソフトウェアパッケージは、DBのバージョンを検出し、必要な変更を適用する自動更新スクリプトを含んでいます。 これは、より大きなスケール (複数のプロジェクト、場合によっては複数の環境および言語) でさえ、これを行うための最良の方法でしょうか? もしそうなら、プロセスを簡素化する既存のコードがあるのでしょうか? 誰かが以前に似たようなものを実装し、それを Subversion のポスト コミット フックに統合しましたか、それともこれは悪い考えでしょうか?
複数のプラットフォームをサポートするソリューションが望ましいのですが、私たちの仕事の大部分はそのプラットフォーム上にあるので、Linux/Apache/MySQL/PHP スタックをサポートすることが間違いなく必要です。
どのように解決するのですか?
Railsの世界では、マイグレーションという概念があります。これは、データベース固有のSQLではなく、Rubyでデータベースへの変更を行うためのスクリプトです。Ruby のマイグレーション コードは、最終的に現在のデータベース固有の DDL に変換されます。
データベースに変更を加えるたびに、新しいマイグレーションを書きます。マイグレーションには通常、変更を適用するための "up" メソッドと、変更を取り消すための "down" メソッドの 2 つがあります。1つのコマンドでデータベースを最新の状態にし、また、データベースをスキーマの特定のバージョンにするために使用することができます。Rails では、マイグレーションはプロジェクト ディレクトリ内の独自のディレクトリに保管され、他のプロジェクト コードと同様にバージョン コントロールにチェックインされます。
Railsのマイグレーションに関するこのOracleガイド はマイグレーションをかなりよくカバーしています。
他の言語を使用する開発者もmigrationsに注目し、独自の言語固有のバージョンを実装しています。私が知っているのは Ruckusing は、RailsのmigrationsをモデルにしたPHPのmigrationsシステムで、あなたが探しているものかもしれません。
関連
-
[解決済み】PHPで空の値からデフォルトオブジェクトを作成する?
-
[解決済み】ディレクトリ内のファイル数を数える PHP
-
[解決済み] $wpdb->update または $wpdb->insert を実行すると、引用符の前にスラッシュが追加される
-
[解決済み] Uncaught Error: 未定義の関数 mysql_escape_string() の呼び出し。
-
[解決済み】MySQLのカラム数が1行目の値数と一致しない【非公開
-
[解決済み] ブーリアン値を格納するために使用するMySQLデータ型
-
[解決済み] MySQLデータベースの名前を素早く変更する(スキーマ名を変更する)方法は?
-
[解決済み] MySqlのスキーマをデータなしでエクスポートする
-
[解決済み] MySQL型テキストの最大長
-
[解決済み] 開発、テスト、本番のデータベースをどのように管理するか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「初期通信パケットの読み込み」でMySQLサーバーに接続できなくなり、システムエラーになる。0
-
[解決済み】php, mysql - データベースへの接続数が多すぎるエラー
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: バインドされた変数の数が102行目のトークンの数と一致しない [終了]
-
[解決済み】 $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて]
-
[解決済み】PHPからPythonスクリプトを実行する
-
[解決済み】Netbeans 7.4 for PHPで「スーパーグローバルな$_POST配列に直接アクセスしないでください」という警告が発生する。
-
[解決済み] PHP - ストリームを開くのに失敗しました : そのようなファイルまたはディレクトリがありません。
-
[解決済み] Uncaught SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
thinkphp5 timestamp 非整形の数値に遭遇した。
-
MacでPHPを実行した際に、メモリサイズが134217728バイトも消費される問題の解決方法について