sql >> Database >  >> NoSQL >> MongoDB

Hoe het sharding-bereik voor elke shard in Mongo te definiëren?

Jij kan. Het is mogelijk om chunks handmatig vooraf te splitsen, dit wordt hier beschreven:http://www. mongodb.org/display/DOCS/Splitting+Chunks

Denk goed na over hoe je je brokken verdeelt. Als je het slecht doet, kun je veel prestatieproblemen krijgen, maar als je genoeg weet over je sleutels, kun je veel winnen.

Als u dit doet, wilt u waarschijnlijk de balancer uitschakelen:

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

(dit wordt hier beschreven:http://www.mongodb.org/display/DOCS /Sharding+Administratie )

Dit is een voorbeeld van hoe je het zou kunnen doen. Afhankelijk van wat u precies wilt doen, moet u het wijzigen (ik neem aan dat uw shard-sleutel niet de naam x heeft , bijvoorbeeld, en uw bereik is niet -1000 tot 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"})

De split commando's maken de chunks. Elk commando splitst het blok met de middelste waarde in tweeën, dus de eerste splitst het blok met min_value -> max_value in min_value -> 0 en 0 -> max_value . Vervolgens splitst de tweede opdracht het stuk met 1000, het tweede stuk dat door het vorige commando is gemaakt, in twee nieuwe stukken. Na dat commando heb je drie chunks:

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

Met de drie volgende opdrachten worden deze chunks naar afzonderlijke scherven verplaatst. De documenten zeggen dat het commando het stuk met de waarde in find zal verplaatsen , dus ik koos drie waarden waarvan ik weet dat ze in verschillende brokken zitten en gebruikte deze (er is een symbool in BSON voor min_key en max_key , maar ik weet niet zeker hoe ik het in deze context goed moet gebruiken).

Lees ook deze pagina http://www.mongodb.org/display/DOCS/Moving +Brokken




  1. Zoek uit of een zoekopdracht een index in MongoDB gebruikt

  2. Meteor:onverwachte mongo exit code null. Opnieuw opstarten. Wat is dit?

  3. Hoe het _id-veld in een mongodb-document bij te werken

  4. MongoDB $pullAll