yostane / cours-archi-logicielle

Cours d'Architecture Logicielle
https://yostane.github.io/cours-archi-logicielle/
Other
3 stars 0 forks source link

ACID Properties in Databases with examples - À intégrer #17

Closed nidalmtg closed 2 months ago

nidalmtg commented 2 months ago

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ç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

Remarques

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

Remarques


Conclusion

Références