Embedding vs Referencing

MongoDB 🟡 Mid

Definition

Choix de design fondamental en MongoDB : embarquer les donnees liees dans le meme document (denormalisation) ou stocker une reference (ObjectId) vers un autre document (normalisation).

Analogie

Coller la photo dans le passeport (embedding) ou noter un numero 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 indefiniment, depassant la limite de 16 Mo par document.
#sgbd#interview#database#mongodb