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.
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:
- 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.
- Konfiguratsiooniserver - See on MongoDB eksemplar, mis sisaldab klastri metaandmeid, põhimõtteliselt teavet erinevate kohta MongoDB eksemplarid, mis hoiavad shardi andmeid.
- 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.

