En informatique, et particulièrement dans les bases de données, une transaction, telle qu'une réservation, un achat ou un paiement, est mise en œuvre via une suite d'opérations qui font passer la base de données d'un état A — antérieur à la transaction — à un état B postérieur[1] et des mécanismes permettent d'obtenir que cette suite soit à la fois atomique, cohérente, isolée et durable (ACID).
- atomique : la suite d'opérations est indivisible, en cas d'échec en cours d'une des opérations, la suite d'opérations doit être complètement annulée (rollback) quel que soit le nombre d'opérations déjà réussies.
- cohérente : le contenu de la base de données à la fin de la transaction doit être cohérent sans pour autant que chaque opération durant la transaction donne un contenu cohérent. Un contenu final incohérent doit entraîner l'échec et l'annulation de toutes opérations de la transaction.
- isolée : lorsque deux transactions A et B sont exécutées en même temps, les modifications effectuées par A ne sont ni visibles par B, ni modifiables par B tant que la transaction A n'est pas terminée et validée (commit).
- durable : Une fois validé, l'état de la base de données doit être permanent, et aucun incident technique (exemple : crash) ne doit pouvoir engendrer une annulation des opérations effectuées durant la transaction.
La majorité des systèmes de gestion de base de données hiérarchiques comme relationnels du marché permettent de réaliser des transactions atomiques, cohérentes, isolées et durables. Les systèmes NoSQL n'y prétendent pas[2].
- ↑ (en) Philip A. Bernstein et Eric Newcomer, Principles of transaction processing, Morgan Kaufmann - 1997, (ISBN 9781558604155)
- ↑ Peter McIntyre et al., Pro PHP Programming, Apress, page 127 : « NoSQL
databases, as the name implies, are not classic SQL databases and do not implement the ACID properties. »