MongoDB tegeleb andmeside migratsiooniga kildade vahel peamiselt protsessi kaudu, mida nimetatakse tükkide migratsiooniks, mis on lahutamatu osa kildede arhitektuurist, mille eesmärk on levitada andmeid ühtlaselt klastris mitme kildu vahel. MongoDB -s on varitsemine meetod, mida kasutatakse andmebaasi horisontaalselt skaleerimiseks, jaotades andmed mitme serveri või kildude vahel. See süsteem kasutab shard võtit, mis on andmete jaotuse määrava dokumendi välja või väljade komplekt. Kilbide vahelise andmete migratsiooni haldamiseks kasutab MongoDB taustprotsessi, mida nimetatakse tasakaalustajaks, mis optimeerib andmete jaotust, migreerides vajadusel andmevahemikke (või tükke).
Kardeeritud klastri ja tüki migratsiooni ülevaade
MongoDB jagab kilbitud kollektsioonid tükkideks, mis on külgnevad vardavahemikud. Iga tükk kuulub konkreetsesse kilpi ja need tükid hoiavad ühiselt kogu andmestikku. Tasakaalustaja jälgib tükkide jaotust kildude vahel ja rändab tasakaalu säilitamiseks kildude vahel. See rändemehhanism aitab vältida levialasid, parandada päringu jõudlust ja optimeerida ressursside kasutamist.
Tükk -ränne on kasulik stsenaariumides, näiteks kui klastrisse lisatakse uusi kilde, kui andmed kasvavad ebaühtlaselt, põhjustades tasakaalustamatust, või kui tsoonid tuleb andmepaiga või regulatiivsete nõuete jaoks uuesti määratleda. Ränne töötab tükitasemel, liigutades terve variandi variandi võtmeväärtused ühest kilbist teise.
Migratsiooniprotsessi üksikasjad
Mongodbi tükk ränne töötab mitmes etapis:
1. kolimiseks tükk: tasakaalustaja või administraator valib tüki, mis vajab klastri tasakaalustamiseks teisele kisale ümberpaigutamist.
2. kloonifaas: doonor Shard (praegu tükki hoiab) kopeerib kõik dokumendid tükis saaja Shardile. Selle aja jooksul jälgitakse ka doonorikilpi tükile New kirju.
3. järelejõudmisfaas: adressaadide kisa rakendab kõiki kloonifaasis toimunud kirjutisi tagamaks, et sellel on kõige ajakohasemad andmed.
4. Kriitiline osa ja pühenduge: doonorhard siseneb kriitilisse osa, kus tükki kirjutamisoperatsioonid on lühidalt blokeeritud ja tükkide omamine lülitatakse aatomiliselt adressaadile.
5. Kustuta faas: doonorhard eemaldab asünkroonselt rändatud tükile kuuluvad dokumendid, kui see kinnitab, et saaja on tüki edukalt toime pannud.
Tasakaalustaja tagab, et korraga juhtub ainult üks ränne kilo, et minimeerida mõju kildu jõudlusele. Kui need on sõltumatud, võib see erinevatel kildapaaridel paralleelselt läbi viia mitu rännet.
Automaatne tasakaalustaja
Tasakaalustaja töötab konfiguratsiooniserveri primaarsõlme taustlõngana ja jälgib pidevalt Shard Data saldo. See jälgib andmete suurust tüki kohta, et teha kindlaks, kas migratsioone on vaja vastavalt konfigureeritavale tasakaalu lävele. Kui kildude vaheliste andmete suuruse erinevused ületavad selle läve, algatab tasakaalustaja ränne.
Tasakaalustaja töötab rakenduste jaoks enamasti läbipaistvalt, kuid hooldamiseks või häälestamiseks võib seda ajutiselt keelata. Samuti austab see klastris konfigureeritud tsoone, tagades tükkide migreerumise sobivates tsoonide piirides.
Käsitsi rändekäsud
Kuigi tasakaalustaja automatiseerib tükkide migratsiooni, lubab MongoDB ka käsitsi juhtimist, kasutades selliseid käske nagu `Movechunk` ja` Moverange. Need käsud sunnivad konkreetsete tükkide või tükkide vahemikku ühest killust teise.
- `Movechunk` kasutatakse tüki ületamiseks, mis sisaldab konkreetset kilpväärtust määratud kildu. See on kasulik suunatud migratsioonide jaoks koormuse tasakaalustamiseks või andmete paikkonnaks.
- `Moverange` võimaldab migreeruda külgneva variandi vardaklahvide ulatus, mis on kasulik keerukamate andmete tasakaalustamisstrateegiate jaoks.
Administraatorid võivad neid käske kasutada tükkide eelnemiseks enne paljude allaneelamist või akende piirangute tasakaalustamisest põhjustatud migratsiooni tõrgete lahendamiseks andmete ühtlaseks levitamiseks.
Orvutud dokumentide ja järjepidevuse käitlemine
Tükkide rände ajal ja pärast seda võivad doonorikilal ajutiselt esineda orvuks jäänud dokumendid (dokumendid, mis ei kuulu enam doonori Shardi määratud tükivahemikku), kuni need puhastatakse.
MongoDB tagab järjepidevuse kogu migratsiooni vältel, rakendades toiminguid järjestuses ja kasutades koordineerimismehhanismi, mis blokeerib kirjutisi kriitilise lõigu ajal. Pärast rännet kulgeb orbude puhastamine asünkroonselt, vältides samal ajal käimasolevate päringute sekkumist.
MongoDB 5.3 käivitamine, ei genereeri vahetusvoogud rände ajal orbude dokumentide värskenduste jaoks, et säilitada sündmuste voo täpsus.
mõju jõudlusele ja toimingutele
Tükk -ränded kannavad pea kohal, sealhulgas võrgu ribalaiuse tarbimine, protsessor ja ketta I/O, mis võivad mõjutada klastri jõudlust. MongoDB vähendab seda mõju:
- Piirates Shardi osalemist ühe rändega korraga.
- Järjekorra ränne ja etappide kustutamise võimaldamine kiirema mahalaadimise jaoks ülepaisutamiseks.
- Drosselingvalikute kasutamine rände samaaegsuse häälestamiseks ja mure kirjutamiseks rände ajal.
Ülekande andmed mõjutavad ajutiselt ka sekundaarseid lugemisi, mis võivad Orbude puhastamise etapis dokumendid vahele jätta, nii et rakendused peavad oma päringute kavandamisel seda kaaluma.
Ränne konkreetsete stsenaariumide korral
Sellistel juhtudel, nagu näiteks andmete rändamine TAG -vahemike vahel või varjutamata seadistusteni, migreerib MongoDB andmeid järk -järgult, lähtudes värskendatud Shard võtmevahemike või tsoonide põhjal pärast ümberkonfigureerimist. Näiteks vanade sildivahemike eemaldamine ja uute loomine käivitab tasakaalustaja rände, et andmeid vastavalt teisaldada.
Mongodb-klastrite rändamisel pilvehaldusega lahustesse või kilbistatud klastrite vahel teostavad ränderiistad sageli šardipõhise migratsiooni, kopeerides Shard andmeid individuaalselt, säilitades samal ajal Shard võtmejaotused.
Tööriistad ja kommunaalteenused rände jaoks
Andmeülekandeteenused (DTS) ja muud kolmandate osapoolte tööriistad aitavad üle viia andmeid MongoDB eksemplaride või klastrite vahel, käitleda kilde kaardistamist, andmete järjepidevust ja täiendavaid värskendusi. Need tööriistad toetavad sageli rändamata klastritelt rändamist, määrates vaikeküünlate väärtused lähteandmetele, millel puuduvad killud.
Võtmepunktide kokkuvõte
- MongoDB partitsioonide andmed tükkidesse, mis on jaotatud kildude vahel, kasutades kildude klahve.
- Tasakaalustaja migreerib ta tasakaalustatud andmete jaotuse säilitamiseks automaatselt tükke.
- Ränne hõlmab andmete kloonimist, järelejõudmist, aatomi üleandmist ja asünkroonset puhastamist.
- Süsteemi mõju vähendamiseks piirdub ränded ühega ühe kilbiga.
- Käsitsi rändekäsud pakuvad tükkide jaotuse halduskontrolli.
- Orbude dokumendid puhastatakse asünkroonselt pärast rännet.
- Migratsioon mõjutab jõudlust ja sekundaarset lugemise järjepidevust ajutiselt.
- Rännet tsoonide vahel või muutusi Shard võtmevahemikes käsitletakse ümberkonfigureerimisega, mis käivitab rände.
- Ränderiistad aitavad andmete liikumisel klastrite või arhitektuuride vahel.
See migratsioonimehhanism tagab, et mongodb -klastrid jäävad andmete kasvades tasakaalus, skaleeritavaks ja toimivaks, ja klastri konfiguratsioonid arenevad, pakkudes pidevat kättesaadavust rakenduste minimaalsete häiretega.