Meilleures pratiques de développement avec Public Cloud Databases pour MongoDB
Meilleures pratiques pour les développeurs utilisant MongoDB
Objectif
Pour vous permettre de démarrer efficacement en tant que développeur MongoDB sur OVHcloud, cette page couvre les bases de MongoDB telles que les modèles de conception (Design Patterns), l'indexation et le requêtage.
Meilleures pratiques de développement MongoDB
Modélisation des données et modèles de conception
-
Comprenez les besoins de votre application : commencez par bien comprendre les besoins de l'application et la manière dont les données seront consultées. Cela permet de concevoir des schémas répondant aux exigences de performance et d'évolutivité.
-
Utilisez des modèles de conception de schéma : utilisez des modèles de conception de schéma courants tels que le Bucket Pattern, l'Outlier Pattern, le Subset Pattern et l'Attribute Pattern pour gérer efficacement de grands jeux de données. Chaque modèle répond à des cas d'usage spécifiques :
- Bucket Pattern : idéal pour les données de séries temporelles, ce modèle regroupe les données associées en buckets afin de réduire le nombre de documents et d'améliorer les performances des requêtes.
- Outlier Pattern : gère les valeurs aberrantes séparément afin de conserver une indexation et un requêtage efficaces pour la majorité de vos données.
- Subset Pattern : décompose les grands jeux de données en sous-ensembles gérables afin d'améliorer les performances et la maintenabilité.
- Attribute Pattern : utilisé pour gérer les scénarios où les documents contiennent un grand nombre de champs similaires, en les regroupant dans un tableau de paires clé-valeur, optimisant ainsi la flexibilité des requêtes et l'efficacité du stockage.
-
Évitez les anti-modèles de conception de schéma : soyez attentif aux anti-modèles de conception de schéma courants et évitez-les, notamment :
- Tableaux massifs : les tableaux comportant un grand nombre d'éléments peuvent entraîner un requêtage inefficace et une augmentation de l'utilisation de la mémoire.
- Documents excessivement imbriqués : les documents fortement imbriqués peuvent compliquer les requêtes et dégrader les performances. Envisagez plutôt d'aplatir votre structure de données ou d'utiliser des références.
- Collections monolithiques : évitez de stocker des données non liées dans une seule collection, ce qui peut entraîner une indexation et un requêtage inefficaces.
-
Exploitez la validation de documents : exploitez, chaque fois que nécessaire, la validation de schéma de MongoDB pour garantir l'intégrité des données et veiller à ce que les documents respectent une structure définie. Veillez à ne pas abuser de cette fonctionnalité, car elle consomme des ressources supplémentaires. N'oubliez pas que MongoDB est conçu pour être flexible.
Indexation
Lors de l'élaboration de votre stratégie d'indexation, vous devez avoir une compréhension approfondie des requêtes de votre application. Avant de créer des index, identifiez les types de requêtes que vous exécuterez afin de pouvoir créer des index qui référencent ces champs. Les index ont un coût en performance, mais ce coût est largement justifié pour les requêtes fréquentes sur de grands jeux de données.
-
Créez des index basés sur les modèles de requêtes : analysez vos modèles de requêtes et créez des index qui prennent en charge les requêtes les plus fréquentes et critiques pour les performances. Utilisez des index composés lorsque plusieurs champs sont interrogés ensemble.
-
Utilisez des requêtes couvertes : concevez des index couvrant les champs requis par vos requêtes. Cela permet à MongoDB de satisfaire la requête en utilisant uniquement l'index, sans parcourir les documents, ce qui améliore considérablement les performances.
-
Optimisez la taille des index : surveillez et optimisez régulièrement la taille de vos index. Utilisez les outils intégrés de MongoDB pour calculer la taille totale des index et vous assurer qu'elle tient dans la RAM disponible afin d'éviter des E/S disque excessives.
-
Évitez la surindexation : bien que les index améliorent les performances des requêtes, un nombre trop élevé d'index peut dégrader les performances d'écriture et augmenter les besoins de stockage. Ne créez que les index nécessaires aux requêtes de votre application.
-
Utilisez des index TTL pour les données à expiration : pour les données devant expirer après une certaine période, comme les informations de session ou les logs, utilisez les index TTL (Time-To-Live). Cela permet de supprimer automatiquement les données expirées et de maintenir un jeu de données efficace.
-
Règle ESR (Equality Sort Range) : la règle ESR de MongoDB est une recommandation permettant d'optimiser les performances des requêtes en structurant les index composés. Cette règle suggère de placer d'abord les champs utilisés pour les comparaisons d'égalité, puis ceux utilisés pour le tri, et enfin ceux utilisés pour les requêtes de plage. Cet ordre maximise l'efficacité de l'utilisation des index et améliore les performances des requêtes.
ReadPreference et WriteConcern
ReadPreference contrôle la manière dont les clients MongoDB dirigent les opérations de lecture vers les membres d'un ensemble de réplicas. Il détermine quel membre de l'ensemble de réplicas sera utilisé pour les opérations de lecture.
WriteConcern décrit le niveau d'accusé de réception demandé à MongoDB pour les opérations d'écriture. Il garantit la durabilité et la cohérence des données en spécifiant le nombre de membres de l'ensemble de réplicas devant accuser réception de l'écriture.
Pour plus d'informations, reportez-vous à la documentation suivante.
Exploitez les Change Streams de MongoDB
Les Change Streams de MongoDB offrent un moyen puissant d'écouter et de réagir aux changements en temps réel dans vos collections MongoDB. Cette fonctionnalité permet aux applications d'être plus réactives en autorisant des mises à jour et des notifications en temps réel. Avec les Change Streams, vous pouvez surveiller les changements tels que les insertions, les mises à jour, les suppressions, etc. dans vos collections, puis déclencher des actions spécifiques en fonction de ces changements. Cette capacité est essentielle pour créer des applications réactives, permettre des analyses en temps réel, synchroniser des données entre différents systèmes, et bien plus encore.
Supervision
-
Mettez en place une supervision complète : utilisez les outils de supervision de MongoDB, tels que les commandes de base de données, l'onglet Métriques d'OVHcloud, ou des solutions de supervision tierces, afin de surveiller en continu les performances de la base de données, l'utilisation des ressources et les métriques opérationnelles.
-
Configurez des alertes : configurez des alertes pour les indicateurs de performance clés tels que l'utilisation élevée du CPU, la consommation de mémoire, les E/S disque et les requêtes lentes. Cela permet une gestion proactive et une résolution rapide des problèmes potentiels.
-
Analysez les performances des requêtes : passez régulièrement en revue et analysez les performances des requêtes à l'aide d'outils tels que le Profiler MongoDB et les plans d'exécution (Explain Plans). Identifiez et optimisez les requêtes lentes afin de garantir une récupération efficace des données.
-
Surveillez les performances des index : suivez les statistiques d'utilisation des index afin d'identifier ceux qui sont inutilisés ou sous-utilisés. Supprimez ou optimisez ces index pour maintenir des performances optimales.
-
Planifiez les sauvegardes et la reprise après sinistre : assurez-vous que des sauvegardes régulières sont planifiées et testées. Utilisez les outils de sauvegarde de MongoDB pour créer des sauvegardes cohérentes et fiables, et disposez d'un plan de reprise après sinistre bien défini.
En suivant ces meilleures pratiques, les développeurs peuvent concevoir des bases de données MongoDB efficaces et évolutives, répondant aux besoins de performance et d'exploitation de leurs applications.
Nous voulons vos retours !
Nous serions ravis de répondre à vos questions et apprécions tout retour que vous pourriez nous faire.
Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en oeuvre de nos solutions, contactez votre commercial ou cliquez sur ce lien pour obtenir un devis et demander une analyse personnalisée de votre projet à nos experts de l’équipe Professional Services.
Rejoignez notre communauté d'utilisateurs.
Vous êtes sur Discord ? Rejoignez notre chaîne via https://discord.gg/ovhcloud et interagissez directement avec l’équipe qui développe notre service de bases de données !