Besoin

  • Garantir la cohérence de données en cas de modifications concurrentes
  • Permettre l'annulation d'un ensemble d'opérations

Analyse

Une transaction regroupe une série d'opérations.

Elle est caractérisée par des propriétés "A. C. I. D." :

  • (A)tomicité (Atomicity) : tout réussit, ou rien ne réussit
  • (C)ohérence (Consistency) : la transaction laisse toujours les données dans un état valide
  • (I)solation (Isolation) : la vision des données durant la transaction est indépendante des opérations d'autres transactions parallèles
  • (D)urabilité (Durability) : le résultat des opérations de la transaction dure dans le temps (il n'est pas perdu si une machine plante après car persistant dans une base de données par exemple)

Une transaction peut regrouper des opérations sur :

Exemples

Des exemples de transactions sont :

  • un virement : cette opération est décomposée en un débit sur un compte puis un crédit sur un autre compte. Je ne peux accepter de maintenir le débit si le crédit n'a pu être effectué (en raison d'une règle métier, d'un crash de machine, etc).

Notes

  • La durabilité peut être optionnelle. Par exemple pour des opérations sur des ressources JDO transitoires (transient, transactions en mémoire)
  • Les sbbd de type NoSQL ne requièrent pas de transactions aussi classiques.