私はMongoの私のコレクションを破るための正しいアプローチについて、他の多くの人が考えているように思えます。主な質問は、どのように自動シャーディングが機能するかです。
The official doc says - "MongoDB scales horizontally via an auto-sharding (partitioning) architecture" and "To partition a collection, we specify a shard key pattern." with note "It is important to choose the right shard key for a collection" :).
http://www.mongodb.org/display/DOCS/Sharding+Introduction#ShardingIntroduction-ShardKeys
http://www.mongodb.org/display/DOCS/Choosing+a+Shard+Key
今問題は - "これは正しいキーです"(ObjectIDによるシャーディング)ですか?
db.runCommand({ shardcollection : "test", key : { _id : 1 }})
モンゴの内部ではどうなりますか?この場合、Mongoはどのようにデータをチャンクに分割しますか?私は最初に2つのシャードサーバーを持つ10ミリリットルのレコードを持っていると仮定します。コレクションが20ミリリットルのレコードに達したら2つのシャードサーバーを追加したい場合、モンゴサイドではどうなりますか?私はMongo関連の情報源のどこにいてもその詳細レベルを見つけることができませんでした。
Taking into account random nature of autogenerated _id and it's structure,
... http://www.mongodb.org/display/DOCS/Object+IDs .. 。
私はチャンクを2〜3バイトの値で分割した最下位バイト(rtl順)で分割します - これは2 ^ Nのシャードサーバー - 2,4,8、..、256シャードサーバーで簡単にシャードする方法を提供します各シャードに多かれ少なかれ負荷がかかり、必要最小限の構成で済みます。私が理解する限り、Mongoは明示的に定義された範囲でシャーディング/チャンクだけをサポートし、私の考えは機能しません。本当ですか?