MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak zdefiniować zakres shardingu dla każdego sharda w Mongo?

Możesz. Możliwe jest wstępne dzielenie porcji ręcznie, jest to opisane tutaj:http://www. mongodb.org/display/DOCS/Podział+kawałki

Zastanów się dokładnie, jak dzielisz swoje kawałki. Jeśli zrobisz to źle, możesz mieć wiele problemów z wydajnością, ale jeśli wiesz wystarczająco dużo o swoich kluczach, możesz wiele zyskać.

Jeśli to zrobisz, prawdopodobnie chcesz wyłączyć balanser:

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

(jest to opisane tutaj:http://www.mongodb.org/display/DOCS /Sharding+Administracja )

To jest przykład tego, jak możesz to zrobić. W zależności od tego, co dokładnie chcesz zrobić, będziesz musiał to zmodyfikować (zakładam, że Twój klucz sharda nie ma nazwy x , na przykład, a zakres nie wynosi od -1000 do 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 polecenia tworzą porcje. Każde polecenie dzieli porcję zawierającą środkową wartość na dwie, więc pierwsza dzieli porcję zawierającą min_value -> max_value na min_value -> 0 i 0 -> max_value . Następnie drugie polecenie dzieli porcję zawierającą 1000, drugą porcję utworzoną przez poprzednie polecenie, na dwie nowe porcje. Po tym poleceniu masz trzy porcje:

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

Trzy poniższe polecenia przenoszą te porcje do oddzielnych fragmentów. Dokumentacja mówi, że polecenie przeniesie porcję zawierającą wartość w find , więc wybrałem trzy wartości, o których wiem, że są w różnych porcjach i użyłem ich (w BSON jest symbol dla min_key i max_key , ale nie jestem pewien, jak go właściwie używać w tym kontekście).

Przeczytaj też tę stronę http://www.mongodb.org/display/DOCS/Moving +Części




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Odróżnianie się od kolekcji w mongodb

  2. czy procedura istnieje w mongodb?

  3. Najpopularniejsze bazy danych NoSQL obsługiwane przez ClusterControl

  4. Filtruj zagnieżdżoną tablicę z warunkami na podstawie wielopoziomowych wartości obiektów i aktualizuj je - agregat MongoDB + aktualizacja

  5. MongoDB $atan2