Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Suskirstyti klasteriai MongoDB


Suskirstyti klasteriai MongoDB


MongoDB Sharded Clusters: Išsamus vadovas

„MongoDB“ dalijimasis yra galingas būdas horizontaliai keisti ir paskirstyti duomenis keliuose serveriuose arba „skeveldose“. Šis metodas leidžia MongoDB tvarkyti didėjančias apkrovas ir pagerinti našumą padalijus duomenis į mažesnius gabalus ir paskirstant juos keliose skeveldrose. Norint efektyviai valdyti ir keisti duomenų bazių infrastruktūrą, labai svarbu suprasti suskaidytos klasterio komponentus.

Susmulkinto klasterio komponentai

1. Shards: šukės yra keičiamos horizontaliai, todėl galite pridėti daugiau šukių, kai jūsų duomenys auga, kad galėtumėte apdoroti didėjančias apkrovas. Kiekviena suskaidyto klasterio šukė gali būti kitame fiziniame kompiuteryje arba serveryje, paskirstant duomenis ir darbo krūvį keliuose mazguose. Atskirų dalių galima dinamiškai pridėti prie suskaidytos klasterio, todėl galėsite keisti duomenų bazės infrastruktūrą be prastovų.

2. Pagrindinis fragmentas: pirminis skeveldros priskyrimas pagrįstas duomenų bazės dydžiu kūrimo metu, bet vėliau, jei reikia, ją galima perskirstyti rankiniu būdu. Pirminė skeveldra yra atsakinga už su duomenų baze susijusių metaduomenų, pvz., kolekcijų sąrašo ir jų vietų, saugojimą. Jei pirminė skeveldra tampa nepasiekiama, MongoDB automatiškai parenka naują pagrindinę paveiktoms duomenų bazėms, kad užtikrintų nuolatinį veikimą.

3. Konfigūracijos serveriai: konfigūracijos serveriai saugo metaduomenis apie susmulkintą klasterį, įskaitant informaciją apie fragmentus, dalis ir grupių organizavimą. Jie palengvina administracines operacijas ir padeda išlaikyti klasterio nuoseklumą užtikrindami, kad visi klasterio mazgai turėtų vienodą metaduomenų vaizdą. Konfigūracijos serveriai tvarko autentifikavimo ir autorizacijos nustatymus, užtikrindami, kad tik įgalioti vartotojai ir programos galėtų pasiekti klasterį.

4. Mongos egzemplioriai: Mongos egzemplioriai veikia kaip sąsaja tarp kliento programų ir suskaidytos grupės. Jie tvarko užklausų nukreipimą, skeveldrų valdymą ir rezultatų agregavimą. Mongos egzemplioriai patys nesaugo duomenų, bet priklauso nuo metaduomenų kaupimo talpykloje iš konfigūracijos serverių, kad užklausos būtų efektyviai nukreiptos.

Kaip veikia dalijimasis

Kai sukuriamas suskaidytas klasteris, MongoDB automatiškai suskirsto duomenis į dalis ir paskirsto juos turimuose fragmentuose. Kiekvienas gabalas turi įtraukią apatinę ir išskirtinę viršutinę ribą, apibrėžiančią kiekvienoje skeveldoje saugomų skeveldrų raktų verčių diapazoną. Tai užtikrina tolygų duomenų paskirstymą ir efektyvų užklausų nukreipimą.

Užklausos optimizavimas suskaidytame klasteryje

Užklausų optimizavimas yra labai svarbus siekiant efektyvaus duomenų gavimo ir užklausos našumo suskaidytame klasteryje. „MongoDB“ pateikia įrankius ir komandas, skirtas valdyti pirmines skeveldras, pvz., komandą „sh.status()“, kad būtų galima peržiūrėti šukių būseną susmulkintame klasteryje. Be to, „MongoDB“ palaiko susmulkintas agregavimo užklausas, leidžiančias atlikti sudėtingų duomenų agregavimą keliose dalyse.

Skaldymas gabaliukais

Padalydami gabalus galite tiksliai sureguliuoti duomenų paskirstymą „MongoDB“ suskaidytame klasteryje. Aiškiai išskaidydami dalis galite valdyti kiekvienoje skeveldroje saugomų skilties raktų reikšmių diapazoną ir užtikrinti tolygų duomenų paskirstymą. Tai reiškia, kad reikia nustatyti reikšmę, pagal kurią norite padalinti dalį, ir naudoti komandą „sh.splitAt()“, kad dalis būtų padalinta norimame padalijimo taške.

Geriausia padalytų grupių praktika

1. Įdiekite konfigūracijos serverius kaip 3 narių kopijų rinkinį: užtikrinkite, kad konfigūracijos serveriai būtų įdiegti kaip 3 narių kopijų rinkinys, kad būtų užtikrintas aukštas pasiekiamumas ir atsparumas gedimams.

2. Įdiekite kiekvieną skeveldrą kaip 3 narių kopijų rinkinį: įsitikinkite, kad kiekviena skeveldra yra įdiegta kaip 3 narių kopijų rinkinys, kad būtų užtikrintas aukštas pasiekiamumas ir atsparumas gedimams.

3. Įdiekite vieną ar daugiau Mongos maršrutizatorių: įdiekite vieną ar daugiau mongos maršrutizatorių, kad galėtumėte tvarkyti užklausų nukreipimą ir skeveldrų valdymą.

4. Stebėkite našumą: stebėkite savo suskaidytos grupės našumą, įskaitant konfigūracijos serverių ir fragmentų našumą, kad užtikrintumėte optimalų našumą ir duomenų paskirstymą.

5. Naudokite suskirstytas apibendrinimo užklausas: naudokite susmulkintas kaupimo užklausas, kad atliktumėte sudėtingus duomenų agregavimus keliose dalyse, užtikrinant efektyvų duomenų apdorojimą ir analizę.

Išvada

„MongoDB“ dalijimas yra galingas būdas horizontaliai keisti ir paskirstyti duomenis keliuose serveriuose arba „skeveldose“. Norint efektyviai valdyti ir keisti duomenų bazių infrastruktūrą, labai svarbu suprasti suskaidytos klasterio komponentus ir tai, kaip veikia dalijimasis. Vadovaudamiesi geriausios praktikos pavyzdžiais ir optimizuodami užklausas, galite užtikrinti optimalų našumą ir duomenų paskirstymą suskaidytame klasteryje.

Citatos:
[1] https://www.mongodb.com/docs/manual/core/sharded-cluster-components/
[2] https://www.mongodb.com/docs/v6.2/core/sharded-cluster-components/
[3] https://www.geeksforgeeks.org/sharded-cluster-components-in-mongodb/
[4] https://www.squash.io/tutorial-on-database-sharding-in-mongodb/
[5] https://www.bmc.com/blogs/mongodb-sharding-explained/