sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan definerer man skæringsområde for hvert skær i Mongo?

Du kan. Det er muligt at forudopdele bidder manuelt, det er beskrevet her:http://www. mongodb.org/display/DOCS/Splitting+Chunks

Tænk grundigt over, hvordan du deler dine bidder. Hvis du gør det dårligt, kan du få masser af ydeevneproblemer, men hvis du ved nok om dine nøgler, kan du vinde meget.

Hvis du gør det, vil du sandsynligvis slukke balanceren:

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

(dette er beskrevet her:http://www.mongodb.org/display/DOCS /Sharding+Administration )

Dette er et eksempel på, hvordan du kan gøre det. Afhængigt af præcis hvad du vil gøre, bliver du nødt til at ændre det (jeg antager, at din shard-nøgle ikke hedder x , for eksempel, og dit interval er ikke -1000 til 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 kommandoer skaber bidderne. Hver kommando opdeler den del, der indeholder den midterste værdi, i to, så den første deler den del, der indeholder min_value -> max_value ind i min_value -> 0 og 0 -> max_value . Derefter opdeler den anden kommando den chunk, der indeholder 1000, den anden chunk skabt af den forrige kommando, i to nye bidder. Efter den kommando har du tre bidder:

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

De tre følgende kommandoer flytter disse bidder til separate skår. Dokumenterne siger, at kommandoen vil flytte den del, der indeholder værdien i find , så jeg valgte tre værdier, jeg ved er i forskellige bidder, og brugte disse (der er et symbol i BSON for min_key og max_key , men jeg er ikke sikker på, hvordan man bruger det korrekt i denne sammenhæng).

Læs også denne side http://www.mongodb.org/display/DOCS/Moving +Klumper




  1. Batch-indsæt MongoDB og NodeJs

  2. Bedste måde at organisere underdokumenter på i Mongo?

  3. Redis er single-threaded, hvordan gør det så samtidig I/O?

  4. Mongo / Mongoose - Aggregering efter dato