Aller au contenu principal

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 :

JSONJSONBBSON
NatureFormat texteFormat binaireFormat binaire
Principal usageÉchange de donnéesStockage PostgreSQLStockage 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