Vous êtes sur la page 1sur 70

Transactions et Gestion de Concurrence,

Transactions Distribuées
Présentation Générale

 Contexte
 Données partagées
 Traitements concurrents
 Pannes
 Problématique
 Gestion de la concurrence & des pannes
 Maintien de la cohérence

05/12/09 Transactions distribuées 2


Modèle de donnée

 Données partagées (Objets)


 Mémoire volatile
 Fonctionnement général
 Perdu en cas de panne
 Mémoire persistente (Disque)
 Informations suffisantes
 Reconstruire un état cohérent

05/12/09 Transactions distribuées 3


Modèle de faute (Lamport 1981)

 Stockage persistent
 Échec de l'écriture possible (détecté à la lecture)
 Sans impact sur les données existentes
 Messages
 Délais arbitraires
 Pertes et corruptions (détectées)
 Processus
 Défaillance de type « Fail-stop »

05/12/09 Transactions distribuées 4


Transaction : définition

 Ensemble d'opérations sur les données


 Indivisible pour le serveur qui l'exécute
 Fonctionnement en « tout ou rien »
 Indivisible pour les autres
 Visibilité de l'effet de la transaction

05/12/09 Transactions distribuées 5


Propriétés des transactions

 Un modèle de transactions : ACID (1983)


 Atomicité
 Fonctionement en « tout ou rien »
 Cohérence
 Données cohérentes avant & après
 Isolation
 Visibilité des actions intermédiaires
 Durabilité
 Pas de remise en cause une fois validée

05/12/09 Transactions distribuées 6


Interface

 OpenTransaction() Tid
 Nouvelle transaction
 CloseTransaction(Tid)  (commit,abort)
 Validation par le client
 Échec possible (annulation par le serveur)
 AbortTransaction(Tid)
 Annulation par le client

05/12/09 Transactions distribuées 7


Plan

 Transactions locales
 Gestion de la concurrence
 Annulation de transaction
 Transactions imbriquées
 Techniques
 Verrous & Interblocages
 Gestion optimiste
 Datation
 Transactions distribuées

05/12/09 Transactions distribuées 8


Gestion de concurrence

05/12/09 Transactions distribuées 9


Gestion de la concurrence

 Objectif du service
 Performances
 Maximiser la concurrence
 Exécution concurrente
 Entrelacement des opérations
 « Serially equivalent » ou « serializable »

05/12/09 Transactions distribuées 10


Concurrence : problèmes (1)

 Perte d'écriture
 Transactions avec écritures concurrentes
 T1: X := X+1
 T2: X := X+2
 Entrelacement possible et non valide
T1 T2
 t=0 V1 := GetX()
 t=1 V2 := GetX()
 t=2 SetX(V1+1)
 t=3 SetX(V2+2)

05/12/09 Transactions distribuées 11


Concurrence : problèmes (2)

 Lecture incohérente
 Transactions avec lecture & écriture concurrentes
 T1: A := A-1; B := B+1
 T2: C := A+B
 Entrelacement possible et non valide
T1 T2
 t=0 A := A-1
 t=1 V1 := A
 t=2 V2 := B
 t=3 B := B+1
 t=4 C := V1+V2
05/12/09 Transactions distribuées 12
Équivalence séquentielle

 Critère de correction
 Vérifier l'entrelacement lié à la concurrence
 Prévention
 Pertes d'écriture
 Lectures incohérentes
 Alternatives
 Verrous
 Gestion de concurrence optimiste
 Ordre par datation
05/12/09 Transactions distribuées 13
Verrous

 Verrous
 Sur chaque objet accédé
 Association avec une transaction
 Relâchés en fin de transaction
 Partage de verrous
 Parallélisation des accès
 Interblocage
 T1 verrouille A et veut accéder à B
 T2 verrouile B et veut accéder à A
05/12/09 Transactions distribuées 14
Gestion de concurrence optimiste

 Exécution libre des transactions


 Vérification à la validation
 Accès conflictuels à un objet?
 Oui : annuler la transaction
 Non : valider la transaction
 Redémarrage de la transaction par le client

05/12/09 Transactions distribuées 15


Ordre par datation
 Datation
 Des transactions
 Des accès aux objets
 Lors d'un accès
 Comparer l'estampille de la transaction et de l'objet
accédé
 Suspendre la transaction
 Annuler la transaction
 Exécuter immédiatement l'opération

05/12/09 Transactions distribuées 16


Gestion de concurrence :
conclusion
 Deux approches
 Attente
 Vérification à la validation

05/12/09 Transactions distribuées 17


Annulation de transaction

05/12/09 Transactions distribuées 18


Lectures sales (1)

 Lectures sales
 Isolation des transactions
 Transactions concurrentes
 T1: A := A+1 || T2: A := A+2
 Exécution sérialisable mais non valide
T1 T2
 t=0 a := a+1
 t=1 a := a+2
 t=2 commit()
 t=3 abort()

05/12/09 Transactions distribuées 19


Lectures sales (2)

 Validation de T2?
 Situation non réparable!
 Stratégie
 Dépendance de T2 vers T1
 Lecture de données altérées
 Suspendre la validation de T2
 Attendre la fin de T1
 Validation de T1 : validation de T2
 Annulation de T1 : annulation de T2

05/12/09 Transactions distribuées 20


Lectures sales (3)

 Annulations en cascade
 Ti dépend de Ti-1 qui ... dépend de T1
 Annulation de T1 : annulation de T2, ..., Ti!
 Prévention
 Dépendance vers les transactions non validées
 Suspension des lectures sur les objets altérés par
des transactions en cours

05/12/09 Transactions distribuées 21


Écritures prématurées (1)

 Écritures concurrentes sur un même objet


 Initialement, A=0
 T1: A := 1 || T2: A := 2
 Absence d'isolation
 Que vaut A après l'exécution?
 Exécution sérialisable
 Si T1 et T2 valident
 T1 puis T2 : A=2
 T2 puis T1 : A=1

05/12/09 Si T1 et/ou T2 échoue?
Transactions distribuées 22
Écritures prématurées (2)

 T1 T2
 t=0 A := 1
 t=1 A := 2
 t=2 commit()
 t=3 abort()
 A=?

05/12/09 Transactions distribuées 23


Écritures prématurées (3)

 T1 T2
 t=0 A := 1
 t=1 A := 2
 t=2 abort()
 t=3 commit()
 A=?

05/12/09 Transactions distribuées 24


Écritures prématurées (4)

 T1 T2
 t=0 A := 1
 t=1 A := 2
 t=2 abort()
 t=3 abort()
 A=?
 Si on échange t=2 et t=3?

05/12/09 Transactions distribuées 25


Sauvegarde de l'état précédent

 Mémoriser l'état qui précède toutes les


écritures d'une transaction
 Restaurer la sauvegarde si annulation
 Suspendre les écritures sur les objets altérés
par des transactions en cours

05/12/09 Transactions distribuées 26


Conclusion

 Prévention?
 Lectures sales
 Suspension des lectures
 Écritures prématurées
 Suspension des écritures
 En somme
 Suspension des lectures & des écritures
 Exécution dite « stricte » des transactions
 Assure la propriété d'isolation
05/12/09 Transactions distribuées 27
Versions « tentatives »
 Technique des « tentatives »
 Modification d'un objet
 Copie locale à la transaction
 Validation de la transaction
 Enregistrement réel de toutes les copies locales
 Annulation de la transaction
 Rien à faire!
 Assure l'isolation des transactions

05/12/09 Transactions distribuées 28


Transactions imbriquées

05/12/09 Transactions distribuées 29


Définition

 Hiérarchie de transactions
 Arborescence
 Une transaction principale : racine
 Transactions intermédiaires : sous-transactions
 Sous-transaction
 Exécution concurrente
 Sous-transaction de même niveau
 Validation & échec
 Local à la sous-transaction
 Pas de durabilité
05/12/09 Transactions distribuées 30
Règles de validation

 Quand toutes les sous-transactions ont terminé


 Sous-transaction
 Validation provisoire ou bien échec définitif
 Échec d'une transaction englobante
 Échec de toutes ses sous-transactions
 Échec d'une transaction imbriquée
 Pas de règle pour la transaction englobante
 Validation de la transaction racine
 Entérine toutes les validations provisoire
05/12/09 Transactions distribuées 31
Verrous

05/12/09 Transactions distribuées 32


Verrouillage à deux phases

 Assurer la cohérence
 Sérialisation des accès
 Garantie d'une exécution sérialisable?
 Vérouillage à deux phases (2PL)
 1ère phase : acquisition des verrous
 2ème phase : libération des verrous
 Interdiction d'acquérir de nouveaux verrous dès lors
qu'un verrous a été relâché au cours de la transaction

05/12/09 Transactions distribuées 33


Verrouillage à deux phases strict

 Gestion des annulations


 Exécutions strictes
 Suspension jusqu'à la terminaison des transactions
 Verrouillage à deux phases strict
 Conservation des verrous jusqu'à la terminaison de la
transaction

05/12/09 Transactions distribuées 34


Caractéristiques

 Granularité des verrous


 Sur quels objets porte le verrou?
 Tout, ensemble d'objets, objet, parties d'un objet
 Nature des verrous
 Sur quelles opérations porte le verrou?
 Verrous exclusifs
 Verrous en lecture, en écriture
 Impacte sur les performances
 Minimiser les attentes

05/12/09
Maximiser la concurrence
Transactions distribuées 35
Verrous en lecture/écriture

 Trois niveaux ordonnés de verrouillage


 (1) Libre, (2) verrouillé en lecture, (3) en écriture
 Caractéristiques
 Lecteurs multiples
 Un seul « écrivain »
 Assure
 Isolation et prévention des lectures incohérentes
 Pertes d'écritures
 Promotions de verrou (2) (3)
05/12/09 Transactions distribuées 36
Verrous et imbrication

 Isolation de branches de transactions


 Héritage des verrous des sous-transactions par les
transactions englobantes
 Isolation et sérialisation au sein d'une branche
de transaction
 Une sous-transaction peut acquérir un verrou issu
de sa transaction englobante
 Le verrou est restitué en fin de sous-transaction

05/12/09 Transactions distribuées 37


Interblocage (1)

 Détection
 Cycle dans le graphe des « qui attend qui? »
 Choix de la transaction à annuler
 Prévention
 Verrouiller tout l'espace de travail au début de la
transaction
 Atomicité du verrouillage
 Connaissance de l'espace de travail?
 Ordonner l'acquisition des verrous

05/12/09 Transactions distribuées 38


Interblocage (2)

 Temporisation
 Délai d'invulnérabilité
 Hors délai
 Toute tentative de verrouillage concurrent casse le verrou
hors délai et annule la transaction associée
 Choix du délai
 Système en surcharge
 Pénalise les « grosses transactions »
 Fréquence liée à la granularité des verrous

05/12/09 Transactions distribuées 39


Performances

 Granularité des verrous


 Impacte la concurrence des accès
 Minimiser le grain de verrouillage!
 2VL (Two version locking)
 Verrous hiérarchiques

05/12/09 Transactions distribuées 40


Gestion de concurrence optimiste

05/12/09 Transactions distribuées 41


Gestion optimiste

 Alternative au verrouillage
 Verrous
 Assurer une exécution sérialisable
 Surcoût (même en lecture)
 Interblocage
 Concurrence limitée par les techniques de prévention
(interblocage, échec en cascade...)
 Gestion optimiste
 Hypothèse : peu d'accès conflictuels
 Laisser vivre & annuler les cas erronés
 Annulation : réexécution par le client
05/12/09 Transactions distribuées 42
Principe

 Trois phases
 Phase de travail
 Phase de validation
 En fin de transaction (validation ou annulation)
 Échec : peut conduire à annuler d'autres transactions
 Phase de mise à jour
 Validation persistente des modifications réalisées par la
transaction
 Transaction en lecture : rien à faire!

05/12/09 Transactions distribuées 43


Phase de travail

 Versions tentatives
 Tout objet altéré par la transaction
 Accès en lecture
 Lecture de la tentative de la si elle existe
 Lecture de la version validée sinon
 Informations connexes
 Read set
 Ensemble des objets lus par la transaction
 Write set
 Ensemble des objets altérés par la transaction
05/12/09 Transactions distribuées 44
Validation

 Conflits entre deux transactions


 Accès à un objet altéré par l'autre transaction
 Ordonner les validations
 Identifier les transactions validées (compteur)
 Validation en arrière
 Conflits avec les transactions précédentes
 Validation en avant
 Conflits avec les transactions à venir

05/12/09 Transactions distribuées 45


Validation en arrière

 Comparaison
 Transaction en cours de validation
 Read set (objets accédés en lecture)
 Transactions précédentes
 Write sets (objets altérés)
 Conservation des write sets des transactions
passées tant que nécessaire
 Les transactions en écriture seulement valident
toujours
05/12/09 Transactions distribuées 46
Validation en avant

 Comparaison
 Transaction en cours de validation
 Write set (objets altérés)
 Transaction à venir (en cours)
 Read sets (objets accédés en lecture)
 Issue de la validation : annulation ou
suspension
 Annuler la transaction en cours de validation ou les
transactions à venir et en conflits?
 Les transactions en lecture seulement valident
05/12/09 Transactions distribuées 47
Conclusion

 Validation en arrière
 Méthode de résolution de conflit imposée
 Validation en avant
 Choix dans la résolution des conflits
 Hypothèse : peu d'accès conflictuels
 Annulation : surcoût & perte de travail
 Famine
 Rejeu des transactions annulées par les clients
 Annulation systématique?
05/12/09 Transactions distribuées 48
Gestion par datation

05/12/09 Transactions distribuées 49


Principe

 Datation des transactions


 À l'initialisation de la transaction
 Ordre total des transactions
 Conflit
 Accès à un objet altéré par une transaction future
 Écriture d'un objet lu par une transaction future
 Dater les accès aux objets
 Avec les dates des transactions qui font les accès

05/12/09 Transactions distribuées 50


Règle d'accès en écriture

 Règle d'écriture d'un objet


 Aucune lecture par une transaction future
 Dernière écriture validée effectuée par une
transaction antérieure
 Liste ordonnée de versions validées et tentatives
 Ordre selon les dates des transactions
 Écriture dans une version tentative insérée dans la
liste ordonnée
 Sinon
 Annulation de la transaction
05/12/09 Transactions distribuées 51
Règle d'accès en lecture

 Règle de lecture d'un objet


 Aucune écriture validée par une transaction future
 Dernière écriture (validée ou tentative) de l'objet et
antérieure à la transaction
 Validée : effectuer l'accès
 Tentative : attendre l'issue de la transaction qui a effectué
l'écriture et recommencer la validation de la lecture
 Sinon
 Annulation de la transaction

05/12/09 Transactions distribuées 52


Exemples

 Transactions T1 < T2 < T3 < T4


 Version validé par T3 T3

T4
 Version tentative de T4
T2
 Objet lu par T2

05/12/09 Transactions distribuées 53


Exemple d'écritures

 T3 altère un objet
Annulation de T3

Avant T2 Avant T4 Avant T4

Après T2 T3 Après T4 Après T4

Avant T1 T2 Avant T1 T4

Après T1 T2 T3 Après T1 T3 T4

05/12/09 Transactions distribuées 54


Exemple de lectures

 T3 lit un objet
Avant T2 Avant T4

Après T2 T3 Après T4

Avant T2 T4 Avant T1 T2

Après T2 T3 T4 Après T1 T2 T3

Lecture de T2 Suspension de T3

05/12/09 Transactions distribuées 55


Transactions distribuées

05/12/09 Transactions distribuées 56


Introduction

 Définition
 Implication de différentes machines
 Deux visions
 Transactions plates
 Opérations en séquences sur les différents sites
 Transactions imbriquées
 Exécution concurrente des sous-transactions
 Coordination à l'issue de la transaction
 Protocole de validation
05/12/09 Transactions distribuées 57
Coordination

 Atomicité des transactions


 Protocole de groupe
 Coordinateur
 JoinTransaction(Tid, participant)
 Consensus
 Validation
 Annulation
 Pannes
 Un processus fautif est redémarré et recharge un
état persistent suffisant pour reprendre
05/12/09 Transactions distribuées 58
Validation atomique à deux
phases (1)
 2PC : Jim Gray (1978)
 Validation ou annulation?
 Validation si tous les processus valident
 Annulation dans tous les autres cas
 Deux phases
 Autorise un participant à échouer
 Une participant peut décider unaninement de
l'échec, mais pas de la validation

05/12/09 Transactions distribuées 59


Validation atomique à deux
phases (2)
 1ère phase
 Vote des participants : validation ou annulation
 Chaque participant enregistre son état et sa
décision avant de voter
 2ème phase
 Diffusion de l'issue du vote par le coordinateur

05/12/09 Transactions distribuées 60


Protocole (1)

 Status d'un participant


 Normal
 Préparé à valider, mais incertain
 Validé ou annulé
 Status du coordinateur
 Préparé à valider, en attente des votes
 Validé ou annulé
 Terminé

05/12/09 Transactions distribuées 61


Protocole (2)

Coordinateur Participant

Préparé à valider,
en attente des votes
Préparé à valider,
issue incertaine
Transaction validée
Transaction validée

Transaction terminée

05/12/09 Transactions distribuées 62


Gestion des fautes

 Panne
 Participant
 Coordinateur
 Reprise avec restauration d'un état
 Systèmes asynchrones
 Délais arbitrairement longs
 Pas nécessairement représentatif d'une panne
 Temporisations
 Suspension des processus
05/12/09 Transactions distribuées 63
Imbrication et distribution (1)

 Transactions imbriquées
 Extension
 OpenSubTransaction(Tid)  Tid
 GetStatus(Tid)  commited, aborted, provisional
 Échec et annulation
 L'échec d'une sous-transaction n'implique pas l'échec de
la transaction englobante
 L'annulation d'une transaction entraîne l'annulation de
toutes ses sous-transactions

05/12/09 Transactions distribuées 64


Imbrication et distribution (2)

 Préparé à valider ≠ validation provisoire


 Préparé à valider
 État persistent
 Garantie sur la validation de la transaction
 Validation provisoire
 Perdue en cas de panne
 Exécution réussie
 Validation possible

05/12/09 Transactions distribuées 65


Validation de transactions
imbriquées
 Enterriner les validations provisoires
 Liste des transactions qui ont validé provisoirement
 Protocol à deux phases
 Hiérarchique
 N'implique que les sous-transactions
 Plat
 Nécessite de connaître toutes les sous-transactions
provisoirement validées

05/12/09 Transactions distribuées 66


Interblocages distribués

 Détection des interblocages


 Absence de vision globale
 Un objet et ses verrous sont gérés sur la même machine
 Graphe distribué des « Qui attend qui? »
 Peut être construit à partir des graphes locaux
 Solution simple
 Détection centralisée
 Collecte des graphes locaux

05/12/09 Transactions distribuées 67


Interblocages fantômes

 Détection d'un interblocage distribué


 Informations périmées
 L'interblocage n'existe plus
 Une transaction peut avoir relâché l'un des verrous
impliqués

05/12/09 Transactions distribuées 68


Détection d'interblocage distribué
(1)
 Sans construction du graphe des dépendances
 Algorithme de suivi de chemin
 Initialisation
 Suspension de transaction T  U sachant U  ?
 Émission d'une sonde <T  U> vers le site qui gère le
verrou qui bloque U
 Détection
 Réception d'une sonde
 Conclusion sur la présence d'interblocage
 Propagation de la sonde
05/12/09 Transactions distribuées 69
Détection d'interblocage distribué
(2)
 Détection : propagation de sonde
 Réception d'une sonde <T U>
 Si U est effectivement suspendue avec U  V
 Propagation du chemin <T  U  V>
 Considérations
 Nombre de messages générés
 La plupart des cycles sont simples <T U T>
 Déclenchement de la détection
 Plusieurs détections du même interblocage
05/12/09
 Plusieurs annulations de transaction
Transactions distribuées 70

Vous aimerez peut-être aussi