Transcations réparties Concept de transaction Gestion de transactions Transactions dans un système réparti Une transaction est une collection d'actions qui transforment la BD (ou des fichiers) depuis un en un autre BD cohérente (garantie par le système) transaction cohérente (garantie par le programmeur) BD dans un Begin exécution de la transaction BD dans un End Page 1 Page 2 Exemple de transaction Propriétés des transactions (ACIDité) Réduire la cde no 10 de 5 unités et les reporter à la cde 12 Transaction Report-qté begin exec sql UPDATE Cde SET qte = qté - 5 WHERE ncde = 10; exec sql UPDATE Cde SET qté = qté + 5 WHERE ncde = 12; exec sql COMMIT WORK; end. ATOMICITE tout (COMMIT) ou rien (ABORT) COHERENCE les contraintes d'intégrité sont respectées ISOLATION les mises à jour concurrentes sont invisibles DURABILITE les mises à jour validées persistent Page 3 Page 4
Isolation par verrouillage 2 Phases Performances verrous T temps Les verrous en lecture sont partageables; ceux en écriture sont exclusifs Règle 1 avant d'accèder un granule x, une transaction doit acquérir un verrou sur x. Si x est déjà verrouillé de façon exclusive, la transaction attend Règle 2 dès qu'une transaction relâche un verrou, elle ne peut plus acquérir de nouveau verrou L'objectif est de réduire: les blocages une transaction attend qu'une autre transaction relâche ses verrous les inter-blocages un ensemble de transactions attend que l'une d'entre elles relâche ses verrous Page 5 Page 6 Degrés d isolation Exemple de transaction distribuée Degré 0 verrou en écriture sur x relâché après écriture de x pas d écritures "sales" Degré 1 verrouillage en écriture à deux phases pas de pertes de mise à jour Degré 2 verrou en lecture sur x relâché après lecture de x pas de lectures "sales" Degré 3 verrouillage en lecture à deux phases Transaction: transfert CC-CE Vue globale de l info. client Trans. multi-base SGBDR Comptes courants (DB2/AIX) Comptes d épargne (Oracle/Linux) les lectures sont répétables Serveurs de données Page 7 Page 8
Gestion de transactions réparties Protocole de validation en 2 étapes (2PC) Begin Read Write application Transactions Globales résultats Objectif : Exécuter COMMIT pour une transaction répartie Phase 1 Préparer à écrire les résultats des mises à jour dans la BD Phase 2 Ecrire ces résultats dans la BD STrans. Transactions Locales STrans. Transactions Locales composant système d un site qui applique le protocole composant système d un autre site qui participe dans l'exécution de la transaction Page 9 Page 10 Protocole 2PC : messages échangés Actions du protocole Coordinator INITIAL INITIAL t.commit Initial prepare Initial NOK write begin_commit VOTE-ABORT PREPARE No Ready to? prepare* NOK OK* Wait abort* commit* OK abort Ready commit WAIT Any No? No write commit COMMIT Yes VOTE-COMMIT GLOBAL-COMMIT ACK ABORT ACK GLOBAL-ABORT Yes write ready READY Type of msg? write commit Légende: message reçu message envoyé * = de/à tous les participants write end_of_transaction ABORT COMMIT Page 11 Page 12
Points clé du protocole 2PC Validation normale Lorsque le participant envoie OK au coordinateur Le participant s engage à Le participant valide ssi le coordinateur le lui ordonne Le coordinateur peut demander au participant d abandonner Lorsque le participant envoie NOK au coordinateur Le participant peut abandonner unilatéralement Le coordinateur décide de ssi tous les participants sont OK Chaque site doit maintenir un journal des messages échangés reprise après panne Page 13 Page 14 Panne d'un participant avant d'être Prêt Panne d'un participant après s'être déclaré Prêt abandon timeout abandon } reprise panne fait } panne reprise Page 15 Page 16
Panne du coordinateur Page 17