Co to jest fragmentowanie w MongoDB?
Sharding to koncepcja w MongoDB, która dzieli duże zestawy danych na małe zestawy danych w wielu wystąpieniach MongoDB.
Czasami dane w MongoDB będą tak ogromne, że zapytania dotyczące takich dużych zbiorów danych mogą powodować duże obciążenie procesora na serwerze. Aby poradzić sobie z tą sytuacją, MongoDB ma koncepcję Sharding, która w zasadzie polega na dzieleniu zestawów danych na wiele instancji MongoDB.
Kolekcja, która może mieć duży rozmiar, jest w rzeczywistości dzielona na wiele kolekcji lub odłamków, jak się nazywają. Logicznie rzecz biorąc, wszystkie fragmenty działają jako jedna kolekcja.
Jak zaimplementować fragmentację
Shardy są implementowane przy użyciu klastrów, które są niczym innym jak grupą instancji MongoDB.
Składniki Shard obejmują
- A Shard - to podstawowa rzecz, a to nic innego jak instancja MongoDB, która przechowuje podzbiór danych. W środowiskach produkcyjnych wszystkie fragmenty muszą być częścią zestawów replik.
- Serwer konfiguracji - jest to instancja mongodb, która przechowuje metadane dotyczące klastra, w zasadzie informacje o różnych instancjach mongodb, które będą przechowywać dane fragmentu.
- Router - jest to instancja mongodb, która zasadniczo jest odpowiedzialna za przekierowanie poleceń wysyłanych przez klienta na właściwe serwery.
Przykład klastra Sharding Step by Step
Krok 1) Utwórz oddzielną bazę danych dla serwera konfiguracji.
mkdir /data/configdb
Krok 2) Uruchom instancję mongodb w trybie konfiguracji. Załóżmy, że jeśli mamy serwer o nazwie Serwer D, który byłby naszym serwerem konfiguracji, musielibyśmy uruchomić poniższe polecenie, aby skonfigurować serwer jako serwer konfiguracji.
mongod -configdb ServerD: 27019
Krok 3) Uruchom instancję mongos, określając serwer konfiguracji
mongos -configdb ServerD: 27019
Krok 4) Z powłoki mongo połącz się z instancją mongo
mongo -host ServerD -port 27017
Krok 5) Jeśli masz serwer A i serwer B, które należy dodać do klastra, wydaj poniższe polecenia
sh.addShard("ServerA:27017")sh.addShard("ServerB:27017")
Krok 6) Włącz fragmentowanie dla bazy danych. Więc jeśli potrzebujemy shardować bazę danych Employeedb, wydaj poniższe polecenie
sh.enableSharding(Employeedb)
Krok 7) Włącz fragmentowanie dla kolekcji. Jeśli więc musimy odłamać kolekcję Employee, wydaj poniższe polecenie
Sh.shardCollection("db.Employee" , { "Employeeid" : 1 , "EmployeeName" : 1})
Podsumowanie:
- Jak wyjaśniono w samouczku, dzielenie na fragmenty to koncepcja w MongoDB, która dzieli duże zestawy danych na małe zestawy danych w wielu instancjach MongoDB.