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> })