← Retourner à la liste des articles
Image blog
Auteur

Par Maxime Jumelle

CTO & Co-Founder

Publié le 15 déc. 2022

Catégorie Data Engineering

MongoDB : tout savoir sur la base NoSQL la plus utilisée

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.

Les bases de données NoSQL

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.

  • Les bases orientées colonnes : Cassandra, AWS DynamoDB, HBase.
  • Les bases orientées documents : MongoDB, Elasticsearch.
  • Les bases orientées clé/valeur : Redis, Memcached.
  • Les bases orientées graphes : Neo4j, InfluxDB.

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.

C'est quoi MongoDB ?

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.

Logo MongoDB

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.

Comment fonctionne MongoDB ?

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.

Document MongoDB

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.

Collection MongoDB

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.

L'écosystème MongoDB

Les produits de MongoDB

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 :

Produits MongoDB

MongoDB Atlas

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.

MongoDB Realm

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.

MongoDB Charts

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

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.

Les outils de MongoDB

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é.

Outils MongoDB

MongoDB Compass

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.

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

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.

Mongo Shell

Atlas CLI

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.

Quand utiliser MongoDB ?


À lire aussi : découvrez notre formation Data Engineer


MongoDB peut être utilisé dans de nombreux cas d'utilisation différents, notamment :

  • Gestion de grandes bases de données, grâce à sa scalabilité et à sa flexibilité en termes de modèle de données.
  • Développement d'applications web et mobiles, en raison de sa simplicité d'utilisation et de son intégration facile avec de nombreux langages de programmation.
  • Stockage de données semi-structurées, telles que des messages, des événements et des journaux d'activité.
  • Analyse de données en temps réel, grâce à des fonctionnalités telles que l'agrégation de données et l'indexation rapide.
  • Gestion de données de configuration, de métadonnées et de paramètres d'application, grâce à sa flexibilité en matière de schémas de données.

Articles similaires

Blog

7 févr. 2024

Data Engineering

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

Maxime Jumelle

CTO & Co-Founder

Lire l'article

Blog

4 déc. 2023

Data Engineering

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

Maxime Jumelle

CTO & Co-Founder

Lire l'article

Blog

14 nov. 2023

Data Engineering

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

Maxime Jumelle

CTO & Co-Founder

Lire l'article