Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kuinka MongoDB käsittelee tiedonsiirtoa sirujen välillä


Kuinka MongoDB käsittelee tiedonsiirtoa sirujen välillä


MongoDB käsittelee tiedonsiirtoa sirpaleiden välillä pääasiassa Chunk Migration -nimisen prosessin kautta, joka on olennainen osa varjostusarkkitehtuuria, joka on suunniteltu levittämään tietoja tasaisesti klusterin useiden sirujen välillä. MongoDB: n varjostaminen on menetelmä, jota käytetään tietokannan vaakasuoraan skaalaamiseen jakamalla tietoja useiden palvelimien tai sirujen välillä. Tämä järjestelmä hyödyntää Shard -avainta, joka on kenttä tai kenttäjoukko asiakirjassa, joka määrittää datan jakautumisen. Tiedonsiirron hallitsemiseksi Shardsin välillä MongoDB käyttää taustaprosessia, nimeltään Balancer, joka optimoi tiedon jakautumisen siirtämällä tiedon alueita (tai paloja) tarvittaessa.

Suhdettu klusteri ja palan siirto

MongoDB jakaa varustetut kokoelmat paloiksi, jotka ovat vierekkäisiä alueita Shard -avainarvoista. Jokainen kappale kuuluu tiettyyn shardiin, ja nämä palat pitävät kollektiivisesti koko tietojoukon. Balancer tarkkailee palojen jakautumista sirpaleiden välillä ja siirtää paloja sirpaleiden välillä tasapainon ylläpitämiseksi. Tämä muuttomekanismi auttaa välttämään hotspot, parantamaan kyselyn suorituskykyä ja optimoimaan resurssien hyödyntämisen.

Chunk -muuttoliike on hyödyllistä skenaarioissa, kuten silloin, kun uusia sirpaleita lisätään klusteriin, kun tiedot kasvavat epätasaisesti epätasapainossa tai kun vyöhykkeet on määriteltävä tietojen sijainti- tai sääntelyvaatimuksiin. Siirtyminen toimii palan tasolla siirtämällä koko shard -avainarvoja shardista toiseen.

Siirtoprosessin yksityiskohdat

MongoDB: n Chunk Migration toimii useissa vaiheissa:

1. Palavalinta liikkua varten: Balancer tai järjestelmänvalvoja valitsee kappaleen, joka tarvitsee uudelleen sijoittamista toiseen shardiin klusterin tasapainottamiseksi.

2. Kloonivaihe: Luovuttaja Shard (joka tällä hetkellä pitää palat) kopioi kaikki palan asiakirjat vastaanottaja Shardille. Tänä aikana jäljitetään myös uusia kirjoituksia lahjoittaja Shardin palaselle.

3. Kiinnitysvaihe: Vastaanottaja Shard soveltaa kaikkia kloonivaiheen aikana tapahtuneita kirjoituksia varmistaakseen, että sillä on ajan tasalla olevat tiedot.

4. Kriittinen osa ja sitoutuminen: Luovuttaja Shard siirtyy kriittiseen osioon, jossa kirjoitusoperaatiot palaan estetään lyhyesti ja palan omistus on atomisesti siirretty vastaanottaja Shardiin.

5. Poista vaihe: Luovuttaja Shard Asynkroninen poistaa siirretylle palasuun kuuluvat asiakirjat, kun se vahvistaa, että vastaanottaja on onnistuneesti sitoutunut palan.

Balancer varmistaa, että vain yksi muutto shardia kohti tapahtuu kerrallaan minimoimaan vaikutukset Shardin suorituskykyyn. Se voi suorittaa useita muuttoliikkeitä rinnakkain eri shard -parien välillä, jos ne ovat riippumattomia.

Automaattinen tasapainottaja

Balancer toimii taustakierteenä konfigurointipalvelimen ensisijaisessa solmussa ja tarkkailee jatkuvasti Shard -data -saldoa. Se seuraa datan kokoa kappaletta kohti selvittääksesi, tarvitaanko siirtymiä konfiguroitavan tasapainokynnyksen mukaisesti. Kun tietojen koon erot ylittävät tämän kynnyksen, tasapainottaja aloittaa muuttoliikkeet.

Balancer toimii enimmäkseen läpinäkyvällä tavalla sovelluksiin, mutta se voidaan väliaikaisesti poistaa käytöstä huolto- tai viritystä varten. Se kunnioittaa myös klusterissa määritettyjä vyöhykkeitä, varmistaen, että palat siirretään asianmukaisilla vyöhykkeen rajoissa.

Manuaaliset siirtokomennot

Vaikka Balancer automatisoi Chunk -siirron, MongoDB sallii myös manuaalisen ohjauksen käyttämällä komentoja, kuten `movechunk` ja` moverange`. Nämä komennot pakottavat tiettyjen palojen tai palan siirtymisen vaihtelusta shardista toiseen.

- `moveChunk` käytetään siirtämään kappaleen, joka sisältää tietty Shard -avainarvo määritettyyn shardiin. Tämä on hyödyllistä kohdennettujen siirtymien kannalta kuorman tasapainottamiseen tai datan paikkakuntaan.

- `Moverange` mahdollistaa vierekkäisen shard -näppäinvalikoiman siirtämisen, joka on hyödyllinen monimutkaisemmille tietojen tasapainotusstrategioille.

Järjestelmänvalvojat voivat käyttää näitä komentoja ennalta jakautuviin paloihin tietojen levittämiseen tasaisesti ennen irtotavarana nauttimista tai ikkunan rajoitusten tasapainottamisen aiheuttamien siirtovirheiden ratkaisemiseksi.

Orvojen asiakirjojen ja johdonmukaisuuden käsittely

Chunk -muuttoliikkeen aikana ja sen jälkeen orvojen asiakirjat (asiakirjat, jotka eivät enää kuulu avunantaja Shardin osoitetulle kappalealueelle) voi olla väliaikaisesti luovuttaja Shardissa, kunnes ne puhdistetaan.

MongoDB varmistaa johdonmukaisuuden koko muuttoliikkeen ajan soveltamalla toimintoja peräkkäin ja käyttämällä koordinaatiomekanismia, joka estää kirjoittaa kriittisen osan aikana. Siirtymisen jälkeen orpojen puhdistus kulkee asynkronisesti välttäen puuttumista meneillään oleviin kyselyihin.

Aloittamalla MongoDB 5.3, Change Streams ei tuota tapahtumia orvojen asiakirjojen päivityksiin siirtymisen aikana tapahtumavirran tarkkuuden ylläpitämiseksi.

vaikutus suorituskykyyn ja toimintaan

Chunk -muuttoliikkeet kuljettavat yleiskustannuksia, mukaan lukien verkon kaistanleveyden kulutus, prosessorit ja levy I/O, jotka voivat vaikuttaa klusterin suorituskykyyn. MongoDB minimoi tämän vaikutuksen:

- Shardin osallistumisen rajoittaminen yhteen muuttoliikkeeseen kerrallaan.

- Jonoke muuttoliikkeet ja sallimalla poistovaiheet kulkevat päällekkäin nopeamman purkamisen saavuttamiseksi.

- Kuristusvaihtoehtojen käyttäminen muuttoliikkeen samanaikaisuuden virittämiseen ja huolenaiheisiin muuttoliikkeen aikana.

Tietojen siirtäminen vaikuttaa väliaikaisesti myös toissijaisiin lukemiin, jotka voivat unohtaa asiakirjat orpojen puhdistusvaiheen aikana, joten sovellusten on harkittava tätä suunniteltaessa heidän kyselyitään.

Siirtyminen tietyissä skenaarioissa

Tapauksissa, kuten tiedonsiirtovyöhykkeiden välillä, joilla on tunnistealueita, tai varjostamattomista asennuksista, MongoDB siirtää tietoja vähitellen päivitettyjen Shard -avainalueiden tai vyöhykkeiden perusteella uudelleenmäärityksen jälkeen. Esimerkiksi vanhojen tunnistimien poistaminen ja uusien luominen laukaisee tasapainottajien siirtymisen tietojen siirtämiseksi vastaavasti.

Kun siirrät MongoDB-klustereita pilvipohjaisiin ratkaisuihin tai varjostettujen klustereiden välillä, siirtotyökalut suorittavat usein shard-viisasta siirtymistä, kopioimalla Shard-tietoja erikseen säilyttäen Shard-avainjakaumat.

Työkalut ja apuohjelmat muuttoliikkeeseen

Tiedonsiirtopalvelut (DTS) ja muut kolmansien osapuolien työkalut auttavat siirtämään tietoja MongoDB-esiintymien tai klusterien välillä, hoitamalla Shard-kartoitus, datan johdonmukaisuus ja lisäpäivitykset. Nämä työkalut tukevat usein siirtymistä vartioimattomista varjostettuihin klustereihin määrittämällä oletusarvon avainarvot lähdetietoihin, joista puuttuvat Shard-avaimet.

Yhteenveto keskeisistä kohdista

- MongoDB -osiot tiedot sirujen välillä jakautuneiksi shard -avaimilla.

- Balancer siirtää paloja automaattisesti tasapainoisen tiedonjaon ylläpitämiseksi.

- Siirtoon kuuluu tietojen kloonaus, kiinniotto kirjoitukset, atomien luovutus ja asynkroninen puhdistus.

- Siirtot rajoitetaan yhteen varjosta kohden järjestelmän vaikutuksen vähentämiseksi.

- Manuaaliset muuttokomennot tarjoavat hallinnollisen hallinnan palanjakeluun.

- Orpo-asiakirjat puhdistetaan asynkronisesti siirtolaisuuden jälkeen.

- Siirto vaikuttaa suorituskykyyn ja toissijaiseen lukemiseen väliaikaisesti.

- Siirtyminen vyöhykkeiden välillä tai muutokset Shard -avainalueilla käsitellään uudelleenkokoonpanon aiheuttamalla muuttoliikkeellä.

- Siirtotyökalut auttavat klustereiden tai arkkitehtuurien välillä tiedonsiirtoa.

Tämä muuttomekanismi varmistaa, että MongoDB -klusterit pysyvät tasapainossa, skaalautuvina ja suorituskykyisinä tietojen kasvaessa ja klusterikokoonpanot kehittyvät tarjoamalla jatkuvan saatavuuden sovelluksille vähäisillä häiriöillä.