Les propriétés ACID sont un ensemble de propriétés qui garantissent que les transactions sont fiables.
Cela cignifie Atomicité, Cohérence, Isolation et Durabilité.
Atomicité (Atomicity)
Définition
L'atomicité signifie que les transactions sont traitées comme une seule unité.
Cela signifie que toutes les opérations d'une transaction sont effectuées ou aucune d'entre elles ne l'est.
Exemple
Exemple 1: Transfert d'argent entre deux comptes bancaires.
Opérations:
Débiter le compte A.
Créditer le compte B.
Atomicité: Si l'une des opérations échoue, les deux opérations sont annulées.
Remarques
L'Atomicité est souvent implémentée en utilisant des logs.
Cohérence (Consistency)
Définition
La cohérence garantit que les données sont toujours valides avant et après une transaction.
Elles doivent respecter toutes les contraintes, les règles et les relations.
Si une transaction viole l'intégrité des données, elle est annulée.
Exemple
Exemple 1: Transfert d'argent entre deux comptes bancaires.
Contrainte: Le solde du compte ne peut pas être négatif.
Cohérence: Si le solde du compte A est de 100€, et que l'on essaie de transférer 150€, la transaction est
annulée.
Remarques
La Cohérence est souvent implémentée en utilisant des contraintes, des règles et des relations.
Par exemple, les clés étrangères dans une base de données relationnelle, ou les contraintes de vérification sur les
champs (taille Varchar, etc...).
Isolation
Définition
L'isolation garantit que les transactions s'exécutent indépendamment les unes des autres.
Cela signifie que les transactions ne peuvent pas interférer les unes avec les autres.
Le plus haut niveau d'isolation est souvent difficile à atteindre en raison des performances. Il consiste à ne
jamais permettre à deux transactions de se chevaucher. C'est ce qu'on appelle l'isolation de niveau serializable.
Il existe plusieurs niveaux d'isolation, tels que read committed, repeatable read et serializable.
Chaque niveau d'isolation a ses propres problèmes potentiels, tels que les dirty reads, les non-repeatable
reads et les phantom reads.
Dirty Read
Un dirty read se produit lorsqu'une transaction lit des données qui ont été modifiées par une autre transaction,
mais qui n'ont pas encore été validées.
Exemple de cas d'utilisation :
La transaction A modifie une ligne où age = 30 pour le transformer à age = 40, mais n'a pas encore validé la transaction (par exemple, elle doit rollback).
La transaction B lit la ligne modifiée par la transaction A (elle reçoit age = 40.
La transaction A rollback, et la ligne est restaurée à son état initial (age = 30) MAIS la transaction B a déjà lu la ligne avec le résultat modifié (age = 40).
Non-repeatable Read
Un non-repeatable read se produit lorsqu'une transaction lit des données qui ont été modifiées par une autre
transaction, puis relit ces données et obtient un résultat différent.
Exemple de cas d'utilisation :
La transaction A lit une ligne où age = 30.
La transaction B modifie la ligne lue par la transaction A et age = 25.
La transaction A relit la ligne et obtient un résultat différent, ce qui peut causer une erreur.
Phantom Read
Un phantom read se produit lorsqu'une transaction lit un ensemble de lignes qui satisfont une condition, puis une
autre transaction insère une nouvelle ligne qui satisfait la même condition, et la première transaction relit les
données et obtient un résultat différent.
Exemple de cas d'utilisation :
La transaction A lit toutes les lignes où age > 18.
La transaction B insère une nouvelle ligne où age = 20.
La transaction A relit toutes les lignes où age > 18 et obtient un résultat différent.
Exemple
Exemple 1: Transfert d'argent entre deux comptes bancaires.
Opérations:
Débiter le compte A.
Créditer le compte B.
Isolation: Si deux transactions essaient de débiter le compte A en même temps, l'une des transactions doit
attendre que l'autre soit terminée.
Remarques
L'Isolation est souvent une question de performances. Plus le niveau d'isolation est élevé, plus les performances
sont faibles. C'est pourquoi il est important de choisir le bon niveau d'isolation en fonction des besoins.
Niveau d'isolation
Dirty Read
Non-repeatable Read
Phantom Read
Serializable
Impossible
Impossible
Impossible
Repeatable Read
Impossible
Impossible
Possible
Read Commited
Impossible
Possible
Possible
Durabilité (Durability)
Définition
La durabilité garantit que les données d'une transaction sont enregistrées de manière permanente.
Cela signifie que les données ne seront pas perdues, même en cas de panne du système.
Dans les BDDs distribuées, cela signifie que les données sont répliquées sur plusieurs nœuds.
Exemple
Exemple 1: Transfert d'argent entre deux comptes bancaires.
Durabilité: Si la transaction est confirmée, les données sont enregistrées de manière permanente, même en cas
de panne du système. Les données ne seront pas perdues, même si un nœud tombe en panne.
Remarques
La Durabilité est souvent implémentée en utilisant des logs de type WAL (Write-ahead logging).
Les logs de type WAL sont utilisés pour enregistrer les opérations avant de les exécuter. Cela garantit que les
données sont enregistrées de manière permanente avant d'être exécutées.
Conclusion
Les propriétés ACID sont essent,ielles pour garantir que les transactions sont fiables.
Chaque propriété a un rôle important à jouer pour garantir la fiabilité des transactions.
Il est important de comprendre les propriétés ACID pour concevoir des systèmes fiables et robustes.
Les propriétés ACID sont souvent implémentées en utilisant des logs, des contraintes et des règles.
Il est important de choisir le bon niveau d'isolation en fonction des besoins pour garantir des performances
optimales.
Définition générale des propriétés ACID
Les propriétés ACID sont un ensemble de propriétés qui garantissent que les transactions sont fiables. Cela cignifie Atomicité, Cohérence, Isolation et Durabilité.
Atomicité (Atomicity)
Définition
L'atomicité signifie que les transactions sont traitées comme une seule unité. Cela signifie que toutes les opérations d'une transaction sont effectuées ou aucune d'entre elles ne l'est.
Exemple
Remarques
Cohérence (Consistency)
Définition
La cohérence garantit que les données sont toujours valides avant et après une transaction. Elles doivent respecter toutes les contraintes, les règles et les relations. Si une transaction viole l'intégrité des données, elle est annulée.
Exemple
Remarques
Isolation
Définition
L'isolation garantit que les transactions s'exécutent indépendamment les unes des autres. Cela signifie que les transactions ne peuvent pas interférer les unes avec les autres.
Dirty Read
Un dirty read se produit lorsqu'une transaction lit des données qui ont été modifiées par une autre transaction, mais qui n'ont pas encore été validées.
Exemple de cas d'utilisation :
La transaction A modifie une ligne où
age = 30
pour le transformer àage = 40
, mais n'a pas encore validé la transaction (par exemple, elle doit rollback). La transaction B lit la ligne modifiée par la transaction A (elle reçoitage = 40
. La transaction A rollback, et la ligne est restaurée à son état initial (age = 30
) MAIS la transaction B a déjà lu la ligne avec le résultat modifié (age = 40
).Non-repeatable Read
Un non-repeatable read se produit lorsqu'une transaction lit des données qui ont été modifiées par une autre transaction, puis relit ces données et obtient un résultat différent.
Exemple de cas d'utilisation :
La transaction A lit une ligne où
age = 30
. La transaction B modifie la ligne lue par la transaction A etage = 25
. La transaction A relit la ligne et obtient un résultat différent, ce qui peut causer une erreur.Phantom Read
Un phantom read se produit lorsqu'une transaction lit un ensemble de lignes qui satisfont une condition, puis une autre transaction insère une nouvelle ligne qui satisfait la même condition, et la première transaction relit les données et obtient un résultat différent.
Exemple de cas d'utilisation :
La transaction A lit toutes les lignes où
age > 18
. La transaction B insère une nouvelle ligne oùage = 20
. La transaction A relit toutes les lignes oùage > 18
et obtient un résultat différent.Exemple
Remarques
Durabilité (Durability)
Définition
La durabilité garantit que les données d'une transaction sont enregistrées de manière permanente. Cela signifie que les données ne seront pas perdues, même en cas de panne du système. Dans les BDDs distribuées, cela signifie que les données sont répliquées sur plusieurs nœuds.
Exemple
Remarques
Conclusion
Références