Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ako MongoDB zvláda migráciu údajov medzi fragmentmi


Ako MongoDB zvláda migráciu údajov medzi fragmentmi


MongoDB sa stará o migráciu údajov medzi fragmentmi prostredníctvom procesu vyrovnávania. Balancér je zodpovedný za zabezpečenie rovnomernej distribúcie údajov medzi úlomkami v rozdelenom klastri. Tu sú kroky súvisiace s migráciou údajov medzi zlomkami:

1. Vyvažovanie

- Automatické vyvažovanie: MongoDB automaticky vyvažuje údaje migráciou kusov z jedného fragmentu do druhého. To zaisťuje, že údaje sú rovnomerne rozložené medzi zlomkami.

2. Migrácia kúskov

- Manuálna migrácia: MongoDB môže vykonať manuálnu migráciu chunkov pre konkrétne kolekcie. Je to užitočné pri distribúcii údajov počas hromadného vkladania.

3. Migrácia rozsahu

- Automatická migrácia rozsahu: MongoDB migruje údaje po jednom rozsahu. Balancér nečaká na dokončenie fázy odstránenia aktuálnej migrácie pred spustením ďalšej migrácie rozsahu.

4. Opätovné zdieľanie

- Technika reshard-to-Shard: MongoDB používa resharding na rýchle šírenie údajov medzi fragmentmi v klastri. Zahŕňa to zámerné skartovanie do dočasného zlomkového kľúča, ktorý sa líši od požadovaného zlomkového kľúča, a následné opätovné skartovanie na požadovaný zlomkový kľúč.

5. Postup migrácie kúskov

- Zdrojový zlomok: Zdrojový zlomok začne pohyb, keď dostane interný príkaz. Počas procesu migrácie sa operácie s chunkom odosielajú do zdrojového fragmentu.

- Cieľový zlomok: Cieľový zlomok vytvára všetky indexy požadované zdrojom, ktoré v cieľovom mieste neexistujú. Cieľový zlomok začne požadovať dokumenty v bloku a začne prijímať kópie údajov.

- Synchronizácia: Po prijatí konečného dokumentu v bloku cieľový zlomok spustí proces synchronizácie, aby sa zabezpečilo, že obsahuje zmeny v migrovaných dokumentoch, ku ktorým došlo počas migrácie.

- Aktualizácia metadát: Zdrojový fragment sa pripojí ku konfiguračnej databáze a aktualizuje metadáta klastra novým umiestnením pre chunk.

- Fáza odstránenia: Keď zdrojový zlomok dokončí aktualizáciu metadát a keď na bloku nie sú žiadne otvorené kurzory, zdrojový zlomok vymaže svoju kópiu dokumentov[3][5].

6. Jumbo kúsky

- Jumbo bloky: Ak blok prekročí maximálnu veľkosť alebo počet dokumentov v bloku prekročí povolené maximum, MongoDB blok nemigruje. Namiesto toho sa MongoDB pokúša rozdeliť časť. Ak je rozdelenie neúspešné, MongoDB označí časť ako jumbo, aby sa zabránilo opakovaným pokusom o migráciu časti[3].

7. Monitorovanie a údržba

- Monitorovanie: MongoDB poskytuje nástroje na monitorovanie procesu vyvažovania a zabezpečenie rovnomernej distribúcie údajov v úlomkoch.

- Údržba: MongoDB poskytuje príkazy na správu balancéra a zabezpečenie efektívnej a škálovateľnej migrácie údajov.

Záver

MongoDB rieši migráciu údajov medzi úlomkami prostredníctvom procesu vyvažovania, ktorý zaisťuje, že údaje sú rovnomerne rozložené medzi úlomky v rozdelenom klastri. Balancér migruje údaje po jednom rozsahu a MongoDB poskytuje nástroje na monitorovanie a riadenie procesu vyvažovania.

Citácie:
[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/