Par Maxime Jumelle
CTO & Co-Founder
Publié le 15 déc. 2022
Catégorie Data Engineering
Depuis plusieurs années, MongoDB s'est imposée comme un standard parmi les bases de données NoSQL. Sa capacité à supporter une grande volumétrie de données tout en offrant un maximum de flexibilité sur les schémas de données en font une base de données très appréciée par les développeurs.
Dans cet article, nous allons voir quelles sont les raisons de ce succès, en détaillant le fonctionnement d'une base MongoDB, et quand l'utiliser.
Avant de découvrir MongoDB, nous devons comprendre ce qu'est une base de données NoSQL et en quoi cette représentation est différente de l'autre famille de base de données populaire, SQL.
En effet, le langage de requête structuré (SQL) existait déjà avant le World Wide Web. Cependant, à mesure que les fonctionnalités des sites Web se sont développées, les développeurs ont voulu créer des pages Web à l'aide d'un contenu qui pouvait changer au fil du temps sans redéployer le code. Par conséquent, Not Only SQL (ou NoSQL) a été développé. NoSQL a assoupli les propriétés ACID (atomicité, cohérence, isolation, durabilité) et garantit de meilleures performances, une meilleure évolutivité, une plus grande flexibilité et une complexité réduite.
La principale différence avec le modèle SQL vient dans l'absence d'un modèle relationnel, ce qui signifie que les données ne sont plus matérialisées et représentées par des tables. Cette absence (ou flexibilité, en fonction des modèles) de schéma de données permet de faire évoluer l'architecture de la base de données avec le temps, ce qui est beaucoup plus difficile dans un contexte SQL.
Les bases de données NoSQL sont également pensées pour la mise à l'échelle. Elles ont la possibilité d'être distribuées, ce qui permet à la fois de supporter de grandes charges de travail (milliers de lectures/écritures par seconde) tout en assurant une haute disponibilité, grâce aux mécanismes de réplication de données.
À lire aussi : découvrez notre formation Data Engineer
En contrepartie, chaque outil utilise son propre langage de requête : là où la plupart des bases de types SQL supportent à 90% le langage SQL, avec le NoSQL, chaque base de données dispose de son propre langage de requête. Il est donc plus difficile de changer de base de données NoSQL, car cela revient à repenser son architecture et modifier l'utilisation du langage de requêtes.
Parmi les bases dites NoSQL, nous retrouvons plusieurs modèles de bases de données.
Le choix du modèle de base NoSQL dépend principalement des besoins et du cas d’usage. Si l’on doit souvent manipuler des données temporelles, on se dirigera vers une base adaptée pour les séries temporelles. À l’inverse, les bases orientées colonnes peuvent être intéressants dans les situations où l’on doit gérer des articles ECommerce par exemple.
Le développement de MongoDB a commencé au début de l'année 2007, lorsque une société basée à New York, 10gen, développait une plateforme en tant que service semblable à Heroku, AWS Elastic Beanstalk ou Google App Engine, mais basé sur des composants open source.
Le développement initial était axé sur la création d'une PaaS (Platform as a Service). Leur expérience à travers différents projets web leur ont appris qu’une application qui devient populaire va se heurter à des problèmes de scalabilité au niveau de la base de données. Dans leur recherche d’une base de données à intégrer dans leur produit PaaS, aucune solution open source ne répondait à leurs besoins de scalabilité et de compatibilité avec une architecture Cloud. C’est pourquoi, l’équipe de 10gen a développé en interne une nouvelle technologie de base de données NoSQL, orientée documents. Ils la baptiseront MongoDB, inspiré du mot « humongous » qu’on pourrait traduire par « gigantesque », à l’instar des données qu’elle est censée héberger.
Plus tard en 2009, MongoDB est arrivé sur le marché en tant que serveur de base de données open source et a été maintenu par cette organisation elle-même. En mars 2010, 10gen a lancé son premier produit fini, la version 1.4. La dernière version, ainsi que la version stable de MongoDB, est la version 2.4.9 qui a été publiée le 10 janvier 2014. 10gen a changé de nom ensuite pour devenir MongoDB Inc.
MongoDB a été conçu pour la vitesse. Les données reposent sur des documents BSON, diminutif de binary JSON. Le BSON permet à MongoDB d’être d’autant plus rapide dans le calcul pour rechercher des données dans les documents.
Afin d’être encore plus performant dans ses requêtes, MongoDB invite à la dénormalisation de la donnée dans ses documents. Là où une bonne pratique en SQL était d’avoir des tables spécifiques et clés étrangères pour faire référence à une donnée lors de jointures, MongoDB encourage à dénormaliser en dupliquant la donnée là où elle est demandée.
MongoDB a été conçu à l’ère du Cloud et de l’infrastructure distribuée. Pour assurer la stabilité, un des concepts clé de MongoDB est d’avoir en permanence plus d’une copie de la base de données disponible dans le but d’assurer une disponibilité toujours aussi rapide même en cas de défaillance de la machine principale.
À lire aussi : découvrez notre formation Data Engineer
MongoDB est également pensé pour la flexibilité. Contrairement aux bases de données SQL, les données d’une collection Mongo peuvent être complètement hétérogènes. C’est ce qu’on appelle le Schemaless. L’avantage de ne pas forcément avoir de structure stricte de la donnée est de pouvoir faire évoluer rapidement sa structure de donnée.
Cette flexibilité est très appréciée à tous les stades de maturité d’une application. Là où en début de projet, la modification d’un schéma de données en SQL se fait relativement facilement, cette même modification peut devenir un enfer dans un projet comportant plusieurs centaines de tables reliées. C’est à cette problématique que répond MongoDB avec la liberté de pouvoir ajuster les propriétés de chaque document dans une collection, sans nécessiter de modifier tous les documents de la collection.
Toutefois, le schemaless a ses inconvénients. Il devient plus difficile de faire des opérations d’analyse sur la donnée si tous les documents ne suivent pas la même structure. C’est pourquoi il est également possible d’imposer un schéma à la collection.
MongoDB utilise des enregistrements qui sont constitués de documents contenant une structure de données composée de paires de champs et de valeurs. Les documents constituent l'unité de base des données dans MongoDB. Les documents sont similaires à des objets JSON, mais utilisent une variante appelée Binary JSON (BSON). L'avantage de l'utilisation de BSON est qu'il prend en charge davantage de types de données.
Les champs de ces documents sont similaires aux colonnes d'une base de données relationnelle. Les valeurs contenues peuvent être des types de données variés, notamment d'autres documents, des tableaux et des tableaux de documents. Les documents intègrent également une clé primaire comme identifiant unique.
Les ensembles de documents, appelés collections, fonctionnent comme l'équivalent des tables de bases de données relationnelles. Les collections peuvent contenir tout type de données, mais la restriction est que les données d'une collection ne peuvent pas être réparties dans différentes bases de données.
Afin de filtrer ces document, MongoDB utilise des requêtes permettant de rechercher des correspondances exactes, en utilisant des comparaisons supérieures ou inférieures, ou en utilisant des expressions régulières. Ces méthodes fonctionnent assez bien dans de nombreuses situations. Toutefois, elles sont insuffisantes lorsqu'il s'agit de filtrer des champs contenant des données textuelles riches.
MongoDB intégre une fonctionnalité très intéressante pour remédier à ça, c'est la recherche de texte. Elle permet d'interroger des champs de chaîne de caractères pour trouver du texte ou des mots spécifiques. Les recherches de texte peuvent être effectuées à l'aide de l'index de texte ou de l'opérateur $text
.
Un index de texte peut être une chaîne ou un tableau d'éléments de chaîne. Pour effectuer des recherches, la collection doit contenir un index de texte. Une collection ne peut avoir qu'un seul index de texte et un index de texte peut être appliqué à plusieurs champs.
On peut également effectuer des recherches sur des collections avec des index de texte à l'aide de l'opérateur $text
. Cet opérateur divise chaque chaîne de recherche par un espace et traite tous les caractères de ponctuation sauf -
et \
comme des séparateurs. Après avoir fractionné la chaîne de recherche, l'opérateur effectue une opération OU logique sur les symboles.
MongoDB propose une collection de produits pour faciliter l'utilisation des données. En plus de la base de données de documents MongoDB, voici quelques exemples des produits de l'entreprise :
MongoDB Atlas est la solution cloud de Database as a Service (DBaaS). Atlas permet de déployer un serveur MongoDB managé sur un cloud Amazon Web Services, Google Cloud Platform ou Microsoft Azure, dans la région de son choix. On peut avoir le choix de la taille de son cluster tout en ayant l’avantage d’avoir votre base de données managée par l’équipe d’ingénieurs de MongoDB.
Realm est une base de données allégée embarquée sur le client mobile. Dans le cas d’une application mobile, Realm permet de stocker une partie de la donnée directement sur l’appareil et de coordonner des synchronisations avec la base de données principale suivant différents événements. C’est idéal pour éviter des requêtes réseau et permettre une meilleure utilisation hors ligne de l’application.
Atlas search est un des nouveaux nés de la famille Mongo Cloud. Il a pour but de concurrencer Algolia et ElasticSearch sur le terrain des moteurs de recherche. Il permet d’indexer sa donnée différemment afin de pouvoir avoir une fonction de recherche plus fine et plus intelligente qu’une simple requête avec filtres.
Charts est le moyen de créer des graphiques pour visualiser votre donnée directement depuis MongoDB. On pourra créer plusieurs types de graphiques en se basant sur la donnée qu'on a sur son cluster Atlas et les intégrer directement sur votre site directement en HTML. Charts permet d’exploiter vos données rapidement sans avoir à développer une interface Frontend spécifique pour ce besoin.
Cloud Manager est un outil complet de monitoring et d’optimisation de performance pour un cluster sur MongoDB Entreprise Advanced. On a accès à plusieurs indicateurs à travers sa base de données afin d’analyser les performances de comprendre les requêtes effectuées par son application. Un système d’alerte peut être configuré pour prévenir d’urgences et se connecte nativement sur Slack, DataDog ou PagerDuty.
Il y a également plusieurs outils gratuits qui permettent d'administrer et interagir avec une base MongoDB. Ces outils pourront nous être utile afin de gagner en productivité.
En bref, il s'agit de l'interface graphique de MongoDB. Elle fournit à l'utilisateur une vue graphique et interactive de MongoDB, où les utilisateurs n'ont pas besoin d'aller plus loin dans le langage de requête pour n'importe quelle tâche. Il est possible d'obtenir la visualisation de données géospatiales, planifier, visualiser et gérer les indices en quelques clics grâce à MongoDB compass.
Elle peut être téléchargée à partir du site Web de MongoDB. Pour l'utiliser, il faut créer un utilisateur et un mot de passe avec MongoDB Compass.
MongoDB Shell est une interface interactive JavaScript qui permet d'interagir avec les instances MongoDB via la ligne de commande. Le shell peut être utilisé pour la manipulation de données et pour des opérations administratives telles que la maintenance des instances de la base de données.
La CLI Atlas (mongodb-atlas-cli
) est également une interface interactive. Elle permet de gérer les déploiements MongoDB Atlas à partir de la ligne de commande.
À lire aussi : découvrez notre formation Data Engineer
MongoDB peut être utilisé dans de nombreux cas d'utilisation différents, notamment :
Vous souhaitez vous former au Data Engineering ?
Articles similaires
7 févr. 2024
Pendant de nombreuses années, le rôle des Data Engineers était de récupérer des données issues de différentes sources, systèmes de stockage et applications tierces et de les centraliser dans un Data Warehouse, dans le but de pouvoir obtenir une vision complète et organisée des données disponibles.
Maxime Jumelle
CTO & Co-Founder
Lire l'article
4 déc. 2023
Pour de nombreuses entreprises, la mise en place et la maintenant de pipelines de données est une étape cruciale pour avoir à disposition d'une vue d'ensemble nette de toutes les données à disposition. Un des challenges quotidien pour les Data Analysts et Data Engineers consiste à s'assurer que ces pipelines de données puissent répondre aux besoins de toutes les équipes d'une entreprise.
Maxime Jumelle
CTO & Co-Founder
Lire l'article
14 nov. 2023
Pour améliorer les opérations commerciales et maintenir la compétitivité, il est essentiel de gérer efficacement les données en entreprise. Cependant, la diversité des sources de données, leur complexité croissante et la façon dont elles sont stockées peuvent rapidement devenir un problème important.
Maxime Jumelle
CTO & Co-Founder
Lire l'article
60 rue François 1er
75008 Paris
Blent est une plateforme 100% en ligne pour se former aux métiers Tech & Data.
Organisme de formation n°11755985075.
Data Engineering
IA Générative
MLOps
Cloud & DevOps
À propos
Gestion des cookies
© 2024 Blent.ai | Tous droits réservés