MongoDB käsittelee tietojen siirtoa sirpaleiden välillä tasapainotusprosessin kautta. Tasapainottaja on vastuussa siitä, että tiedot jakautuvat tasaisesti sirpaleiden kesken sirpaloidussa klusterissa. Tässä ovat vaiheet, jotka liittyvät tietojen siirtämiseen sirpaleiden välillä:
1. Tasapainotus
- Automaattinen tasapainotus: MongoDB tasapainottaa tiedot automaattisesti siirtämällä paloja sirpaleesta toiseen. Tämä varmistaa, että tiedot jakautuvat tasaisesti sirpaleiden kesken.
2. Osasiirto
- Manuaalinen siirto: MongoDB voi suorittaa manuaalisen kappaleen siirron tietyille kokoelmille. Tämä on hyödyllistä tietojen jakamiseen joukkolisäyksen aikana.
3. Alueen siirto
- Automaattinen alueen siirto: MongoDB siirtää tiedot yhden alueen kerrallaan. Tasapainotin ei odota nykyisen siirron poistovaiheen päättymistä ennen seuraavan alueen siirron aloittamista.
4. Uudelleenjako
- Reshard-to-Shard-tekniikka: MongoDB käyttää uudelleenjakoa levittääkseen tietoja nopeasti klusterin sirpaleiden kesken. Tämä tarkoittaa tarkoituksellista sirpalointia väliaikaiseksi sirpaleavaimeksi, joka poikkeaa halutusta sirpaleavaimesta, ja sitten uudelleen jakamisesta halutuksi sirpaleavaimeksi.
5. Osien siirtomenettely
- Source Shard: Lähdesirpale aloittaa siirron, kun se vastaanottaa sisäisen komennon. Siirron aikana lohkon toiminnot lähetetään lähdesirpaleelle.
- Kohteen sirpale: Kohdesirpale rakentaa kaikki lähteen vaatimat indeksit, joita ei ole kohteessa. Kohdesirpale alkaa pyytää asiakirjoja osasta ja alkaa vastaanottaa kopioita tiedoista.
- Synkronointi: Vastaanotettuaan lopullisen asiakirjan osana kohdesirpale aloittaa synkronointiprosessin varmistaakseen, että se sisältää siirrettyihin asiakirjoihin siirron aikana tehdyt muutokset.
- Metatietojen päivitys: Lähteen sirpale muodostaa yhteyden määritystietokantaan ja päivittää klusterin metatiedot osan uudella sijainnilla.
- Poista vaihe: Kun lähdesirpale on saattanut metatietojen päivityksen valmiiksi ja kun kappaleessa ei ole avoimia osoittimia, lähdesirpale poistaa kopionsa asiakirjoista[3][5].
6. Jumbo Chunks
- Jumbo-osat: Jos osa ylittää enimmäiskoon tai osassa olevien asiakirjojen määrä ylittää suurimman sallitun osan, MongoDB ei siirrä osaa. Sen sijaan MongoDB yrittää jakaa osan. Jos jakaminen epäonnistuu, MongoDB merkitsee kappaleen jumboksi välttääkseen toistuvia yrityksiä siirtää kappaletta[3].
7. Valvonta ja ylläpito
- Seuranta: MongoDB tarjoaa työkaluja tasapainotusprosessin valvontaan ja sen varmistamiseksi, että tiedot jakautuvat tasaisesti sirpaleiden kesken.
- Ylläpito: MongoDB tarjoaa komentoja tasapainottimen hallintaan ja varmistaa, että tiedonsiirto on tehokasta ja skaalautuvaa.
Johtopäätös
MongoDB käsittelee tietojen siirtoa sirpaleiden välillä tasapainotusprosessin kautta, mikä varmistaa, että tiedot jakautuvat tasaisesti sirpaleiden kesken sirpaloidussa klusterissa. Tasapainotin siirtää tiedot yhden alueen kerrallaan, ja MongoDB tarjoaa työkaluja tasapainotusprosessin valvontaan ja hallintaan.
Lainaukset:[1] https://stackoverflow.com/questions/48438644/migration-data-between-shards-with-mongodb
[2] https://hackernoon.com/optimize-data-migration-in-mongodb-resharding-techniques-for-speed-and-scalability
[3] https://www.mongodb.com/docs/v3.0/core/sharding-chunk-migration/
[4] https://www.mongodb.com/community/forums/t/shard-migration-leads-to-service-disruption/247228
[5] https://www.mongodb.com/docs/v6.2/core/sharding-balancer-administration/