MongoDB Jagamine: samm-sammult õpetus koos näitega

⚡ Nutikas kokkuvõte

MongoDB Sharding jagab suured andmekogumid väiksemateks alamhulkadeks, mis on jaotatud mitmele kohale. MongoDB eksemplare, vähendades protsessori koormust ükskõik millisel üksikul serveril. Killustatud klaster ühendab killud, konfiguratsiooniserveri ja ruuteri, et skaleerida salvestusruumi ja päringute läbilaskevõimet horisontaalselt.

  • 🧩 Põhikontseptsioon: Sharding jaotab ühe loogilise kogu paljude kildude vahel, kuid päringud käsitlevad andmeid ikkagi ühe kogumina.
  • 🏗️ Cluster Komponendid: Killustatud klaster vajab andmete jaoks kilde, metaandmete jaoks konfiguratsiooniserverit ja kliendi käskude suunamiseks ruuterit.
  • ⚙️ Rakendusvoog: Käivitage konfiguratsiooniserver, käivitage mongos ruuter, lisage killud ja seejärel lubage andmebaasis ja kollektsioonis killustamine.
  • 🔑 Kildvõti: Kildvõti määrab dokumentide leviku, seega on kõrge kardinaalsus ja isegi juurdepääsumustrid olulised.
  • 📈 Peamine kasu: Sharding pakub horisontaalset skaleeritavust, hajutades salvestusruumi ja töökoormust ühe serveri uuendamise asemel.

MongoDB Jagamine: samm-sammult õpetus koos näitega

Mis on Sharding in MongoDB?

Jagamine on mõiste MongoDB, mis jagab suured andmekogumid mitmeks väikeseks andmekogumiks MongoDB juhtumeid.

Mõnikord andmed sees MongoDB on nii tohutu, et päringud selliste suurte andmekogumite vastu võivad serveris põhjustada palju protsessori koormust. Selle olukorra lahendamiseks MongoDB sisaldab jagamise kontseptsiooni, mis on põhimõtteliselt andmekogumite jagamine mitmeks MongoDB juhtumeid.

Kogumik, mis võib olla mahukas, on tegelikult jagatud mitme kollektsiooni ehk killustiku (Shard) vahel. Loogiliselt võttes toimivad kõik killud ühe kollektsioonina.

Shardingi eelised MongoDB

Enne killustatud klastri rakendamist on kasulik mõista, miks meeskonnad killustamist kasutavad. Peamised eelised on järgmised:

  • Horisontaalne skaleeritavus: Andmed jaotatakse paljude tarbekaupade serverite vahel, selle asemel, et sundida ühte masinat aina suuremaks kasvama.
  • Suurem läbilaskevõime: Lugemis- ja kirjutamisoperatsioonid toimivad paralleelselt eri kihtide vahel, seega töötleb klaster sekundis rohkem päringuid.
  • Suurem salvestusmaht: Kõigi kildude kombineeritud ketas mahutab palju suuremaid andmekogumeid, kui üks server mahutada suudaks.
  • Suur kättesaadavus: Kui iga shard juurutatakse koopiakomplektina, siis ühe sõlme rike ei põhjusta klastri sulgemist.
  • Tasakaalustatud koormus: . MongoDB Balancer jaotab andmepakid automaatselt ümber, et vältida ühegi killu levialaks muutumist.

Need eelised koos muudavad killustamise skaleerimise standardmeetodiks MongoDB väljaspool ühe serveri piire.

Kuidas jagamist rakendada

Shardid rakendatakse klastrite abil, mis pole midagi muud kui rühm elemente MongoDB juhtumeid.

Shardi komponendid hõlmavad järgmist:

  1. Kild – See on põhiline asi ja see pole midagi muud kui a MongoDB eksemplar, mis sisaldab andmete alamhulka. Tootmiskeskkondades peavad kõik killud olema koopiakomplektide osad.
  2. Konfiguratsiooniserver - See on MongoDB eksemplar, mis sisaldab klastri metaandmeid, põhimõtteliselt teavet erinevate kohta MongoDB eksemplarid, mis hoiavad shardi andmeid.
  3. Ruuter - See on MongoDB eksemplar, mis põhimõtteliselt vastutab kliendi saadetud käskude suunamise eest õigetele serveritele.

Samm-sammult jagamine Cluster Näide

Step 1) Looge konfiguratsiooniserveri jaoks eraldi andmebaas.

mkdir /data/configdb

Step 2) Alusta MongoDB eksemplar konfiguratsioonirežiimis. Oletame, et meil on server nimega Server D, mis oleks meie konfiguratsiooniserver. Serveri konfigureerimiseks konfiguratsiooniserverina peaksime käivitama järgmise käsu.

mongod --configdb ServerD:27019

Step 3) Käivitage mongose ​​eksemplar, määrates konfiguratsiooniserveri.

mongos --configdb ServerD:27019

Step 4) Looge mongo kestast ühendus mongose ​​eksemplariga.

mongo --host ServerD --port 27017

Step 5) Kui klastrisse tuleb lisada server A ja server B, andke välja järgmised käsud.

sh.addShard("ServerA:27017")
sh.addShard("ServerB:27017")

Step 6) Luba andmebaasi killustamine. Seega, kui meil on vaja Employeedb andmebaasi killustada, andke allolev käsk.

sh.enableSharding("Employeedb")

Step 7) Luba kollektsiooni jaoks killustamine. Seega, kui meil on vaja töötajate kollektsiooni killustada, andke allolev käsk.

sh.shardCollection("Employeedb.Employee", { "Employeeid": 1, "EmployeeName": 1 })

Kuidas valida Shard Key'i MongoDB

Kildvõti on indekseeritud väli või väljade komplekt, mis MongoDB kasutab seda otsustamaks, millises killus iga dokumenti talletatakse. Kuna võti juhib andmete levitamist, on selle hea valimine killustatud juurutuse puhul kõige olulisem otsus. Halb võti koondab andmed ja liikluse ühele killule, tühistades killustamise eelised.

Tugeval kildvõtmel on üldiselt järgmised omadused:

  • Suur kardinaalsus: Väljal peaks olema palju võimalikke väärtusi, et andmeid saaks jagada paljudeks peeneteralisteks osadeks.
  • Madal sagedus: Ükski väärtus ei tohiks domineerida, vastasel juhul kuhjuvad seda väärtust jagavad dokumendid ühele killule.
  • Mittemonotoonne muutus: Alati suurenevad võtmed, näiteks ajatemplid, saadavad iga uue kirjutusoperatsiooni samale shardile, luues leviala.

MongoDB toetab kahte võtmel põhinevat killustamisstrateegiat. Vahemikus killustamine jagab andmed külgnevateks vahemikeks ja sobib vahemikupäringutele, samas kui räsitud killustamine rakendab räsifunktsiooni, et jaotada kirjutamisülesanded ühtlaselt killustiku vahel. Meeskonnad alustavad sageli räsitud killustamisega, kui kirjutamisülesanded on mahukad, ja lähevad üle vahemiku killustamisele, kui domineerivad vahemikupõhised lugemised. Olenemata sellest, millise strateegia valite, testige võtit enne kinnitamist realistlike päringumustrite suhtes, sest killustiku võtit ei saa pärast andmete laadimist hõlpsalt muuta.

Sharding vs replikatsioon MongoDB

Sharding ja replikatsioon on teineteist täiendavad, kuid erinevad funktsioonid. Allolev tabel toob esile erinevused, et saaksite neid mõlemaid õigesti rakendada ja praktikas tootmisklastrid mõlemat koos kasutada.

Aspekt Varjutamine replikatsioon
Eesmärk Horisontaalselt skaleeri andmete jagamise teel Kaitske andmeid ja hoidke need kättesaadavana
Andmed iga sõlme kohta Andmete alamhulk (üks kild) Andmete täielik koopia
Peamine kasu Rohkem salvestusruumi ja läbilaskevõimet Vea taluvus ja lugemise skaleerimine
Põhikomponendid Shardid, konfiguratsiooniserver, mongos ruuter Põhi- ja keskkooli liikmed

Lühidalt, killustamine vastab skaleerimise vajadusele, replikatsioon aga kättesaadavuse vajadusele ja jõuline juurutamine ühendab mõlemad.

KKK

Jah. Tehisintellekti tööriistad saavad analüüsida päringumustreid ja väljade kardinaalsust, et soovitada sobivaid kildvõtmeid ja hoiatada monotoonsete väljade eest. Kuna võtit on hiljem raske muuta, tuleks enne soovituste rakendamist neid reaalsete töökoormuste suhtes valideerida.

Jah. Tehisintellektil põhinev jälgimine saab track andmete kasvu, protsessori koormust ja päringute latentsust, et ennustada, millal üks server on ülekoormatud. See annab märku õigest hetkest killustamiseks, kuigi insenerid peaksid enne tegutsemist võimsusplaanid kinnitama.

Vahemikus jaotatud killustamine jagab andmed külgnevateks väärtusvahemikeks, mis sobib vahemiku päringuteks, kuid riskib ebaühtlaste tükkidega. Räsitud killustamine räsib võtit kirjutamistoimingute ühtlaseks jaotamiseks kildude vahel, parandades kirjutamistoimingute jaotust tõhusate vahemiku skaneeringute arvelt.

Jah. Luba andmebaasis sharding, veendu, et valitud shard-võtmel on indeks olemas, seejärel käivita nimeruumis funktsioon sh.shardCollection(). MongoDB hakkab olemasolevaid dokumente automaatselt saadaolevate kildude vahel tükkideks jaotama.

Võta see postitus kokku järgmiselt: