http://odetocode.com/Blogs/scott/archive/2008/01/30/11702.aspx
上記のブログから、現在のデータベース バージョン管理システムにたどり着きました。簡単に言えば、更新スクリプトなしでは DB の変更は行われず、すべての更新スクリプトはソース管理リポジトリにあります。
私たちはスキーマの変更のみを管理しますが、データのダンプをバージョン管理で利用できるようにしておくことも検討できる場合があります。そのようなファイルを作成することは、mysqldump を使用する非常に簡単な作業です。
私たちのソリューションは、ブログで紹介したソリューションとは 1 つの重要な点で異なります。それは、自動化されていないことです。データベースの更新などを手動で適用する必要があります。これには少し時間がかかる可能性がありますが、完全に自動化されたシステムに必要な作業の一部が延期されました。しかし、自動化したことの 1 つは、ソフトウェアでの db バージョンの追跡です。これは非常に単純で、ソフトウェアが実行対象のデータベースを認識し、操作対象のスキーマを認識している場合にのみ実行されるようにします。
私たちのソリューションの最も困難な部分は、ブランチからの更新をトランクにマージする方法でした。2 人の開発者がブランチを同時に DB 更新とマージしようとする可能性と、その処理方法に対処するためのワークフローを開発するのに時間を費やしました。最終的に、バージョン管理でファイルをロックすることにしました (問題のファイルは、実際には、手動管理戦略を支援するソフトウェア バージョンとデータベース バージョンをマッピングするテーブルです)。スレッドのクリティカル セクションと同じように、ロックはトランクの更新について行われます。完了すると、他の開発者はロックできるようになり、スクリプトに必要な変更を加えて、予想されるバージョンの競合やその他の悪い障害が回避されるようにする責任があります。