質問

私のプロジェクトの一部の人々は、共通の開発データベースを使用し、それに接続する全員が最高のものであると考えているようです。そうではなく、各開発者が独自のデータベース(定期的に更新されるデータダンプを持っている)を持っているのが最適だと思います。私は正しいか間違っていますか?これらのアプローチのいずれかで問題が発生しましたか?

役に立ちましたか?

解決

ディスク容量とCPUは、すべての開発者がデータベースの独自のインスタンスを実行できるように十分に安くする必要があります。バージョン管理下で自動ビルドが行われます。これは、他の開発者の同時ハッキングとは別に、開発者がデータベースのハッキングを大胆に行えるようにするために必要です。

もちろん、プライベートインスタンスに加えた変更は、ビルドプロセス中に自動的に適用できる場合を除き、他の誰にも役に立たないということです。 そのため、アプリケーションコードは、 DDL

データベース定義をプロジェクトコードの別の部分として扱い、変更とリファクタリングを調整する理論と実践に関する優れたガイドについては、リファクタリングデータベース:進化的データベース設計、スコットW.アンブラーとプラモドサダラージ。

他のヒント

開発用のデータベースの独自のコピーを持っているのが好きです。なぜなら、他の人にどのように影響するかを心配することなく、物事を迅速に変更できる柔軟性が得られるからです。

ただし、すべての開発者が自分のデータベースのコピーをハッキングしている場合、最終的に全員の作業をマージすることはますます難しくなります。

日々の開発中に開発者がローカルコピーで作業できるようにすることで、両方の長所を最大限に活用できると思いますが、各開発者はほぼ定期的に作業を共通のコピーにマージする必要があります。多くの単体テストを書くことも役立ちます。

すべての開発者(20奇数)で単一のデータベースを共有しますが、全員が独自のテーブルを持つように構造化されています。

アプリケーションの権利を構築する場合、開発者ごとに別個のデータベースを必要としない。とにかく使用するデータベースまたはテーブルプレフィックスを構成できるようにして、インスタンス間で簡単に移動できるようにします(ユニットテスト、システムテスト、受け入れテスト、本番、災害復旧など)。

単一のデータベースを使用する利点は、メンテナンスの費用が償却されることです。多くのデータベースを処理しようとしているDBAがいません(または、小規模DBショップの場合、開発に活用するときにすべての開発者が独自のデータベースを維持しようとしているわけではありません)。

単一障害点があるのは良いことではありませんか?

単一の共有データベースが好ましいです。しかし、それは状況と開発中のアプリケーションに大きく依存しています。

私のために働くものはあなたのために働かないかもしれないあなたの腸で行きます。

Hibernateまたは任意のhibernateベースのプラットフォームで作業している場合、サーバーの起動時に作成されるようにデータベースを構成できます(作成ドロップオプション)。これは、クラスに新しい属性を追加するときに非常に便利です。この場合、各開発者は独自のDBのコピーを持っている必要があります。

DB構造をまったく変更しない場合は、単一の共有DBを使用できます。 この2番目のケースでは必須ではありません。私は自分が望むことを何でもできる独自のDBを持つことを好みます。一方、一部のクエリには時間がかかる可能性があり、DBを共有している場合はチーム全体に影響することに注意してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top