1

チームのサンドボックス環境の設定で発生している問題に対して、コミュニティが最も推奨するものは何かと思います。

現在、テスト環境とデプロイメント環境にそれぞれ3つのメンバーレプリカセットである2つの別々のMongoDBインスタンスを使用しています。テスト環境内のすべてのデータは大部分が使い捨てであり、アプリケーションの単体テストの過程で開発者によって作成されただけであることは、内部的にはかなり理解されています。

開発チームに、実際のライブデータを使用してテストする新しいオプションを提供したいと思いますが、別の安全なサンドボックスインスタンスでテストします。最初は、このcopyDatabaseコマンドを使用して、毎晩データを新しいデータベースに複製し、個々の開発者アプリサーバーをこのデータベースに接続できると考えていました。問題は、システムに大量のGridFSデータがあり、このように複製すると大量のディスクI / Oが無駄になり、より小さなクラウドインスタンスで実行されていることです。

特に、より適切な代替手段がある場合は、このルートに進むことを警戒しています。

たとえば、これまでスレーブとしてのみ動作するデプロイメントレプリカセットの4番目のメンバーをセットアップし、すべてのクエリをその個々のノードに設定slaveOkay = Trueして、その個々のノードに対してテストを実行することは可能ですか?これは他のメンバーに伝播しますか?挿入はどのように処理されますか?

私が提案していることは、特に転送がネットワークを通過する必要があり、ネットワーク転送も無駄にする場合は、実用的でない可能性があります。誰かが同様の問題を解決しなければならなかったことがありますか?ありがとう!

4

1 に答える 1

2

スレーブは読み取り専用です。すべての書き込みはマスターに送信する必要があります。これにより、「4番目のスレーブ」オプションが除外されます。

テスト目的で、すべての gridfs データを含むデータベースの正確なコピーが本当に必要ですか? 「重い」データの関連部分のみをコピーしようとします。これは除外されdb.copyDatabase()ます :)代わりにmongodump/を実行してください。mongorestore

また、テスト データベースとステージング データベースは別のデータベースにする必要があることも指摘しておきます。テスト データベースは単体テストに使用されます (模擬/生成されたデータを使用)。ステージング データベースには本番データが入力され、統合/受け入れテストに使用されます。

于 2012-05-21T13:11:50.543 に答える