Aller au contenu

Bases de Données NoSQL avec MongoDB


Objectifs

  • Installer MongoDB et créer une base de données
  • Interroger une base de données orientée document
  • Protéger la base de données contre les pannes avec le ReplicaSet
  • Passer à l'échelle avec le Sharding

Ressources

Outils

  • MongoDB Community Server V4.4.1 (Windows 10) ou V4.0.2 (Windows 7 ou 8)
  • MongoDB Shell V0.4.2 (Exécuter des commandes intéractives)
  • MongoCompass V1.22.1 (GUI pour MongoDB)

Fichiers de données (datasets)

Sources et référence

Présentation de MongoDB

Vocabulaire

MongoDB est un système de gestion de bases de données NoSQL orienté documents. Il est parmi les SGBD les plus utilisés.

Source : https://db-engines.com/en/ranking_trend

Le document est l'unité de référence dans ce système. Elle est l'équivalent de tuple ou enregistrement dans les bases de données relationnelles.
MongoDB gère plusieurs bases de données. Chaque base est composée de Collections (équivalent de table). La struture d'un document MongoDB ressembée à celle de JSON. Le modèle est très simple :

  • Tout est clé/valeur : "clé" : "valeur".
  • Un document est encapsulé dans des accolades {...}, pouvant contenir des listes de clés/valeurs.
  • Une valeur peut être un type scalaire (entier, nombre, texte, booléen, null), des listes de valeurs [...], ou des documents imbriqués.
Schéma de la base MongoDB

MongoDB ne gère aucun schéma pour les collections. Donc pas de structure fixe ni de typage. Du coup, il est difficile lors de l’interrogation de connaître le contenu de la base de données. Le logiciel Compass permet de faire une analyse du schéma et fournit des statistiques sur les types des clés et les fréquences des valeurs.

Exemple de document MongoDB

  {
    "_id":{
      "$oid":"5f7cefe98c3d2e2bd862b3ff"
    },
    "address":{
      "building":"469",
      "coord":{
        "type":"Point",
        "coordinates":[-73.961704,40.662942]
      },
      "street":"Flatbush Avenue",
      "zipcode":"11225"
    },
    "borough":"Brooklyn",
    "cuisine":"Hamburgers",
    "grades":[
      {"date":{"$date":"2014-12-30T00:00:00.000Z"},"grade":"A","score":8},
      {"date":{"$date":"2014-07-01T00:00:00.000Z"},"grade":"B","score":23},
      {"date":{"$date":"2013-04-30T00:00:00.000Z"},"grade":"A","score":12},
      {"date":{"$date":"2012-05-08T00:00:00.000Z"},"grade":"A","score":12}
    ],
    "name":"Wendy'S",
    "restaurant_id":"30112340"
  }
Ce restaurant a un nom, un quartier (borough), le type de cuisine, une adresse (document imbriqué, avec coordonnées GPS, rue et code postale), et un ensemble de notes (tableaux de documents).

Note

La clé "_id:" est l'identifiant du document. Si sa valeur n'est pas spécifiée implicitement lors de l'insertion, elle est automatiquement initialisée par MongoDB.