Aller au contenu

Choisir judicieusement une shard key#

Importance de la shard key#

  • La shard key détermine la répartition des données dans le cluster
  • Une bonne shard key assure un équilibre de charge et une bonne performance
  • La shard key influe sur la gestion de l'espace disque et la vitesse de réponse
  • Choisir une shard key adéquate est crucial pour le succès du sharding

Types de shard keys#

  • Shard key simple : basée sur un seul champ du document
  • Shard key composée : basée sur plusieurs champs du document
  • Shard key hashed : basée sur un hachage du champ choisi pour une répartition uniforme

Critères de choix d'une shard key#

  • Sélectionner un champ fréquemment utilisé dans les requêtes
  • Assurer une distribution équilibrée des données
  • Privilégier les champs ayant une cardinalité élevée (diversité des valeurs)
  • Éviter les champs ayant une forte croissance séquentielle
  • Prendre en compte les besoins en lecture et écriture de l'application
  • Utilisez sh.shardCollection() pour définir la shard key

Conséquences d'un mauvais choix de shard key#

  • Déséquilibre dans la répartition des données (hotspots)
  • Performances dégradées en lecture et écriture
  • Augmentation des coûts de stockage et de traitement
  • Difficultés pour redimensionner le cluster et gérer la montée en charge
  • Utilisez db.collection.getShardDistribution() pour vérifier la distribution des données

Exemple de code pour définir la shard key :

sh.shardCollection("<database>.<collection>", { <field>: <type> })