Aller au contenu

Gérer les chunks (scission, fusion, migration)#

Comprendre les chunks#

  • Chunks : unités de répartition des données dans un cluster de shards
  • Chaque chunk contient un intervalle continu de valeurs de shard key
  • Chaque chunk appartient à un shard unique
  • Taille de chunk par défaut : 64 Mo

Processus de scission de chunks#

  • Scission : division d'un chunk en deux nouveaux chunks plus petits
  • Déclenchée lorsque la taille d'un chunk dépasse la taille maximale configurée
  • MongoDB 5.0+ surveille la taille des chunks automatiquement
  • Commande pour forcer une scission manuelle : sh.splitAt(collection, splitPoint)

Processus de fusion de chunks#

  • Fusion : combinaison de deux chunks adjacents en un seul chunk
  • Peut être utile pour réduire la fragmentation des données
  • Commande pour forcer une fusion manuelle : sh.mergeChunks(collection, lowerBound, upperBound)

Migration de chunks#

  • Migration : transfert d'un chunk d'un shard vers un autre shard
  • Permet d'équilibrer la répartition des données et de la charge entre les shards
  • Géré automatiquement par le "Balancer" dans MongoDB 5.0+
  • Commande pour démarrer une migration manuelle : sh.moveChunk(collection, find, to)

Optimisation de la gestion des chunks#

  • Surveiller la taille et la répartition des chunks avec sh.status()
  • Choisir une shard key appropriée pour minimiser le nombre de migrations et de scissions
  • Configurer la taille maximale des chunks si nécessaire avec sh.updateZoneKeyRange(collection, min, max, options)
  • Planifier les maintenances de scission et fusion de chunks en dehors des heures de pointe