sql >> Databáze >  >> NoSQL >> MongoDB

Jak definovat rozsah shardingu pro každý shard v Mongo?

Můžeš. Je možné předrozdělit kousky ručně, je to popsáno zde:http://www. mongodb.org/display/DOCS/Splitting+Chunks

Dobře si rozmyslete, jak rozdělíte své kousky. Pokud to uděláte špatně, můžete mít spoustu problémů s výkonem, ale pokud budete o svých klíčích vědět dost, můžete hodně získat.

Pokud to uděláte, pravděpodobně budete chtít vypnout balancer:

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

(toto je popsáno zde:http://www.mongodb.org/display/DOCS /Sharding+Administrace )

Toto je příklad toho, jak to můžete udělat. V závislosti na tom, co přesně chcete udělat, jej budete muset upravit (předpokládám, že váš shard klíč se nejmenuje x , například a váš rozsah není -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"})

split příkazy vytvářejí bloky. Každý příkaz rozdělí blok obsahující střední hodnotu na dva, takže první rozdělí blok obsahující min_value -> max_value do min_value -> 0 a 0 -> max_value . Potom druhý příkaz rozdělí blok obsahující 1000, druhý blok vytvořený předchozím příkazem, na dva nové bloky. Po tomto příkazu máte tři části:

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

Následující tři příkazy přesunou tyto kousky do samostatných úlomků. Dokumenty říkají, že příkaz přesune blok obsahující hodnotu v find , takže jsem vybral tři hodnoty, o kterých vím, že jsou v různých částech, a použil jsem je (v BSON je symbol pro min_key a max_key , ale nejsem si jistý, jak jej v tomto kontextu správně použít).

Přečtěte si také tuto stránku http://www.mongodb.org/display/DOCS/Moving +Kousky




  1. Jaká je syntaxe pro Dates v MongoDB běžící na MongoLab?

  2. Fulltextové vyhledávání v MongoDB nepřináší očekávaný výsledek pro @@@

  3. Najděte objekty mezi dvěma daty MongoDB

  4. MongoDB nekonečné Najít ToListAsync