データベースバージョン化 - ブランチスイッチングはどのように機能しますか?

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

質問

大丈夫です!ちょっと待って!ソフトウェアのバージョン4.0で開発している場合はどうなりますか?スキーマは(ほぼ確実に)今では非常に異なる可能性があります...

あなたがあなたの変更スクリプトと一緒にロールバックスクリプトを書くために余分な努力をしたならば、これはうまくいくと思います。しかし、それは多くの仕事のように思えます - それは本当に価値がありますか?

役に立ちましたか?

解決

3.2ブランチコードの作業中に、新しい3.2ブランチデータベースを作成し、それを使用して作業することがはるかに簡単です。各開発者が作業するデータベースを1つだけ持っていることを要求することは、私にとって合理的ではないようです。

他のヒント

私は手足に乗って、あなたがデータベースをバイナリとしてバージョンしていると仮定しますか?すべてのデータベース資産が建設的なコード(SQLスクリプトやテキストデータダンプなど)の形式である場合、Mark:これらの資産を開発ブランチの一部として保存するように、ソリューションは簡単です。バージョン3.2に取り組むには、ブランチを切り替え、作成スクリプトとPrestoの3.2データベースを再実行します。マージは、通常のコードと同じくらい簡単です(または、選択したバージョン制御システムに応じて)。

このモードで動作するためのいくつかの提案があります。

  • テキストからデータベースインスタンスの作成が遅すぎる場合は、すべてのスキーマ /データファイル(またはそのMD5合計)の内容によってキーになった共有ディスクボリュームにキャッシュを作成します。
  • 事前コミットフックを作成して、開発者のインスタンスのスキーマとデータダンプがバージョン制御下のものと同じであることを確認します。これにより、人々がインタラクティブツールを使用して開発データベースを変更することを防ぎ、それらをコミットするのを忘れます。
  • 変更スクリプトに言及します。それらを責任として扱います。展開シナリオ(たとえば、在庫をアップグレードしたいお客様の場合)で必要とされる場合がありますが、データベースのバージョン履歴から情報を複製し、マーフィーの法律の複製は遅かれ早かれ非同期化を意味します。 「diff」を使用して、バージョンされたデータベースアセットから変更スクリプトを自動生成してみてください。または、これを達成できない場合は、データベースのアップグレードにいくつかの深刻な単体テストを捧げます。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top