sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur definierar man skärningsintervall för varje skärva i Mongo?

Du kan. Det är möjligt att fördela upp bitar manuellt, det beskrivs här:http://www. mongodb.org/display/DOCS/Splitting+Chunks

Tänk noga på hur du delar upp dina bitar. Om du gör det dåligt kan du få många prestandaproblem, men om du vet tillräckligt om dina nycklar kan du vinna mycket.

Om du gör det vill du antagligen stänga av balanseringen:

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

(detta beskrivs här:http://www.mongodb.org/display/DOCS /Sharding+Administration )

Det här är ett exempel på hur du kan göra det. Beroende på exakt vad du vill göra måste du ändra det (jag antar att din skärvnyckel inte heter x , till exempel, och ditt intervall är inte -1000 till 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 kommandon skapar bitarna. Varje kommando delar upp biten som innehåller mittvärdet i två, så det första delar upp delen som innehåller min_value -> max_value till min_value -> 0 och 0 -> max_value . Sedan delar det andra kommandot upp biten som innehåller 1000, den andra biten skapad av det föregående kommandot, i två nya bitar. Efter det kommandot har du tre bitar:

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

De tre följande kommandona flyttar dessa bitar till separata skärvor. Dokumenten säger att kommandot kommer att flytta den bit som innehåller värdet i find , så jag valde tre värden som jag vet finns i olika bitar och använde dessa (det finns en symbol i BSON för min_key och max_key , men jag är inte säker på hur man använder den på rätt sätt i det här sammanhanget).

Läs den här sidan också http://www.mongodb.org/display/DOCS/Moving +Klumpar




  1. hur man konverterar hex-sträng till ObjectId i Python

  2. Tillvägagångssätt för att lagra geospatial data i Redis

  3. Det går inte att uppdatera Inner Arraylist-objekt med Mongodb Java Driver

  4. MongoDB varva ner flera arrayer