ACID

DevOps 🟡 Mid

Definition

Propriétés des transactions relationnelles. Atomicité (tout ou rien), Cohérence, Isolation (pas d'interférence), Durabilité (persisté après commit).

Analogie

Un virement bancaire : soit les deux comptes sont mis à jour, soit aucun. Pas de demi-transfert.

Exemple de code

const trx = await db.transaction();
try {
  await trx('accounts').where({ id: from }).decrement('balance', amount);
  await trx('accounts').where({ id: to }).increment('balance', amount);
  await trx.commit();
} catch (e) {
  await trx.rollback();
}

Cas d'usage

Garantir l'intégrité des données financières, commandes, stocks.

Anti-pattern

Faire deux requêtes séparées au lieu d'une transaction : incohérence si crash entre les deux.
#devops#database#interview