Multi-Document Transaction
MongoDB 🔴 SeniorDefinition
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.