Embedding vs Referencing

MongoDB 🟡 Mid

Définition

Choix de design fondamental en MongoDB : embarquer les données liées dans le même document (denormalisation) ou stocker une référence (ObjectId) vers un autre document (normalisation).

Analogie

Coller la photo dans le passeport (embedding) ou noter un numéro de dossier renvoyant a la photo (referencing).

Exemple de code

// Embedding
{ name: 'Alice', address: { city: 'Paris' } }
// Referencing
{ name: 'Alice', addressId: ObjectId('...') }

Cas d'usage

Embedding pour les relations 1:1 et 1:few lues ensemble. Referencing pour les relations 1:many ou many:many.

Anti-pattern

Embarquer des tableaux qui grandissent indéfiniment, dépassant la limite de 16 Mo par document.
#sgbd#interview#database#mongodb

En entretien

  1. Comment choisis-tu entre embedding et referencing pour modéliser une relation ?

    L'embedding convient aux relations 1:1 et 1:few lues ensemble, comme coller la photo dans le passeport, alors que le referencing via ObjectId convient aux relations 1:many ou many:many, comme un numéro de dossier renvoyant à la photo. Le choix dépend donc de la cardinalité et du fait que les données soient consultées ensemble.

  2. Quel est le risque si tu embarques un tableau qui grandit sans limite ?

    Le document risque de dépasser la limite de 16 Mo par document, ce qui est l'anti-pattern classique de l'embedding mal maîtrisé. Dans ce cas, il vaut mieux basculer vers du referencing.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre