En quoi la modélisation des données est-elle différente dans MongoDB?
La modélisation des données est le processus de développement d'une représentation visuelle d'une application logicielle entière ou de ses composants pour communiquer les connexions entre les points de données et la structure. Il s'agit de revoir méticuleusement ses exigences en matière d'application et de base de données et de faire le lien entre les deux concernant les opérations de base sur les données – lecture, écriture et mise à jour.
Un modèle de données stable est créé en évaluant le modèle d'utilisation de l'application et en alignant le schéma de base de données avec celui-ci. Par conséquent, la conception de schéma façonne votre modèle de données. Lorsqu'il s'agit d'une base de données relationnelle, vous ne pouvez pas remplir vos tables sans créer le schéma de table.
Termes clés à connaître
Avant d'aller de l'avant, voici quelques définitions de base que vous devez connaître:
- Collection – Une collection est l'ensemble des documents de MongoDB. C'est l'équivalent d'une table dans un SGBDR.
- Document – Un document est une structure composée de paires de fichiers et de valeurs. C'est l'équivalent d'une ligne dans le SGBDR.
- Schéma de base de données – La conception de schéma est une architecture logique et visuelle d'une base de données conçue pour un système de gestion de base de données (SGBD).
En quoi la modélisation des données est-elle différente dans MongoDB?
Grâce à la flexibilité de NoSQL, vous n'avez pas à créer de schéma avant l'insertion de données. C'est parce que MongoDB prend en charge une forme dynamique de schéma de base de données. Cela élimine le besoin de concevoir votre schéma à l'avance. Au lieu de cela, vous pouvez désormais stocker vos données et effectuer des ajustements en fonction de votre collection.
Vous pouvez stocker différents types de données dans le champ donné d'une collection et même ajouter de nouveaux champs, mettre à jour les valeurs de champ et supprimer des champs existants. Vous trouverez le véritable avantage de cette flexibilité lorsque vous mappez des documents sur un objet ou une entité.
Généralement, une collection et son document suivent une structure similaire. Vous pouvez également «appliquer» des règles de validation pour les documents de votre collection à l'aide de la validation de schéma.
Lors de la création d'un modèle de données, examinez comment votre application interagira avec la base de données. Par exemple, s'il doit traiter des documents qui ont été insérés récemment, il est judicieux d'utiliser des collections plafonnées – des collections de taille fixe qui prennent en charge les opérations à haut débit.
De même, si votre application doit fonctionner avec des opérations de lecture la plupart du temps, vous pouvez définir des index pour prendre en charge les requêtes courantes et améliorer les performances.
Traditionnellement, l'une des considérations lors de la création d'un modèle de données est de savoir comment stocker les données associées. Les bases de données relationnelles utilisent des tables pour stocker les données, où les clés primaires et étrangères sont utilisées pour définir les relations de données.
De même, les jointures sont utilisées pour accéder et exécuter des opérations sur plusieurs tables. En tant que personne qui est passée à MongoDB à partir d'un SGBD relationnel, tel que SQL Server, vous n'allez pas trouver de jointures dans MongoDB. En effet, MongoDB stocke les données de collection en référençant les données ou en les incorporant dans une collection.
Par conséquent, si votre modèle de données prend dix tables dans une base de données relationnelle, il est possible que MongoDB vous permette de le consolider dans une seule collection.
Types de modèles de données
Maintenant que vous savez comment fonctionne la modélisation de données dans MongoDB, passons en revue les types de modèles de données pris en charge par MongoDB. Habituellement, cela dépend de la structure de votre document et des relations de données de votre application.
Modèles de données intégrés
Vous pouvez incorporer des données dans un seul document ou une seule structure dans MongoDB. Aussi appelé modèles de données dénormalisés, il exploite tout le potentiel des documents riches de MongoDB. Par exemple, considérons l'exemple suivant: nous avons une collection, étudiants, contenant un document Matt. Dans ce document, nous avons intégré deux documents, les coordonnées et la note .
{
"_id": "4aad66a4c13bb24f12gh199e",
name: “Matt”,
contact details: {
phone:”555-555-1234”
email address: “[email protected]”
},
grade: {
subject: “CS101”
score: “B”
}}
L'intégration stocke les détails pertinents dans le même document ou enregistrement de base de données. De cette façon, vous pouvez minimiser les requêtes et les mises à jour nécessaires pour effectuer des opérations de base de données courantes.
Quand devriez-vous utiliser des modèles de données embarqués? Ils sont utiles pour améliorer les performances des opérations de lecture. En outre, ils sont efficaces pour traiter la récupération de données d'un seul enregistrement. Avec ce modèle, vous pouvez utiliser une seule opération d'écriture pour mettre à jour les données associées.
Cependant, il y a quelque chose que vous devez garder à l'esprit: l'incorporation augmente la taille du document après sa création. Dans certains cas, cela peut affecter les performances d'écriture et il existe également un risque de fragmentation des données en raison de l'augmentation de la taille du document.
Enfin, vous pouvez interagir avec les documents incorporés en utilisant la notation par points et les parcourir facilement. Voici la syntaxe:
field.nestedField:value
Pour l'exemple ci-dessus, vous pouvez accéder à vos documents imbriqués en écrivant la requête suivante:
db.students.find({contact details: { phone:”555-555-1234” ,email address: “[email protected]”}}).pretty()
Modèles de données normalisés (références)
Les modèles de données normalisés sont utilisés pour créer des modèles de relations un-à-plusieurs et plusieurs-à-plusieurs. Lorsque vous travaillez avec des modèles de documents incorporés, vous devrez parfois répéter des données. C'est là que les références sont utiles – elles s'attaquent à la redondance. Voici comment nous pouvons utiliser des références pour l'exemple ci-dessus.
Nous avons divisé notre document unique en trois documents et puisque les coordonnées et la note ont l'identifiant du document Matt , vous pouvez les appeler si nécessaire.
student
{
_id:<ObjectId1>
username: “Matt”
}
contact details
{
_id:<ObjectID2>
user_id: <ObjectId1>
email:“[email protected]”
phone:”555-555-1234”
}
grade
id:<ObjectId3>
user_id: <ObjectId1>,
subject: “CS101”,
score: “B”
}
Comme vous pouvez le voir, les modèles de données normalisés divisent les données en plusieurs collections en utilisant des références entre les collections les plus récentes. Vous pouvez mettre à jour un seul document, ce qui mettra à jour d'autres collections. Il s'agit d'un moyen efficace de mettre à jour les données et est principalement utilisé lorsque vos données subissent des changements fréquents.
Voici les moments où un modèle de données normalisé est le choix le plus judicieux:
- Vous devez modéliser de grands ensembles de données qui suivent une certaine hiérarchie.
- Vous devez représenter plusieurs relations plusieurs-à-plusieurs.
- L'intégration entraînerait une duplication des données sans que vos performances de lecture ne soient suffisamment améliorées.
Vous pouvez désormais modéliser les données dans MongoDB en toute simplicité
À présent, vous savez en quoi la modélisation des données dans MongoDB est différente des DBM relationnels, en particulier en ce qui concerne le schéma. Vous avez également découvert les types de modèles de données dans MongoDB – dé-normalisés et normalisés – et apprenez à les utiliser.
Et ce n'est que le début; il y a beaucoup plus à apprendre sur la façon dont MongoDB peut organiser vos données.