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.