MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie definiere ich den Sharding-Bereich für jeden Shard in Mongo?

Du kannst. Es ist möglich, Chunks manuell vorzuteilen, wie hier beschrieben:http://www. mongodb.org/display/DOCS/Splitting+Chunks

Überlegen Sie genau, wie Sie Ihre Chunks aufteilen. Wenn Sie es schlecht machen, können Sie viele Leistungsprobleme bekommen, aber wenn Sie genug über Ihre Schlüssel wissen, können Sie viel gewinnen.

Wenn Sie dies tun, möchten Sie wahrscheinlich den Balancer ausschalten:

> use config
> db.settings.update({_id: "balancer"}, {$set: {stopped: true}}, true);

(Dies wird hier beschrieben:http://www.mongodb.org/display/DOCS /Sharding+Verwaltung )

Dies ist ein Beispiel dafür, wie Sie es tun könnten. Abhängig davon, was Sie genau tun möchten, müssen Sie es ändern (ich nehme an, Ihr Shard-Schlüssel heißt nicht x , und Ihr Bereich liegt nicht zwischen -1000 und 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"})

Die split Befehle erstellen die Chunks. Jeder Befehl teilt den Chunk mit dem mittleren Wert in zwei Teile, also teilt der erste den Chunk mit min_value -> max_value in min_value -> 0 und 0 -> max_value . Dann teilt der zweite Befehl den Chunk mit 1000, den zweiten Chunk, der durch den vorherigen Befehl erstellt wurde, in zwei neue Chunks. Nach diesem Befehl haben Sie drei Chunks:

  • min_value -> 0
  • 0 -> 1000
  • 1000 -> max_value

Die drei folgenden Befehle verschieben diese Chunks in separate Shards. Die Dokumentation sagt, dass der Befehl den Chunk verschieben wird, der den Wert in find enthält , also habe ich drei Werte ausgewählt, von denen ich weiß, dass sie sich in verschiedenen Chunks befinden, und diese verwendet (es gibt ein Symbol in BSON für min_key und max_key , aber ich bin mir nicht sicher, wie ich es in diesem Zusammenhang richtig verwenden soll).

Lesen Sie auch diese Seite http://www.mongodb.org/display/DOCS/Moving +Stücke