データベースバージョン化 - ブランチスイッチングはどのように機能しますか?
-
02-10-2019 - |
質問
大丈夫です!ちょっと待って!ソフトウェアのバージョン4.0で開発している場合はどうなりますか?スキーマは(ほぼ確実に)今では非常に異なる可能性があります...
あなたがあなたの変更スクリプトと一緒にロールバックスクリプトを書くために余分な努力をしたならば、これはうまくいくと思います。しかし、それは多くの仕事のように思えます - それは本当に価値がありますか?
解決
3.2ブランチコードの作業中に、新しい3.2ブランチデータベースを作成し、それを使用して作業することがはるかに簡単です。各開発者が作業するデータベースを1つだけ持っていることを要求することは、私にとって合理的ではないようです。
他のヒント
私は手足に乗って、あなたがデータベースをバイナリとしてバージョンしていると仮定しますか?すべてのデータベース資産が建設的なコード(SQLスクリプトやテキストデータダンプなど)の形式である場合、Mark:これらの資産を開発ブランチの一部として保存するように、ソリューションは簡単です。バージョン3.2に取り組むには、ブランチを切り替え、作成スクリプトとPrestoの3.2データベースを再実行します。マージは、通常のコードと同じくらい簡単です(または、選択したバージョン制御システムに応じて)。
このモードで動作するためのいくつかの提案があります。
- テキストからデータベースインスタンスの作成が遅すぎる場合は、すべてのスキーマ /データファイル(またはそのMD5合計)の内容によってキーになった共有ディスクボリュームにキャッシュを作成します。
- 事前コミットフックを作成して、開発者のインスタンスのスキーマとデータダンプがバージョン制御下のものと同じであることを確認します。これにより、人々がインタラクティブツールを使用して開発データベースを変更することを防ぎ、それらをコミットするのを忘れます。
- 変更スクリプトに言及します。それらを責任として扱います。展開シナリオ(たとえば、在庫をアップグレードしたいお客様の場合)で必要とされる場合がありますが、データベースのバージョン履歴から情報を複製し、マーフィーの法律の複製は遅かれ早かれ非同期化を意味します。 「diff」を使用して、バージョンされたデータベースアセットから変更スクリプトを自動生成してみてください。または、これを達成できない場合は、データベースのアップグレードにいくつかの深刻な単体テストを捧げます。
所属していません StackOverflow