2009-05-27 2 views
4

私たちは小さな開発チーム(約5人)で、異なる場所から開発プロジェクトを行っています。 私たちはアウトコードレポとしてSVNを使用します。
私たちが今いる最も大きな問題は、私たちのDBスキーマが全員で完全に同期していないことです。 私は以下のオプションを持っています: 1. "中央" DBを取り除きます。これは悪い考えであり、おそらく起こりません。 2. DBのバージョンを維持し、各開発者に変更を常に最新の状態に保つ「ゲートキーパー」開発者が必要です。 3.各開発者にDBチェンジスクリプトの変更内容を確認させます。これは本当にすばやく手に入ることがあります。開発者間でSQLデータベーススキーマを同期させる

申し訳ありませんがちょうどそれが

すべてのアイデアは、.NET、C#プロジェクトであることを言及するには?

答えて

0

Visual Studio Team Database Editionの使用を検討しましたか?ソースデータベース全体をソース管理に入れ、各開発者が独自の変更を行い、一度チェックインすると、他の開発者はこれらの変更を自分の作業コピーに簡単に展開できます。

MSSCCIプロバイダで動作するSVNプラグインがあるかどうかはわかりませんが、そこには何かがあるはずです。

+0

いいアイデア..しかし、Microsoftのソース管理に関連する何かについての無礼なことを言う、この厄介な人が私の中にいます。私はそれで楽しい時を過したことはありません。 – Neale

+0

私はあなたがまだSVNでそれを行うことができると思います。Visual StudioがMSソース管理製品を使用する代わりにSVNデータベースに直接アクセスできるように、MSSCCIプラグインが必要です。 –

0

Team Editionビジュアルスタジオ製品を使用していないと仮定すると、オプション3を選択します。ソース管理の下にもSQLスクリプトがあります。

ローカルデータベースを同期させて保存することは、最新のソースコードを使用する必要があります。

あなたがソース管理下にデータベースを管理するために、(デベロッパー版に付属している)データベース版の使用を開始し、その後、

+0

それは確かに.net C#プロジェクト – Neale

+0

私は私の元の答えではっきりしていないと思います。私は "Team Editionのビジュアルスタジオ製品を使用していなかったと仮定して" – NotMe

1

をチームの製品を使用している場合、これは難しい問題です。スキーマを生成するために使用されたSQL(Enterprise Architectから自動生成されたもの)を改訂することで、この問題を解決しました。私たちは、有効なテストデータを持つデータセットを再作成するには時間がかかりすぎると感じていたため、データベーススキーマを更新しないという大きな問題を抱えていました。

当社のソリューションは、となりました:

  • SVN
  • にデータ挿入スクリプトを追加SVN
  • をSQLスキーマ生成を追加します。我々はハドソンを使用スキーマ/データは、SVN
  • にダンプ

を追加します。リビジョンの変更をチェックする自動データベース構築をセットアップします。自動的にスキーマが再作成され、すべてのデータが挿入され、ダンプファイルがエクスポートされ、ダンプファイルがSVNにコミットされます。

基本的には、データベースのインポートを実行するまでに約20秒かかりました。データベースの作成を高速化すると、開発者は頻繁に問題を抱えることはありません。

+0

私はここでちょっと奇妙に聞こえるかもしれませんが...申し訳ありませんが、ハドソンは何ですか? – Neale

+0

申し訳ありません - 私はそれにリンクするつもりでした!それは継続的な統合ツールです:https://hudson.dev.java.net/ – Kieveli

0

私は小規模なチームでも働いていますが、私たちのSQLスキーマとデータ挿入スクリプトは、コードと同じようにリポジトリにチェックインされています。

最新の「ソース」を最新の状態に保つようにする必要があります。私たちは、どんな主要な変更/改訂についても、誰もが何を修正しているかについて情報を提供するだけでなく、出される前にデータベースの更新内容を確認する機会を提供するために、

0

この問題はこれ以上共通するものではありません。すべてのチームがこの質問をある時点で尋ねなければなりません。私は共通のDBアプローチと個別のDBアプローチを行ってきました。チームは常に共通のDBに戻ってきました。メンテナンスが簡単で、誰もが早期に同期し、頻繁に同期する必要があります。これは、バージョン管理でスキーマの変更や定義を保持する必要性を否定しません。テスト、ステージング、本番環境を更新するには、反復可能なプロセスが必要です。純粋なSQLマイグレーションでは必ずしも十分ではありませんが、ネイティブ・オブジェクトを使用してデータを生成したり、意思決定を行う必要がある場合があります。 Ruby on Railsの移行システムは、私が見てきた最良のシステム(私がperl、php、Javaで構築したシステムに似ていますが、いくつかの点で改善されています)です。それをチェックして、同様のことをしてください。

1

なぜ同じデータベースサーバーで作業するのが悪い考えですか?すべての開発者が他者を傷つける可能性のある変更を行っているので、その場合、私はスキーマの変更を一人の人に扱い、VPNを使用してデータベースサーバーを持つネットワークに入ることができます。私はこの同じボートにいます。ちょうど安い(< $ 100)のための私のVPNのニーズに対処するためにシスコのルータをピックアップしました。

1

「アジャイルデータベース開発」について、ポール・グラハムから数年前に読んだことがあります。私はそれをグーグルで調べるのに困っている。これらの用語はすべてあまりにも一般的で、私の記憶はあまりにも近づくにはあまりにも曖昧です。

私はそれが(前述)RailsのActiveRecordの移行ツールをモデルにしたが、.NETを目指していますhttp://code.google.com/p/migratordotnet/

acrossed実行しました。私はネットのプログラマーではないが、あなたが探しているもののように聞こえる。

1

私が現在取り組んでいるプロジェクトでも同じ問題がありました。驚くほどうまく機能する解決策としてTarantinoを採用しました。各開発者は、ローカルデータベースに対して作業しています。開発者がスキーマを変更する必要がある場合は、スクリプトを作成してチェックインします。

各開発者が既にローカルデータベースで実行しているスクリプトを追跡し、新しいスクリプトを適用します。したがって、開発者AがSQLスクリプトを変更してチェックすると、開発者Bは、ソース管理からファイルを取得するときに変更を取得します。開発者BがローカルでTarantinoを実行すると、最新のスクリプトのみが適用されます。

許可されていますが、ほとんどは手動で行うことができます。タランティーノはそれを楽にしますが、完璧ではありません。 1つの利点は、ビルドプロセスにかなり容易に統合できることです。データベース内のデータを維持するためのスクリプトも作成できます。

1

MSはこれにはまだ標準的な解決策がないという点で少し遅れていますが、#3オプション(スクリプトの変更)は今日のところ行く方法です。他のほとんどの現代的な主流言語は、いろいろな種類のフレーバーでこの形式を使用しています。例えばRailsの移行をチェックしてください。

This postについて説明します。サードパーティの.NETソリューションが多数用意されています。私の経験では、migratordotnetはすばらしい選択です。問題の詳細な調査については、この件に関するMartin Fowlerのarticleを参照してください。

関連する問題