Travailler avec les relations de données dans MongoDB

MongoDB est une base de données de documents et ne maintient pas de relations entre les documents comme les bases de données relationnelles telles que PostgreSQL.

Pourtant, MongoDB vous permet de créer des relations entre les documents. Ces relations peuvent être modélisées par des approches intégrées ou référencées. Regardons de plus près.

Relations intégrées vs relations de référence

Dans une approche intégrée, un document est directement inséré dans un autre document, ce qui donne des données imbriquées. Le processus est également appelé « dénormalisation ».

L’approche de référence, d’autre part, utilise des références de document pour pointer d’un document à un autre. Cette approche est également appelée « normalisation ».

MongoDB : relations individuelles avec les documents intégrés

Vous pouvez créer une relation un à un entre des documents à l’aide de l’approche intégrée. Cette relation se produit lorsqu’un objet document ne peut être lié qu’à un seul autre document.

Envisagez une base de données d’étudiants. Cette base de données contient les collections d’étudiants et d’adresses avec les documents suivants.

Dans cette base de données, un étudiant n’est autorisé à avoir qu’une seule adresse. Pour récupérer l’adresse, vous devrez interroger la collection d’adresses à l’aide du nom de l’élève.

Dans les cas où l’adresse est utilisée en tandem avec d’autres détails tels qu’un nom d’étudiant , vous devrez interroger la base de données plusieurs fois. L’inconvénient est un nombre élevé d’opérations de lecture et, par conséquent, une faible performance des requêtes.

Voir aussi :  Comment réduire en charpie le code Python en utilisant Flake8

En utilisant l’approche intégrée, vous pouvez insérer les données d’adresse directement dans le document de l’étudiant et n’utiliser qu’une seule requête pour obtenir les données.

Pour récupérer l’adresse via le nom d’étudiant utilisez cette requête.

Capture d'écran du terminal affichant les résultats de la requête mongoDB

Relations un-à-plusieurs avec des documents intégrés dans MongoDB

Considérez une situation où un étudiant a plusieurs adresses. La relation entre l’élève et les adresses devient un-à-plusieurs.

Le modèle intégré vous permet d’ajouter plusieurs adresses au document de l’étudiant. Comme dans la relation un-à-un utilisant des documents intégrés, cette approche a une performance de requête relativement élevée.

La requête ci-dessous renverra les adresses du nom d’étudiant spécifié.

Fenêtre de terminal affichant la sortie de la requête MongoDB

Maintenant, si vous avez plus d’adresses et continuez à les ajouter au champ d’adresse, le document peut devenir encombré assez rapidement. Une solution consiste à utiliser des références de documents.

MongoDB : relations un-à-plusieurs avec des références de documents

Vous pouvez également modéliser une relation un-à-plusieurs à l’aide de l’approche de référence. Dans ce modèle de données, les données sur les étudiants et les adresses seront conservées dans des collections distinctes. Pour associer l’étudiant à son adresse, ajoutez un champ contenant les identifiants d’adresse au document de l’étudiant.

Obtenir les détails de l’adresse d’un étudiant implique de récupérer les identifiants d’adresse à partir du document de l’étudiant et d’utiliser ces identifiants pour récupérer les adresses réelles de la collection.

Fenêtre de terminal affichant les résultats de la requête MongoDB

Choisir entre les approches embarquées et de référence

Les modèles d’intégration et de référencement ont tous deux leurs avantages et leurs inconvénients, et vous devrez tenir compte de quelques éléments avant de faire votre choix. . Pour commencer, vous devrez considérer le cas d’utilisation. Si les données ne seront liées qu’à un seul document, l’intégration pourrait être votre meilleure option.

Voir aussi :  Vérifiez la sécurité de vos mots de passe avec Python

Pour créer des relations un-à-plusieurs, vous pouvez utiliser le modèle de référence ou le modèle intégré. Le référencement donne un document propre et cohérent puisque vous n’ajoutez que l’ID de référence du document auquel vous souhaitez vous associer.

Cependant, le nombre d’opérations de lecture nécessaires pour récupérer les données connectées est relativement élevé et peut avoir un impact sur les performances. L’incorporation du document peut augmenter les performances, mais avec de nombreux documents imbriqués, vous risquez de vous retrouver avec une collection encombrée.

Le choix de la manière d’implémenter les relations entre les données dans votre document vous appartient donc entièrement. Réfléchissez à la manière dont vous utiliserez le document, au niveau de performances des requêtes que vous visez et aux compromis que vous êtes prêt à faire.

Cliquez pour évaluer cet article !
[Total: Moyenne : ]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *