2009-06-16 13 views
5

警告:長時間の質問です。データベースの複数のブランチをどのように管理し、管理しますか?

[質問]

スクリプトがバージョン管理されている以下の問題、に記載されているような戦略は、データベースごとに分岐を有することである場合。

ブランチ数を減らして統合しようとすると、データ移行の問題をどのように管理できますか?
データ移行の一環として発生するコストですか?

本質的に変換スクリプトは、移行時に作成する必要があります。

良い方法はありますか?
両方の問題を同時に解決できますか?
ベストプラクティスは何ですか?

[背景]

私の職場で、私たちは3つの支店を持っている製品を持っています。 "最新かつ最も盛んな"変更を持つメインラインは、リリースの準備ができていない。

  • バージョンB(名前は有罪を保護するために変更されている)
  • バージョンA(名前は有罪を保護するために変更されている)
  • メインライン

これらの枝の効果があるので3バージョンのデータベース。 コードバージョン管理はかなり簡単ですが、データベースバージョン管理は難しいようです。

Do you use source control for your database items? を読んでいると、各オブジェクト/テーブルのすべての作成スクリプトをエクスポートするのが最善の方法と思われます。 注:1つの大きなスクリプトまたは複数のスクリプトまたはハイブリッドでそれをどのように管理するかは、記事に従う方が好みです。

私はこれに同意し、なぜそれが行われていないかを問い合わせました。

現在、DBAは、スクリプトをブランチに分岐することを拒否します。 理由は、データマイグレーションの時間を節約するための理由として怠惰からです。 データベースの変更は、すべてのバージョンで強制的に維持されます。

すべてのスクリプトはバージョン管理され、メインラインでのみ維持されます。 バージョンAとバージョンBには、それぞれのブランチで実行する変更スクリプトを示す独自の特殊ファイルがあります。この問題は、たとえばバージョンAに適用される変更スクリプトがあるが、バージョンBに変更の一部のみが必要な場合に発生します。各ブランチに適用するパッチを示すファイルを更新することをDBAに通知することは、開発者次第です。変更スクリプトの一部を手動で適用するには、あまりにも多くの手動介入が必要です。

すべてのパッチがバージョンAのファイルを適用するためにどのパッチで抽出されているバージョンA上のデータベースを更新します。

[シナリオ]

  • 3つのバージョンが存在上記。
  • データベースがバージョンAに変更されます。
  • バージョンBからバージョンAにコードがマージされ、バージョンBが削除されるブランチ統合。
  • 同じことがデータベースで発生する必要があります。

これは意味があります。

+0

は、あなたのデータベースのスクリプトのいずれかが、現在バージョン管理されているかどうかを明確にしてくださいことはできますか?または、将来、データベースの複数の支店を管理するためにソース管理を使用する予定ですか?また、データベースを頻繁にマージする方法やブランチを一度だけ取り除く方法についての質問はありますか? –

+0

私は上記の問題点を明確にしました。バージョンコントロール戦略のように思えるのは、私が理解できない理由のために分岐を避けなければならないからです。問題の理解は、データ移行に大きなコストがかかっていたためと考えていました。しかし、John Saundersが述べているように、最初に変更スクリプトが作成されるときには、通常、これが考慮されます。すべての助けをいただきありがとうございます。 通常のバージョン管理戦略のようですね。 –

答えて

3

Eric Sink's Source Control HOW TOChapter 8を見てみましょう。これは、ソース管理の内容を理解するための素晴らしいリソースです。

+0

nikmd23、 リンクありがとうございます。 Source Controlのマージは、あなたが参照したとおりです。 ただし、複数のデータベースの変更が発生し、スクリプトの変更がブランチ間で正しくマージされる場合はどうしたらよいでしょうか。 は、数ヶ月後にそれだけでコストの変更を統合するために割り当てられた人、と言うのです、彼らは問題はデータ移行コストである問題は、データベースのスクリプト制御ではありませんスクリプトなど を変換する書面に投資しなければならない時に発生します。それの周りにはありますか?たとえば、データ移行のたびにスクリプトを維持するなどです。 私は何かを忘れましたか? –

+1

スキーマを変更するたびに、データの移行が考慮されている必要があります。場合によっては、スキーマを変更してもデータを変更する必要はありません。場合によっては、データの変更が必要になることがあります。その場合、必要に応じてデータを変更することは、これらの変更スクリプトの責任です。 –