Documents
Une base de données documentaire stocke les données sous forme de documents, généralement structurés en JSON ou dans un format proche du JSON. Contrairement au modèle relationnel, les données peuvent être imbriquées dans un même document et leur structure peut être plus flexible.
Le modèle documentaire privilégie les agrégats de données correspondant aux besoins de l'application. Les relations peuvent être représentées soit par des données intégrées (embedding), soit par des références entre documents.
MongoDB est l'un des principaux systèmes de gestion de bases de données documentaires. Il permet notamment de rechercher, modifier et agréger les documents grâce à des requêtes et des pipelines d'agrégation.
JSON
JSON (JavaScript Object Notation) est avant tout un format textuel d'échange de données :
{
"nom": "Dupont",
"age": 53
}
Il est lisible par un humain et indépendant d'une base de données.
JSONB
JSONB est le type de PostgreSQL permettant de stocker des données JSON sous une représentation binaire optimisée.
CREATE TABLE personne (
id integer,
donnees jsonb
);
PostgreSQL peut alors indexer et interroger efficacement le contenu :
SELECT *
FROM personne
WHERE donnees->>'nom' = 'Dupont';
Le B signifie Binary.
BSON
BSON signifie également Binary JSON. C'est le format binaire utilisé par MongoDB pour représenter ses documents.
Il ressemble conceptuellement à :
{
"nom": "Dupont",
"age": 53
}
mais BSON permet notamment des types que JSON ne possède pas nativement :
String
Integer
Double
Boolean
Date
ObjectId
Binary
Decimal128
Array
Document
...
Par exemple, MongoDB peut utiliser :
{
_id: ObjectId("..."),
nom: "Dupont",
naissance: ISODate("1973-05-12")
}
alors que JSON standard ne possède ni ObjectId ni ISODate.
Les trois sont liés, mais ils ne désignent pas exactement la même chose :
| JSON | JSONB | BSON | |
|---|---|---|---|
| Nature | Format texte | Format binaire | Format binaire |
| Principal usage | Échange de données | Stockage PostgreSQL | Stockage MongoDB |
| Lisible directement | ✅ | ❌ | ❌ |
| Types supplémentaires | ❌ | Quelques-uns | ✅ nombreux |
| Ordre des clés conservé | ✅ | ❌ | Oui, dans la représentation BSON |
| Indexation efficace | — | ✅ | ✅ |
| Exemple | { "age": 53 } | équivalent binaire interne | équivalent BSON |