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 :

  1. Débiter le compte A de CHF 100
  2. 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