あなたはできる。チャンクを手動で事前分割することは可能です。これについては、次のように説明されています: http://www。 mongodb.org/display/DOCS/Splitting+Chunks
チャンクをどのように分割するかを慎重に検討してください。うまくやらないと、パフォーマンスの問題がたくさん発生する可能性がありますが、キーについて十分に理解していれば、多くの問題が発生する可能性があります。
これを行う場合は、おそらくバランサーをオフにする必要があります:
> use config
> db.settings.update({_id: "balancer"}, {$set: {stopped: true}}, true);
(これはここで説明されています: http://www.mongodb.org/display/DOCS / Sharding + Administration )
これはあなたがそれを行う方法の例です。正確に何をしたいかに応じて、それを変更する必要があります(シャードキーの名前はx
ではないと思います) たとえば、範囲は-1000〜2000ではありません。
> use admin
> db.runCommand({split: "my_db.my_coll", middle: {x: 0}})
> db.runCommand({split: "my_db.my_coll", middle: {x: 1000}})
> db.runCommand({movechunk: "my_db.my_coll", find: {x: -1}, to: "shard_1_name"})
> db.runCommand({movechunk: "my_db.my_coll", find: {x: 0}, to: "shard_2_name"})
> db.runCommand({movechunk: "my_db.my_coll", find: {x: 1000}, to: "shard_3_name"})
split
コマンドはチャンクを作成します。各コマンドは、中央の値を含むチャンクを2つに分割するため、最初のコマンドは、min_value -> max_value
を含むチャンクを分割します。 min_value -> 0
に および0 -> max_value
。次に、2番目のコマンドは、前のコマンドによって作成された2番目のチャンクである1000を含むチャンクを、2つの新しいチャンクに分割します。そのコマンドの後に、3つのチャンクがあります:
-
min_value -> 0
-
0 -> 1000
-
1000 -> max_value
次の3つのコマンドは、これらのチャンクを別々のシャードに移動します。ドキュメントによると、コマンドはfind
の値を含むチャンクを移動します 、そこで、異なるチャンクにあることがわかっている3つの値を選択し、これらを使用しました(BSONにはmin_key
の記号があります) およびmax_key
、しかし、このコンテキストで適切に使用する方法がわかりません。
このページもお読みください