Module 140
Administrer et exploiter des bases de données
Jour 10 - Gestion des transactions
# Objectifs du jour
Objectifs du jour
- Transactions
- Principes ACID
- Concurrence des données
- Niveaux d'isolation
Transactions
# Notions ACID des SGBDRs
Une transaction dans le contexte des bases de données est un ensemble d'opérations (lecture, écriture, mise à jour, suppression) qui sont traitées comme une seule unité de travail.
Elle représente un changement cohérent de l'état de la base de données.
Exemple
Prenons l'exemple d'un transfert bancaire :
- Débiter le compte A de CHF 100
- Créditer le compte B de CHF 100
Ces deux opérations forment une seule transaction. Si l'une des opérations échoue, l'ensemble de la transaction est annulé pour maintenir la cohérence des données bancaires.
# Notions ACID des SGBDRs
Dans un SGBDR notamment Oracle, une transaction se termine par un COMMIT (validation) ou un ROLLBACK (annulation).
Il est donc importance de gérer les erreurs lors des transactions. Par exemple, si une erreur survient pendant une transaction, elle doit être annulée avec un ROLLBACK pour éviter une base de données incohérente.
Exemple
BEGIN
-- Débiter 100 CHF du compte A
UPDATE comptes SET solde_compte = solde_compte - 100 WHERE code_compte = 'CC001';
-- Créditer 100 CHF au compte B
UPDATE comptes SET solde_compte = solde_compte + 100 WHERE code_compte = 'CC002';
-- Valider la transaction
COMMIT;
EXCEPTION
-- En cas d'erreur, annuler tout
WHEN OTHERS THEN
ROLLBACK;
END;
/
# Notions ACID des SGBDRs
Les transactions assurent 4 principes (ACID) :
A - Atomicité : Une transaction est indivisible. Soit toutes ses opérations réussissent, soit aucune. Il n'y a pas d'état intermédiaire.
C - Cohérence : Une transaction doit amener la base de données d'un état cohérent à un autre. Cela signifie que toutes les règles d'intégrité doivent être respectées avant et après la transaction.
I - Isolation : Chaque transaction est indépendante des autres, empêchant les conflits et les incohérences.
D - Durabilité : Une fois validée, une transaction ne peut être annulée. Même en cas de panne du système.
Pourquoi utiliser des transactions en base de données ?

Exercice 8.1
Exercice de gestion des transactions et
des exceptions :
# Exercice
Gestion des transactions
# Notions ACID des SGBDRs
L'isolation garantit que chaque transaction s'exécute de manière indépendante des autres, empêchant les conflits et les incohérences.
Isolation dans le Principe ACID
Lorsqu'il y a plusieurs transactions simultanées, elles peuvent interagir de manière imprévue et causer des problèmes de concurrence des données :
- Lecture sale (Dirty Read) : Lire des données non validées par une autre transaction.
- Lecture non répétable (Non-Repeatable Read) : Une même requête retourne différents résultats dans la même transaction.
- Lecture fantôme (Phantom Read) : Des nouvelles lignes apparaissent alors qu’une transaction est en cours.
- Interblocage (Dead Lock) : Deux transactions se bloquent mutuellement en attendant chacune une ressource verrouillée par l'autre, empêchant toute progression.

Exercice 8.2
Exercice en groupe de présentation
des problèmes de concurrence des
données :

# Exercice
Concurrence des données
Merci de votre attention 😊
Bonne fin de journée !



M140 - Jour 10
By paranor
M140 - Jour 10
- 172