MongoDB obravnava migracijo podatkov med drobci predvsem s postopkom, imenovanim selitve, ki je sestavni del arhitekture Sharding, zasnovane za enakomerno porazdelitev podatkov po več drobcih v grozdu. Šardiranje v MongoDB je metoda, ki se uporablja za vodoravno obseg baze podatkov z razdelitvijo podatkov na več strežnikov ali drobcev. Ta sistem uporablja ključ Shard, ki je polje ali niz polj v dokumentu, ki določa porazdelitev podatkov. Za upravljanje migracije podatkov med Shards MongoDB uporablja proces v ozadju, imenovan Balancer, ki optimizira porazdelitev podatkov s selitvijo območja podatkov (ali koščkov) po potrebi.
Pregled selitve grozda in koščkov
MongoDB deli zvrste zbirke na koščke, ki so sosednja območja ključnih vrednosti Shard. Vsak kos pripada določenemu ostrenju in ti koščki skupaj hranijo celoten nabor podatkov. Balancer spremlja porazdelitev koščkov po drobcih in seli koščke med drobci, da ohrani ravnotežje. Ta mehanizem migracije pomaga preprečiti žarišča, izboljšati uspešnost poizvedb in optimizirati uporabo virov.
Migracija koščkov je koristna v scenarijih, na primer, ko se v grozd dodajo novi drobci, ko podatki neenakomerno povzročajo neravnovesje, ali kadar je treba cone na novo definirati za lokacijo podatkov ali regulativne zahteve. Migracija deluje na ravni kose in premika celotno paleto vrednosti ključa Shard iz enega v drugega.
Podrobnosti o postopku migracije
MongoDB -ova migracija deluje v več fazah:
1. izbor kosa za premikanje: Balancer ali administrator izbere kos, ki potrebuje prerazporeditev na drug šard, da uravnoteži grozd.
2. Klonska faza: Donator Shard (tisti, ki trenutno drži kos), kopira vse dokumente v kos na prejemniku. V tem času se spremljajo tudi New Whites The Chon na donatorju.
3. Faza dohitevanja: Shard prejemnik uporablja vse zapise, ki so se zgodili med klonsko fazo, da bi zagotovili, da ima najsodobnejše podatke.
4. Kritični razdelek in zaveza: darovalec Shard vstopi v kritični razdelek, kjer so operacije pisanja na kos na kratko blokirane, lastništvo pa je atomsko preklopljeno na prejemnika.
5. Faza izbrisa: darovalec asinhrono odstrani dokumente, ki pripadajo preseljenemu delu, ko potrdi, da je prejemnik uspešno storil kos.
Balancer zagotavlja, da se naenkrat zgodi samo ena migracija na Shard, da se čim bolj zmanjša vpliv na uspešnost. Če so neodvisni, lahko izvaja več migracij vzporedno v različnih parih.
Avtomatski uravnoteževalec
Balancer deluje kot nit ozadja na primarnem vozlišču konfiguracijskega strežnika in nenehno spremlja stanje podatkov Shard. Sledi velikosti podatkov na kos, da ugotovi, ali so migracije potrebne v skladu s konfiguracijskim pragom ravnotežja. Kadar razlike v velikosti podatkov med drobci presežejo ta prag, Balancer sproži migracije.
Balancer deluje na večinoma pregleden način za aplikacije, vendar ga je mogoče začasno onemogočiti za vzdrževanje ali nastavitev. Prav tako spoštuje cone, konfigurirane v grozdu in zagotavljajo, da se koščki preselijo znotraj ustreznih meja cone.
Ukazi za ročno migracijo
Medtem ko Balancer avtomatizira selitev v kos, MongoDB omogoča tudi ročni nadzor z uporabo ukazov, kot sta `MoverChunk` in` Moverange`. Ti ukazi prisilijo migracijo določenih koščkov ali koščkov od ene škatle do drugega.
- `MoverChunk` se uporablja za migriranje kosa, ki vsebuje določeno vrednost ključa Shard na določeno shard. To je koristno za ciljno migracije za uravnoteženje obremenitve ali lokacijo podatkov.
- `Moverange` omogoča selitev sosednjega obsega ključev Shard, ki je uporabna za bolj zapletene strategije za ponovno uravnoteženje podatkov.
Administratorji lahko uporabijo te ukaze za predhodno delitev koščkov, da enakomerno distribuirajo podatke pred zaužitjem v velikem obsegu ali za reševanje napak migracije, ki jih povzroča uravnoteženje omejitev oken.
Ravnanje sirote z dokumenti in doslednostjo
Med in po selitvi in po njej lahko osiroteli dokumenti (dokumenti, ki ne pripadajo več dodeljenim razponom darovalca Sharda) začasno obstajajo na darovalcu, dokler jih ne očistijo.
MongoDB zagotavlja doslednost v celotni migraciji z uporabo operacij v zaporedju in z uporabo mehanizma za koordinacijo, ki blokira zapise med kritičnim razdelkom. Po selitvi sirota čiščenje deluje asinhrono, hkrati pa se izogiba motenju pri nenehnih poizvedbah.
Zagon MongoDB 5.3, Change Streams ne ustvarja dogodkov za posodobitve osirotenih dokumentov med selitvijo, da ohrani natančnost toka dogodkov.
Vpliv na uspešnost in delovanje
Migracije v koščkih prenašajo nadzemne stroške, vključno s porabo pasovne širine omrežja, CPU in V/I na disku, kar lahko vpliva na zmogljivost grozda. MongoDB ta vpliv zmanjšuje z:
- Omejitev udeležbe Sharda na eno migracijo hkrati.
- Migracije v čakalnih vrstah in omogočajo, da se faze izbrišejo, da se prekrivajo za hitrejše raztovarjanje.
- Uporaba možnosti za ugasnjenje za prilagoditev sočasnosti migracije in pisanje skrbi med selitvijo.
Migrirajoči podatki začasno vplivajo tudi na sekundarne branja, ki lahko zamudijo dokumente med fazo čiščenja sirote, zato morajo aplikacije to upoštevati pri načrtovanju njihovih poizvedb.
Migracije v določenih scenarijih
V primerih, kot so selitev podatkov med conami z razponi oznak ali od neokrnjenih do otrdnih nastavitev, MongoDB postopoma seli na podlagi posodobljenih strelov ali conah po rekonfiguraciji. Na primer, odstranjevanje starih razponov oznak in ustvarjanje novih sproži migracijo uravnoteženja, da ustrezno premakne podatke.
Pri selitvi grozdov MongoDB na rešitve, ki jih upravljajo v oblaku, ali med grozdnimi grozdi, migracijska orodja pogosto izvajajo selitev, ki se migrajo, kopirajo podatke o shardu posamično, hkrati pa vzdržujejo porazdelitve ključev Shard.
Orodja in pripomočki za migracijo
Storitve prenosa podatkov (DTS) in druga orodja tretjih oseb pomagajo pri migriranju podatkov med primerki MongoDB ali grozdi, ravnanje s preslikavo ostre, doslednost podatkov in postopnimi posodobitvami. Ta orodja pogosto podpirajo selitev iz neplačnih v grozdene grozde z dodeljevanjem privzetih vrednosti ključev Shard za izvorne podatke, ki nimajo tipk Shard.
Povzetek ključnih točk
- Podatke o mongoDB predeljuje v koščke, razporejene po škarjah s pomočjo Shard Keys.
- Balancer samodejno preseli koščke za vzdrževanje uravnotežene porazdelitve podatkov.
- Migracija vključuje kloniranje podatkov, zapisovanje, atomsko primoro in asinhrono čiščenje.
- Migracije so omejene na eno na Shard, da se zmanjša vpliv sistema.
- Ukazi za ročno migracijo zagotavljajo administrativni nadzor za distribucijo kosov.
- Sirote dokumente se očistijo asinhrono po selitvi.
- Migracija začasno vpliva na uspešnost in začasno doslednost sekundarnega branja.
- Migracija med conami ali spremembami v strelih Shard Key se obnaša s konfiguracijo, ki sproži migracije.
- Orodja za migracijo pomagajo pri gibanju podatkov med grozdi ali arhitekturami.
Ta selitveni mehanizem zagotavlja, da grozdi MongoDB ostanejo uravnoteženi, razširljivi in izvajajo, ko se podatki rastejo, razvijajo se konfiguracije grozdov, kar zagotavlja neprekinjeno razpoložljivost z minimalno motnjo v aplikacijah.