Čo je to zdieľanie v MongoDB?
Sharding je koncept v MongoDB, ktorý rozdeľuje veľké množiny údajov na malé množiny údajov vo viacerých inštanciách MongoDB.
Niekedy budú dáta v rámci MongoDB také obrovské, že dotazy na také veľké množiny dát môžu spôsobiť veľké využitie procesora na serveri. Na riešenie tejto situácie má MongoDB koncept Sharding, čo je v podstate rozdelenie množín údajov medzi viaceré inštancie MongoDB.
Zbierka, ktorá môže byť veľká, je v skutočnosti rozdelená do viacerých zbierok alebo črepov, ako sa nazývajú. Logicky všetky črepy fungujú ako jedna kolekcia.
Ako implementovať rozdelenie
Črepy sa implementujú pomocou klastrov, ktoré nie sú ničím iným ako skupinou inštancií MongoDB.
Medzi komponenty Shard patria
- Črep - Toto je základná vec a nejde o nič iné ako inštanciu MongoDB, ktorá obsahuje podmnožinu údajov. V produkčných prostrediach musia byť všetky zlomky súčasťou replík.
- Konfiguračný server - Toto je inštancia mongodb, ktorá obsahuje metaúdaje o klastri, v podstate informácie o rôznych inštanciách mongodb, ktoré budú obsahovať údaje o zlomku.
- Router - Toto je inštancia mongodb, ktorá je v zásade zodpovedná za presmerovanie príkazov odoslaných klientom na správne servery.
Príklad zhluku s rozdelením na krok za krokom
Krok 1) Vytvorte samostatnú databázu pre konfiguračný server.
mkdir /data/configdb
Krok 2) Spustite inštanciu mongodb v konfiguračnom režime. Predpokladajme, že ak máme server s názvom Server D, ktorý by bol naším konfiguračným serverom, na konfiguráciu servera ako konfiguračného servera by sme museli spustiť nasledujúci príkaz.
mongod -configdb ServerD: 27019
Krok 3) Spustite inštanciu mongos zadaním konfiguračného servera
mongos -configdb ServerD: 27019
Krok 4) Z shellu mongo sa pripojte k inštancii mongo
mongo -host ServerD -port 27017
Krok 5) Ak máte server A a server B, ktoré je potrebné pridať do klastra, zadajte nasledujúce príkazy
sh.addShard("ServerA:27017")sh.addShard("ServerB:27017")
Krok 6) Povoľte zdieľanie údajov pre databázu. Takže ak potrebujeme rozdeliť databázu Employeedb, zadajte nasledujúci príkaz
sh.enableSharding(Employeedb)
Krok 7) Povoľte zdieľanie dát. Takže ak potrebujeme rozdeliť kolekciu Employee, zadajte nasledujúci príkaz
Sh.shardCollection("db.Employee" , { "Employeeid" : 1 , "EmployeeName" : 1})
Zhrnutie:
- Ako je vysvetlené v tutoriále, Sharding je koncept v MongoDB, ktorý rozdeľuje veľké množiny údajov na malé množiny údajov vo viacerých inštanciách MongoDB.