ブランチを備えた中規模プロジェクトのデータベースリビジョンをどのように管理しますか?

StackOverflow https://stackoverflow.com/questions/156044

質問

職場では、4人が一緒にいくつかの異なるプロジェクトに取り組んでいます。各プロジェクトには、作業対象のローカルコピーがあり、開発、ステージング、およびライブ展開があり、ブランチがある場合は(Subversionを使用します)。データベースはMySQLです。

だから私の質問は、各デプロイメント(および開発者にとってはローカルコピー)に対して行われたデータベースのリビジョンを管理するための良い方法は何かということです。現在、各変更は、名前にタイムスタンプが付けられ、プロジェクトの下のフォルダーに入れられるテキストファイルに保存されます。正直なところ、これはあまりうまく機能していません。どこに適用されたかを追跡するのに役立つソリューションが必要です。

役に立ちましたか?

解決

データベースが一連のデータアクセスオブジェクトにうまくマッピングされている場合は、「移行」の使用を検討してください。データモデルをアプリケーションコードとして保存し、各データベースバージョンを前後に移動する手順を保存するという考え方です。

Railsが最初にそれをやったと思います。

Javaには少なくとも1つのプロジェクトがあります。

そして、これは .NET移行ライブラリです。

バージョンを変更するには、必要なバージョンを取得するために、すべてのアップまたはダウンバージョンをステップ実行する簡単なスクリプトを実行します。すばらしい点は、アプリコードと同じソースリポジトリへの移行を確認することです。すべて1か所で行えます。

他の人が他の移行ライブラリを提案できるかもしれません。

乾杯。

編集: https://stackoverflow.com/questions/313/net-migrations-engineおよび .NETデータベース移行ツールのまとめ(上記投稿より)。

他のヒント

http://odetocode.com/Blogs/scott /archive/2008/01/30/11702.aspx

上記のブログは、現在のデータベースバージョン管理システムを紹介しました。簡単に言えば、更新スクリプトなしではDBの変更は行われず、すべての更新スクリプトはソース管理リポジトリにあります。

スキーマの変更のみを管理しますが、バージョン管理でもデータのダンプを使用可能にすることを検討できる場合があります。このようなファイルの作成は、mysqldumpを使用した非常に簡単な作業です。

当社のソリューションは、ブログで紹介されているソリューションと1つの重要な点で異なります。それは自動化されていません。データベースの更新などを手作業で適用する必要があります。これには少し時間がかかりますが、完全に自動化されたシステムに必要な労力の一部が先送りされました。ただし、自動化したことの1つは、ソフトウェアのdbバージョントラッキングでした:これは非常に簡単で、ソフトウェアが実行中のデータベースを認識し、動作しているスキーマを知っている場合にのみ実行されることを保証します。

ソリューションの最も難しい部分は、ブランチからの更新をトランクにマージする方法でした。私たちは、2人の開発者がブランチを同時にDB更新にマージしようとする可能性とその処理方法に対処するためのワークフローを開発するために時間を費やしました。最終的に、バージョン管理でファイルをロックすることに決めました(問題のファイルは、実際には、手動管理戦略を支援するdbバージョンにソフトウェアバージョンをマッピングするテーブルです)、スレッドのクリティカルセクションと同様に、開発者はロックはトランクの更新について行われます。完了すると、他の開発者はロックできるようになります。スクリプトに必要な変更を加えて、予想されるバージョンの衝突やその他の悪いjujuが回避されるようにします。

すべてのデータベーススクリプト(データとスキーマ/ ddl)をバージョン管理します。また、変更の中央カタログを保持しています。開発者がスキーマ/ DDLファイルに変更を加えるか、何らかの方法でデータを変更するスクリプトを追加すると、それらのファイルはSVNコミット番号とともにカタログに追加されます。

カタログの変更を読み取り、カタログ内の各リビジョンから内容を取得して適用することにより、カタログの内容に基づいて大きな更新スクリプトを作成する小さなユーティリティを社内にまとめました。この概念は、 DBDeploy ツールによく似ています。これは元々 Thoughtworks を使用すると、利用できる場合があります。少なくとも開始するのに適した場所を提供します。この時点から、ニーズに直接合ったソリューションをカスタマイズできます。

幸運を祈ります!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top