私のプロジェクトの一部の人々は、共通の開発データベースを使用し、全員がそれに接続することが最善であると考えているようです。そうではなく、各開発者が独自のデータベース (定期的に更新されたデータ ダンプを含む) を持っていることが最善だと思います。私は正しいですか、それとも間違っていますか?これらのアプローチのいずれかで問題が発生しましたか?
6 に答える
開発用にデータベースの独自のコピーを用意するのが好きです。これにより、他の人にどのように影響するかを心配することなく、物事を迅速に変更できる柔軟性が得られるからです。
ただし、すべての開発者がデータベースの独自のコピーをハッキングしている場合、最終的に全員の作業をまとめることはますます難しくなります。
開発者が日常の開発中にローカル コピーで作業できるようにすることで、両方の長所を活かすことができると思いますが、各開発者はおそらく、かなり定期的に自分の作業を共通のコピーにマージする必要があります。単体テストをたくさん書くことも役に立ちます。
私たちはすべての開発者 (20 人余り) の間で 1 つのデータベースを共有していますが、全員が独自のテーブルを持つように構造化されています。
アプリケーションを正しく構築すれば、開発者ごとに個別のデータベースは必要ありません。いずれにせよ使用するデータベースまたはテーブルプレフィックスを構成できる必要があるため、インスタンス間で簡単に移動できます (単体テスト、システムテスト、受け入れテスト、運用、災害復旧など)。
単一のデータベースを使用する利点は、メンテナンスのコストが償却されることです。DBA が大量のデータベースを処理しようとしているわけではありません (または、小規模な DB ショップの場合、すべての開発者が開発でよりよく利用されているときに独自のデータベースを維持しようとしているわけではありません)。
単一障害点があるのは良くないことですよね?
私は単一の共有データベースを好みます。しかし、それは状況と開発中のアプリケーションに大きく依存します。
私にとってうまくいくことは、あなたにとってうまくいかないかもしれません。あなたの腸と一緒に行きます。
Hibernate または休止状態ベースのプラットフォームを使用している場合は、サーバーの起動時にデータベースが作成されるように構成できます (create-drop オプション)。これは、クラスに新しい属性を追加するときに非常に便利です。この場合、各開発者は DB の独自のコピーを持っている必要があります。
DB 構造をまったく変更しない場合は、単一の共有 DB を使用できます。この 2 番目のケースでは必須ではありません。私は自分のやりたいことを何でもできる独自の DB を持つことを好みます。一方、DB を共有している場合、一部のクエリには多くの時間がかかる可能性があり、これはチーム全体に影響することを覚えておいてください。