Aller au contenu

Modèle de données#

Équivalences avec les SGBDR#

Le tableau suivant montre la relation entre la terminologie des SGBDR et MongoDB

RDBMS MongoDB
Database Database
Table Collection
Tuple/Row Document
column Field
Table Join Embedded Documents
Primary Key Primary Key (*)

Note

(*): Clé primaire _id fournie par mongodb lui-même

Les données sont des documents#

  • Stocké en Binary JSON (BSON)
  • Documents similaires rassemblés dans des collections
  • Pas de schéma des documents définis en amont
    • contrairement à un BD relationnel ou NoSQL de type Column Store
  • Les documents peuvent n’avoir aucun point commun entre eux
  • Un document contient (généralement) l’ensemble des informations
    • pas (ou très peu) de jointure à faire
  • BD respectant CP (dans le théorème CAP)
    • propriétés ACID au niveau d’un document

Exemple de documents#

{
  _id: ObjectId(7df78ad8902c)
  title: 'MongoDB Demo',
  description: 'MongoDB is no sql database',
  author: 'Glenn',
  url: 'https://glenux.net',
  tags: ['mongodb', 'database', 'NoSQL'],
  likes: 100,
  comments: [
    {
      user:'user1',
      message: 'My first comment',
      dateCreated: new Date(2017,1,19,2,15),
      like: 0
    },
    {
      user:'user2',
      message: 'My second comments',
      dateCreated: new Date(2019,2,24,6,27),
      like: 5
    }
  ]
}

Schéma dynamique#

  • Documents variant très fortement entre eux, même dans une même collection
  • On parle de self-describing documents
  • Ajout très facile d'un nouvel élément pour un document, même si cet élément est inexistant pour les autres
  • Pas de ALTER TABLE ou de redesign de la base

Langage d'interrogation#

  • Pas de SQL (bien évidemment), ni de langage proche
  • Définition d'un langage propre (basé sur JS)
  • Langage permettant plus que les accès aux données
    • définition de variables
    • boucles
    • ...
  • Pas de jointures entre les collections