MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como definir o intervalo de fragmentação para cada fragmento no Mongo?


Você pode. É possível pré-dividir os pedaços manualmente, está descrito aqui:http://www. mongodb.org/display/DOCS/Splitting+Chunks

Pense cuidadosamente sobre como você divide seus pedaços. Se você fizer isso mal, poderá ter muitos problemas de desempenho, mas se souber o suficiente sobre suas chaves, poderá ganhar muito.

Se você fizer isso, provavelmente desejará desligar o balanceador:
> use config
> db.settings.update({_id: "balancer"}, {$set: {stopped: true}}, true);

(isso está descrito aqui:http://www.mongodb.org/display/DOCS /Sharding+Administração )

Este é um exemplo de como você pode fazer isso. Dependendo exatamente do que você deseja fazer, você terá que modificá-lo (suponho que sua chave de fragmentação não tenha o nome x , por exemplo, e seu intervalo não for -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"})

A split comandos criam os pedaços. Cada comando divide o pedaço contendo o valor do meio em dois, então o primeiro divide o pedaço contendo min_value -> max_value em min_value -> 0 e 0 -> max_value . Em seguida, o segundo comando divide o fragmento contendo 1000, o segundo fragmento criado pelo comando anterior, em dois novos fragmentos. Após esse comando, você tem três partes:
  • min_value -> 0
  • 0 -> 1000
  • 1000 -> max_value

Os três comandos a seguir movem esses fragmentos para fragmentos separados. Os documentos dizem que o comando moverá o pedaço que contém o valor em find , então escolhi três valores que sei que estão em partes diferentes e os usei (há um símbolo em BSON para min_key e max_key , mas não tenho certeza de como usá-lo corretamente neste contexto).

Leia esta página também http://www.mongodb.org/display/DOCS/Moving +Pedaços