Administrer et exploiter des bases de données
Jour 10 - Gestion des transactions
# Objectifs du jour
# 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.
Prenons l'exemple d'un transfert bancaire :
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.
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.
Exercice 8.1
Exercice de gestion des transactions et
des exceptions :
# Exercice
# 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.
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 :
Exercice 8.2
Exercice en groupe de présentation
des problèmes de concurrence des
données :
# Exercice
Merci de votre attention 😊
Bonne fin de journée !