sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo definir el rango de fragmentación para cada fragmento en Mongo?

Puedes. Es posible dividir fragmentos previamente de forma manual, se describe aquí:http://www. mongodb.org/display/DOCS/Splitting+Chunks

Piensa cuidadosamente en cómo divides tus trozos. Si lo haces mal, puedes tener muchos problemas de rendimiento, pero si sabes lo suficiente sobre tus claves, puedes ganar mucho.

Si lo hace, probablemente quiera apagar el balanceador:

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

(esto se describe aquí:http://www.mongodb.org/display/DOCS /Administración+de fragmentación )

Este es un ejemplo de cómo podrías hacerlo. Dependiendo exactamente de lo que quiera hacer, tendrá que modificarlo (supongo que su clave de fragmento no se llama x , por ejemplo, y su rango no es -1000 a 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 los comandos crean los fragmentos. Cada comando divide el fragmento que contiene el valor medio en dos, por lo que el primero divide el fragmento que contiene min_value -> max_value en min_value -> 0 y 0 -> max_value . Luego, el segundo comando divide el fragmento que contiene 1000, el segundo fragmento creado por el comando anterior, en dos nuevos fragmentos. Después de ese comando tienes tres trozos:

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

Los tres comandos siguientes mueven estos fragmentos a fragmentos separados. Los documentos dicen que el comando moverá el fragmento que contiene el valor en find , así que elegí tres valores que sé que están en diferentes fragmentos y los usé (hay un símbolo en BSON para min_key y max_key , pero no estoy seguro de cómo usarlo correctamente en este contexto).

Lea esta página también http://www.mongodb.org/display/DOCS/Moving +Trozos