Aller au contenu

Modèle de données#

Equivalences 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 Overview',
  description: 'MongoDB is no sql database',
  by: 'tutorials point',
  url: 'http://www.tutorialspoint.com',
  tags: ['mongodb', 'database', 'NoSQL'],
  likes: 100,
  comments: [
    {
      user:'user1',
      message: 'My first comment',
      dateCreated: new Date(2011,1,20,2,15),
      like: 0
    },
    {
      user:'user2',
      message: 'My second comments',
      dateCreated: new Date(2011,1,25,7,45),
      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