MongoDB

De EduTech Wiki
Aller à la navigation Aller à la recherche
La version imprimable n’est plus prise en charge et peut comporter des erreurs de génération. Veuillez mettre à jour les signets de votre navigateur et utiliser à la place la fonction d’impression par défaut de celui-ci.

Introduction

MongoDB est un gestionnaire de base de données noSQL. Alors que la plupart des base de données sont de type relationnel (SQL), les bases de données noSQL offrent davantage de flexibilité en répondant à des besoins croissants dans le développement web, auxquels les bases de données SQL ne peuvent pas répondre. L'avantage principal de ce type de base de données est qu'il ne nécessite pas de structure de données prédéfinie, à la différence des bases de données SQL.

En août 2020, MongoDB est un des systèmes de gestion de bases de données les plus populaires, la seule classée dans le top 5 parmi des systèmes classiques SQL.

Format

Il existe plusieurs types de GDBD noSQL. MongoDB est un système de gestion orienté document (Document Databases).

MongoDB gère des documents, soit des objets généralement de type BSON (binary JSON) ou JSON. Il s'agit donc d'une grande différence avec les structures classiques de modèles en lignes/colonnes. L'utilisation d'un formalisme comme JSON rend la gestion des données plus flexible et plus puissante. Les créateurs de MongoDB la décrivent comme plus "naturelle".

D'un point de vue terminologique, un document est une information autonome. Une collection est un ensemble de documents, et une base de données est un ensemble de collections.

Exemple de document JSON:

{
 "lastname": "Betrancourt",
 "firstname": "Mireille",
 "dept" : "TECFA",
 "address" :{
   "street" : "40 bd du Pont d'Arve",
   "zip" : "1211",
   "town" : "Genève"
 },
 "function" : "Doyenne FAPSE"
}

Les informations sont stockées au format BSON (Binary JSON) qui est une version compacte de JSON. Cela permet de :

  • gérer plus facilement les données en leur ajoutant un préfixe de longueur, permettant de passer plus rapidement sur un champ
  • connaître le type d'un champ, stocké dans l'enregistrement
  • gérer des informations complémentaires, comme ObjectID, qui comme dans les DB SQL représente une clé unique pour identifier un enregistrement ou un document dans le cas de MongoDB.

Installation

Pour télécharger et installer MongoDB, suivre les instructions sur le site officiel. Vous pouvez choisir de l'utiliser en ligne comme un service ou le télécharger sur votre machine. Dans ce dernier cas, choisir l'onglet Community Server.

Une fois MongoDB installé, créer un dossier appelé MongoDB, et un sous-dossier nommé data.

Dans un terminal de commande, se déplacer jusqu'au dossier MongoDB et taper :

mongod --dbpath=data --bind_ip 127.0.0.1

Cette ligne permet de lancer le serveur Mongo et de préciser que les données seront stockées dans le sous-dossier data. La commande mongod peut être lancée depuis n'importe quel dossier, dès le moment où le chemin d'accès complet est spécifié.

Dans une autre fenêtre de terminal, taper Mongo qui va lancer la base de données et les commandes qui nous permettent de dialoguer avec elle, via les commandes REPL (Read, Evaluate, Print, Loop).

MongoDB et Node

Si on a développé une application avec Node.js, il est très simple d'accéder à un serveur MongoDB. Il suffit d'installer le MongoDB driver (qui est un module Node) par cette ligne de code dans le dossier de l'application : npm install mongodb --save Le MongoDB Driver est un module Node qui permet de se connecter à une base de données Mongo et d'interagir avec celle-ci avec les fonctionnalités CRUD standard (Create, Retrieve, Update, Delete).

Avantages

Les avantages de MongoDB et des bases de données noSQL en général sont :

  • la scalabilité : les bases de données noSQL permettent de gérer autant la disponibilité que la cohérence des données, alors que les DB SQL doivent souvent renoncer à l'un pour favoriser l'autre. De plus, les noSQL tolèrent mieux le partitionage.
  • Facilité de déploiement : il n'est pas nécessaire, comme dans un DB SQL, de créer un mapping entre les enregistrements dans la DB et les objets dans le langage de l'application, par exemple JavaScript.
  • Traite les tableaux et objets imbriqués comme des valeurs
  • Permet la création de schémas flexibles et dynamiques

Sources