これはあなたのユースケースについてもっと知らずに答えるのは難しいですが、私はそれを試してみます。
シャーディングが必要なものであると確信していますか?あなたの挿入率はどのように見えますか?
静的なデータセット、または比較的静的なセットを使用する場合は、おそらくシャーディングする必要はありません。より多くのセカンダリを使用して、slaveOK読み取りを有効にすることができます。読み取りはさまざまなセカンダリに配布され、読み取り容量がスケールアップされます。
そうではなく、シャーディングする必要がある場合は、オプションがあります。ただし、最初に、自動シャーディングがどのように機能するかを簡単かつ大まかに説明します。
モンゴスプロセスは、一般的にチャンクの分割と移行を担当します。これらは、分割とバランシングの2つの別個の操作です。
- 分割は、最大チャンクサイズの特定の部分が書き込まれたことをモンゴスが認識したときに発生します。実際にそれを保証するのに十分なデータがある場合、分割が開始されます。時間の経過とともに、十分なデータが書き込まれると、チャンクの数が増えます。
- チャンクの不均衡がある場合にバランシングが発生します(現在、2.0では8ですが、2.2ではより動的なヒューリスティックに移行しています)。バランサーは、バランスがとれるまで、シャードの周りのチャンクを移動します。
したがって、バランサーがチャンクを適切に移動するために必要なチャンクを生成するには、最大チャンクサイズ(2.0ではデフォルトは64MB)に対して十分なデータを書き込む必要があります。それがあなたのデータで起こらないのであれば、あなたは見ることができます:
- チャンクサイズを小さくする(欠点もあります-http ://www.mongodb.org/display/DOCS/Sharding+Administration#ShardingAdministration-ChunkSizeConsiderations)
- チャンクを手動で分割/移動する
手動の手順については、以下を参照してください。
http://www.mongodb.org/display/DOCS/Splitting+Shard+Chunks
http://www.mongodb.org/display/DOCS/Moving+Chunks