Transaction
- Garantir la cohérence de données en cas de modifications concurrentes
- Permettre l'annulation d'un ensemble d'opérations
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)