2012-01-11 5 views
1

MongoDBはマスタースレーブレプリケーションを使用します。つまり、すべての書き込みが単一のマスターノードに移動します(スレーブは単なるバックアップまたはスタンバイであり、絶対に最新である必要はありません)。Mongoが書いているように、物理サーバよりも多くの断片を持つことは理にかなっていますか?

MongoDBには、データを複数の断片に分割するシャーディングもあります。各断片は独自のレプリケーションセット(つまり、独自のマスター)を持っています。その結果、書き込みが断片全体に均等に分散されると、書き込みパフォーマンスが向上します。

これまではシャーディングをスケールアウトオプションとみなしていました。シャードをホストするマシンを増やしてください。

書き込みを広げるために複数のシャードを同じマシンに置くことは理にかなっていますか?ほとんどの場合

Machine A: [Shard A Master] [Shard B Replica] 
Machine B: [Shard B Master] [Shard C Replica] 
Machine C: [Shard C Master] [Shard A Replica] 
+0

私はちょうど2泊前にmongodbサイトのシャーディングとレプリケーションのビデオを見ました。本当に素晴らしい情報。これは、ドライブのRAID5構成のように聞こえます。各ドライブには、他のドライブのパリティ情報が含まれています。これに何らかの利点があるかどうかを知ることにも興味があります。 – jdi

+0

私の勘違いは、それがマスターに利用可能なRAMを減らすのを減らすので、おそらく良い考えではないということです。 MongoはRAMが好きです。 – Thilo

+0

システムにたくさんのラムがあったとしても、多分問題ではないでしょうか? – jdi

答えて

1

、(レプリカセットとして、または異なる断片のためのシャードサーバなどのいずれか)の物理マシンごとに複数mongodプロセスを実行するマシンごとに単一mongodを実行に比べ書き込み性能を増加させません。 MongoDBは、データの「ワーキングセット」(頻繁にアクセスされるデータ)とインデックスがRAM内に収まる限り、並行書き込みシナリオでは非常にうまく機能します。mongodがマシン1台しかない場合、mongodはすべてのRAM;もしあなたがそれ以上持っていれば、彼らは最終的に限られた資源のためにお互いに争うでしょう。

特殊な状況では、物理マシンに余分な容量が多い場合は、マシン上で利用可能なリソースをより有効に活用できるため、複数のmongodを実行すると効果的です。

+0

"同時書き込みシナリオではMongoDBは非常にうまく動作します"。 RAMに完全にデータセットが期待するスループットのベンチマークはありますか(ジャーナリングが有効な場合)? – Thilo

+0

ベンチマークは、システムの変数(読み取り/書き込みミックス、文書サイズ、書き込み頻度、合計データサイズなど)に非常に依存しているため、困難です。アプリケーションの現実的なデータを使用してテストをロードすることをお勧めします。 – dcrosta

関連する問題