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

Come definire l'intervallo di sharding per ogni shard in Mongo?

Puoi. È possibile pre-dividere i blocchi manualmente, è descritto qui:http://www. mongodb.org/display/DOCS/Splitting+Chunks

Pensa attentamente a come dividi i tuoi pezzi. Se lo fai male puoi avere molti problemi di prestazioni, ma se conosci abbastanza le tue chiavi puoi guadagnare molto.

Se lo fai probabilmente vorrai disattivare il bilanciatore:

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

(questo è descritto qui:http://www.mongodb.org/display/DOCS /Sharding+Amministrazione )

Questo è un esempio di come potresti farlo. A seconda di esattamente cosa vuoi fare, dovrai modificarlo (presumo che la tua chiave shard non sia denominata x , ad esempio, e il tuo intervallo non è compreso tra -1000 e 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"})

La split i comandi creano i blocchi. Ogni comando divide in due il blocco contenente il valore medio, quindi il primo divide il blocco contenente min_value -> max_value in min_value -> 0 e 0 -> max_value . Quindi il secondo comando divide il blocco contenente 1000, il secondo blocco creato dal comando precedente, in due nuovi blocchi. Dopo quel comando hai tre blocchi:

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

I tre comandi seguenti spostano questi blocchi in frammenti separati. I documenti dicono che il comando sposterà il pezzo contenente il valore in find , quindi ho scelto tre valori che so essere in blocchi diversi e li ho usati (c'è un simbolo in BSON per min_key e max_key , ma non sono sicuro di come utilizzarlo correttamente in questo contesto).

Leggi anche questa pagina http://www.mongodb.org/display/DOCS/Moving +Pezzi