Qu’est-ce que MongoDB ?
Pendant des décennies, les bases de données relationnelles ont été la solution préférée des utilisateurs pour la gestion des données. Cependant, du fait de la multitude de données qui compose une application Web moderne, les bases de données avec approche orientée document comme MongoDB sont devenues de sérieuses rivales face au modèle de stockage traditionnel. Nous expliquons le fonctionnement de cette nouvelle approche et les avantages qu’elle offre.
Les caractéristiques de MongoDB
MongoDB, dérivé de l’anglais « humongous » (en français : gigantesque, énorme), est un système de base de données orienté documents. Contrairement aux bases de données relationnelles, où les données sont stockées dans des tables structurées, les données des bases MongoDB sont stockées dans des collections à la structure flexible.
De plus, MongoDB n’utilise pas SQL comme langage de requête, et est donc identifié comme système de base de données NoSQL. Au lieu de cela, MongoDB utilise le MongoDB Query Language (MQL), basé sur JavaScript, comme langage de requête. Par conséquent, les enregistrements MongoDB sont stockés au format BSON, qui est inspiré du format JSON. Grâce à cela, tous les types de données JavaScript sont pris en charge, ce qui fait de MongoDB le choix optimal pour de nombreuses plateformes basées sur JavaScript.
Une autre caractéristique des bases de données MongoDB est leur évolutivité horizontale. Cela signifie que les données peuvent être réparties sur plusieurs serveurs au lieu d’être stockées à un même endroit central. Cela permet d’améliorer la disponibilité des données et la performance globale de la base de données. Ce type de mise à l’échelle est généralement moins coûteux que s’il fallait équiper un seul serveur avec du matériel plus performant (mise à l’échelle verticale).
Comment fonctionne MongoDB ?
Contrairement à MySQL, MongoDB est orienté documents et adopte donc une approche complètement différente pour le stockage des données. Au lieu de stocker les données sous forme de tableaux, où chaque ligne comporte le même nombre de champs à remplir avec des valeurs, les données sont stockées de manière non structurée dans des documents BSON. Chaque document peut comporter autant de champs que souhaité, qui ne doivent pas nécessairement correspondre entre eux. Les documents remplacent donc pratiquement les lignes d’une table SQL et les champs définis dans ces documents remplacent les colonnes.
Il existe plusieurs outils permettant de travailler sur des bases de données MongoDB. En plus de l’outil bien connu MongoDB Shell, il y a aussi l’outil graphique MongoDB Compass. Nous allons toutefois ici nous concentrer sur les commandes shell.
Comme le MQL est basé sur JavaScript, il existe déjà toute une série de fonctions prédéfinies qui permettent d’effectuer des requêtes et des commandes complexes. Mais en principe, toutes les commandes d’écriture et de lecture ont la même structure, que l’on peut voir dans les exemples suivants. Il existe de nombreuses autres commandes qui permettent de gérer sa base de données MongoDB : elles sont décrites et expliquées en détail dans la documentation MongoDB.
db.etudiant.find({ Nom: "Paul" })
db.etudiant.updateOne({ Nom: "Paul" }, { $set: { Semestre: 2 } })
db.etudiant.deleteOne({ Nom: "Pierre" })
db.etudiant.insertOne({
Nom: "Louise",
Age: 18,
Semestre: 1
Dans l’exemple ci-dessus, on peut voir plusieurs commandes successives sur une base de données MongoDB, chacune ayant la même structure. « db » représente la base de données entière et « etudiant » la collection dans laquelle l’opération doit être effectuée. Elle est suivie de la méthode devant être appliquée.
La méthode find() peut être utilisée pour rechercher un document spécifique. En laissant le champ de paramètre vide, tous les documents de cette collection sont retrouvés. Dans l’exemple ci-dessus, la recherche porte sur tous les documents où le champ « Nom » a la valeur « Paul ». La méthode updateOne ()peut être utilisée pour mettre à jour des valeurs dans un document. Dans notre exemple, deux arguments sont demandés : le premier est ce que l’on appelle le critère de sélection, et le second est la paire clé-valeur devant être modifiée. Dans ce cas, le champ « Semestre » est mis à jour avec un 2 pour tous les étudiants qui s’appellent « Paul ».
La méthode removeOne() ne reçoit qu’un seul argument, à savoir le critère de sélection selon lequel les documents doivent être supprimés. Dans l’exemple, tous les étudiants qui s’appellent « Pierre » sont supprimés de la base de données. La méthode insertOne() reçoit également un argument, mais cette fois-ci le contenu JSON complet du document que vous souhaitez insérer. Lors de l’insertion de documents, il faut savoir que chaque document d’une collection MongoDB doit avoir un identifiant d’objet unique d’un nombre hexadécimal de 12 octets. Si ce paramètre n’est pas spécifié lors de l’insertion du document, MongoDB génère automatiquement un ID.
Les avantages de MongoDB
La structure de MongoDB présente plusieurs avantages pour les utilisateurs, notamment en termes de flexibilité et d’évolutivité. D’une part, le stockage de données orienté documents offre l’avantage que toutes les entrées ne doivent pas avoir les mêmes attributs, au même titre que dans les bases de données relationnelles. Cela permet de stocker des données non structurées et semi-structurées. De plus, les documents individuels peuvent être restructurés (par exemple en ajoutant ou en supprimant un attribut/champ) sans que d’autres documents de la collection ne doivent également être restructurés. Comme les documents sont stockés au format BSON, on obtient un avantage supplémentaire : les bases de données MongoDB offrent un haut degré de compatibilité avec de nombreuses plateformes JavaScript.
En plus de stocker des données non structurées, MongoDB offre également un haut degré d’évolutivité horizontale tout en respectant les principes du modèle ACID (Atomicity, Consistency, Isolation, Durability). Dans les bases de données distribuées, il est souvent difficile de garantir la cohérence, car toutes les données ne sont pas stockées sur le même serveur. Si des modifications sont apportées à plusieurs documents en même temps, ces modifications ne peuvent pas être reprises immédiatement par tous les serveurs concernés. Lorsque le volume des requêtes est élevé, cela peut parfois conduire à des données incohérentes. Mais depuis la sortie de MongoDB 4.2 en 2019, il est possible d’apporter des modifications à plusieurs documents sur différents serveurs sans perdre en cohérence ou en disponibilité.
Vous avez besoin d’une base de données orientée documents qui évolue avec les besoins de votre application Web ? Alors, MongoDB est la solution parfaite pour vous !
Pour quels domaines d’application MongoDB est-il adapté ?
MongoDB est toujours un excellent choix si vous souhaitez mettre en œuvre des projets Web basés sur de très grandes quantités de données non structurées, car les différentes données doivent pouvoir être stockées et traitées rapidement.
De plus, le système de base de données permet une mise à l’échelle horizontale presque illimitée, car les bases de données peuvent être réparties sans problème sur plusieurs serveurs sans que leur fonctionnement en soit affecté. Pour garantir la sécurité et la disponibilité des données à long terme, MongoDB permet également de créer facilement des copies de l’ensemble des données et de les mettre à disposition sur différents serveurs. La base de données orientée documents montre également ses points forts lors du regroupement de données provenant d’une ou de plusieurs sources.
L’utilisation de MongoDB est donc recommandée pour tous les projets Web qui se distinguent par les caractéristiques suivantes :
- Évolutivité : votre projet Web se développe et les demandes augmentent, ce qui impose des exigences plus élevées à la base de données.
- Disponibilité : vous avez besoin que votre application Web soit disponible en permanence, même en cas de panne de serveur.
- Flexibilité : votre projet doit pouvoir être adapté et modulé à tout moment.
Vous ne savez pas quel modèle de base de données est le plus adapté à votre projet Web ? Vous n’êtes pas obligé de choisir : une combinaison de différents modèles de stockage est également possible et peut tout à fait représenter la solution parfaite pour votre profil d’exigences.
Vous avez opté pour MongoDB et souhaitez commencer à installer votre base de données ? Notre article dédié sur l’installation de MongoDB vous donnera un coup de pouce pour vous lancer.