Multi-Document Transaction

MongoDB 🔴 Senior

Definition

Transaction ACID qui garantit l'atomicite sur plusieurs documents et collections. Introduite en MongoDB 4.0 pour les replica sets et 4.2 pour les clusters shardes.

Analogie

Un virement bancaire : le debit ET le credit doivent reussir ensemble, sinon rien ne se passe.

Exemple de code

const session = client.startSession();
session.startTransaction();
await accounts.updateOne(
  { _id: 'A' }, { $inc: { bal: -100 } }, { session }
);
await accounts.updateOne(
  { _id: 'B' }, { $inc: { bal: 100 } }, { session }
);
await session.commitTransaction();

Cas d'usage

Operations financieres ou tout scenario ou plusieurs documents doivent etre modifies de facon atomique.

Anti-pattern

Utiliser des transactions pour tout au lieu de profiter du modele de document embarque de MongoDB.
#sgbd#interview#database#mongodb