Ressource

Les deux sections précédentes sur le Contrôle de la concurrence et le Niveau d’isolation permettent d’assurer une transaction ACID physique. Mais que ce passe-t-il lorsque nous avons une logique métier transactionnelle répartie sur plusieurs transaction physique ?

Pourquoi ACID n’est pas suffisant ?

ACID garantit la cohérence technique des transactions au niveau de la base de données, mais cela ne suffit plus dès que l’on raisonne en transactions logiques métier, souvent réparties sur plusieurs interactions.

  1. Une première transaction lit des données et les expose à l’utilisateur (=> une transaction)
  2. L’utilisateur modifie ces données côté frontend, puis les renvoie au backend (=> une seconde transaction)
Onglet A charge la commande -> status = OPEN
Onglet B charge la commande -> status = OPEN

Onglet A valide -> status = VALIDATED
Onglet B annule -> status = CANCELED

Ces deux étapes font partie d’une même intention métier, mais sont exécutées dans deux transactions techniques séparées. Du point de vue du SGBD, tout est techniquement correct — chaque action est dans une transaction bien isolée. Si nous ne mettons aucun contrôle en place c’est la dernière exécution qui fait foi