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