Page 1. MongoDB, Mise en œuvre et Administration (session 1FORM@ Stéphane Alleaume)
Annexe 01:
Les bonnes pratiques de modélisation
Page 2. MongoDB, Mise en œuvre et Administration (session 1FORM@ Stéphane Alleaume)
Les bonnes pratiques de modélisation • MongoDB est schemaless : pour tenir compte de cela : – Indexez tôt et souvent – identifiez les types de requêtes fréquentes à l’aide de MMS, de l’interface graphique Compass ou de journaux et indexez-les précocement et utilisez autant d’index que possible dès le début d'un projet. • Éliminer les index inutiles : un peu contre-intuitif par rapport à la suggestion précédente : – Surveiller la base de données pour déterminer si les requêtes sont modifiées – Supprimer les index non utilisés. Un index consomme de la RAM et des E / S, car il doit être stocké et mis à jour avec les documents de la base de données. – En utilisant un pipeline d'agrégation et $ indexStats, un développeur peut identifier les index rarement utilisés et les éliminer.
Page 3. MongoDB, Mise en œuvre et Administration (session 1FORM@ Stéphane Alleaume)
Les bonnes pratiques de modélisation • Utiliser un index composé plutôt que de faire une intersection d'index: – l'interrogation avec plusieurs prédicats (A et B, C ou D et E, etc.) fonctionnera généralement mieux avec un seul index composé qu'avec plusieurs index simples. – En outre, un index composé aura ses données ordonnées par champ et nous pourrons en tirer parti à notre avantage lors de l'interrogation. – Un index sur les champs A, B, C sera utilisé dans les requêtes pour A, (A, B), (A, B, C) – mais pas dans les requêtes pour (B, C) ou (C).
Page 4. MongoDB, Mise en œuvre et Administration (session 1FORM@ Stéphane Alleaume)
Les bonnes pratiques de modélisation • Index de faible sélectivité (cardinalité) : – l'indexation d'un champ sur le sexe, par exemple, restituera statistiquement la moitié de nos documents, – alors qu'un index sur le nom de famille ne renverra qu'une poignée de documents portant le même nom de famille. • Utilisation d'expressions régulières: – comme les index sont classés par valeur, la recherche à l'aide d'une expression régulière contenant des caractères génériques (c'est-à- dire /.*BASE/) ne pourra pas utiliser l'index. – La recherche avec des caractères génériques de fin (c'est-à-dire /DATA.*/) peut être efficace tant que l'expression contient suffisamment de caractères sensibles à la casse.
Page 5. MongoDB, Mise en œuvre et Administration (session 1FORM@ Stéphane Alleaume)
Les bonnes pratiques de modélisation • Éviter la négation dans les requêtes: – les index sont des valeurs d'indexation, pas leur absence. – L'utilisation de NOT dans les requêtes peut entraîner des analyses de table complètes au lieu d'utiliser l'index. • Utiliser des index partiels: – si nous devons indexer un sous-ensemble des documents d'une collection, les index partiels peuvent nous aider à minimiser l'ensemble d'index et à améliorer les performances. – Un index partiel inclura une condition sur le filtre que nous utilisons dans la requête souhaitée.
Page 6. MongoDB, Mise en œuvre et Administration (session 1FORM@ Stéphane Alleaume)
Les bonnes pratiques de modélisation • Utiliser la validation de document: – utilisez la validation de document pour surveiller les nouveaux attributs insérés dans vos documents et décider quoi faire avec eux. – Lorsque la validation de document est définie sur warning, nous pouvons conserver un journal des documents insérés avec des attributs arbitraires auxquels nous ne nous attendions pas pendant la phase de conception et décider s'il s'agit d'un bogue ou d'une fonctionnalité de notre conception.
Page 7. MongoDB, Mise en œuvre et Administration (session 1FORM@ Stéphane Alleaume)
Les bonnes pratiques de modélisation • Utiliser MongoDB Compass: – L'outil de visualisation gratuit de MongoDB est idéal pour obtenir un aperçu rapide de nos données et de leur évolution dans le temps. • Respecter la taille maximale du document de 16 Mo : – La taille maximale du document pour MongoDB est de 16 Mo. – limite assez généreuse, mais qu’il ne faut en aucun cas franchir. – Les documents ne peuvent devenir illimités : toujours garder à l'esprit que cela devrait être sous contrôle. • Utiliser le moteur de stockage approprié : – plusieurs nouveaux moteurs de stockage depuis la version 3.2. – Le moteur de stockage en mémoire pour le temps réel – Le moteur de stockage crypté doit être choisi lorsqu'il existe des exigences strictes en matière de sécurité des données Page 8. MongoDB, Mise en œuvre et Administration (session 1FORM@ Stéphane Alleaume) Les bonnes pratiques de modélisation • Index de faible sélectivité (cardinalité) : – l'indexation d'un champ sur le sexe, par exemple, restituera statistiquement la moitié de nos documents, – alors qu'un index sur le nom de famille ne renverra qu'une poignée de documents portant le même nom de famille. • Utilisation d'expressions régulières: – comme les index sont classés par valeur, la recherche à l'aide d'une expression régulière contenant des caractères génériques (c'est-à- dire /.*BASE/) ne pourra pas utiliser l'index. – La recherche avec des caractères génériques de fin (c'est-à-dire /DATA.*/) peut être efficace tant que l'expression contient suffisamment de caractères sensibles à la casse.
Page 5. MongoDB, Mise en œuvre et Administration (session 1FORM@ Stéphane Alleaume)