GESTION DE TRANSACTIONS 1 2 3 4 5

  • Slides: 49
Download presentation
GESTION DE TRANSACTIONS 1. 2. 3. 4. 5. Objectifs et bases Journaux et reprise

GESTION DE TRANSACTIONS 1. 2. 3. 4. 5. Objectifs et bases Journaux et reprise Scénarios de reprise Modèles étendus Cas des systèmes répartis Gardarin 2001

1. Le transactionnel (OLTP) Ø Opérations typiques • mises à jour ponctuelles de ligne

1. Le transactionnel (OLTP) Ø Opérations typiques • mises à jour ponctuelles de ligne par des écrans prédéfinis, souvent répétitive, sur les données les plus récentes Ø Exemple • Benchmark TPC-A et TPC-B : débit / crédit sur une base de données bancaire • TPC-A transactionnel et TPC-B avec traitement par lot • Mesure le nombre de transactions par seconde (tps) et le coût par tps 2 ©Gardarin 2001

La base TPC-A/B 1 100000 Agences Comptes Caissiers Historique 100 Taille pour 10 terminaux,

La base TPC-A/B 1 100000 Agences Comptes Caissiers Historique 100 Taille pour 10 terminaux, avec règle d'échelle ( scaling rule) 3 ©Gardarin 2001

La transaction Débit - Crédit Ø Begin-Transaction • Update Account Set Balance = Balance

La transaction Débit - Crédit Ø Begin-Transaction • Update Account Set Balance = Balance + Delta Where Account. Id = Aid ; • Insert into History (Aid, Tid, Bid, Delta, Time. Stamp) • Update Teller Set Balance = Balance + Delta Where Teller. Id = Tid ; • Update Branch Set Balance = Balance + Delta Where Teller. Id = Tid ; Ø 90 % doivent avoir un temps de réponse < 2 secondes Ø Chaque terminal génère une transaction toute les 10 s Ø Performance = Nb transactions commises / Ellapse time Ø End-Transaction. 4 ©Gardarin 2001

Cohabitation avec le décisionnel Ø Les transactions doivent souvent cohabiter avec des requêtes décisionnelles,

Cohabitation avec le décisionnel Ø Les transactions doivent souvent cohabiter avec des requêtes décisionnelles, traitant un grand nombre de tuples en lecture Ø Exemple : • Moyenne des avoir des comptes par agence • SELECT B. Branch. Id, AVG(C. Balance) FROM Branch B, Account C WHERE B. Brach. Id = C. Branch. Id GROUP BY B. Branch. Id ; 5 ©Gardarin 2001

Les menaces Ø Problèmes de concurrence • pertes d ’opérations • introduction d ’incohérences

Les menaces Ø Problèmes de concurrence • pertes d ’opérations • introduction d ’incohérences • verrous mortels (deadlock) Ø Panne de transaction • erreur en cours d'exécution du programme applicatif • nécessité de défaire les mises à jour effectuées Ø Panne système • reprise avec perte de la mémoire centrale • toutes les transactions en cours doivent être défaites Ø Panne disque • perte de données de la base 6 ©Gardarin 2001

Propriétés des transactions Ø Atomicité • Unité de cohérence : toutes les mises à

Propriétés des transactions Ø Atomicité • Unité de cohérence : toutes les mises à jour doivent être effectuées ou aucune. Ø Cohérence • La transaction doit faire passer la base de donnée d'un état cohérent à un autre. Ø Isolation • Les résultats d'une transaction ne sont visibles aux autres transactions qu'une fois la transaction validée. Ø Durabilité • Les modifications d ’une transaction validée ne seront jamais perdue 7 ©Gardarin 2001

Commit et Abort Ø INTRODUCTION D’ACTIONS ATOMIQUES • Commit (fin avec succes) et Abort

Commit et Abort Ø INTRODUCTION D’ACTIONS ATOMIQUES • Commit (fin avec succes) et Abort (fin avec echec) • Ces actions s'effectuent en fin de transaction Ø COMMIT • Validation de la transaction • Rend effectives toutes les mises à jour de la transaction Ø ABORT • Annulation de la transaction • Défait toutes les mises à jour de la transaction 8 ©Gardarin 2001

Schéma de transaction simple Ø Fin avec succès ou échec Ø Begin_Transaction • •

Schéma de transaction simple Ø Fin avec succès ou échec Ø Begin_Transaction • • update. . . Commit ou Abort - Provoque l'intégration réelle des mises à jour dans la base - Relâche les verrous - Provoque l'annulation des mises à jour - Relâche les verrous - Reprend la transaction 9 ©Gardarin 2001

Effet logique Mémoire de la transaction Update Commit Bases de données 10 Abort Poubelle

Effet logique Mémoire de la transaction Update Commit Bases de données 10 Abort Poubelle ©Gardarin 2001

Interface applicative Ø API pour transaction simple • Trid Begin (context*) • Commit ()

Interface applicative Ø API pour transaction simple • Trid Begin (context*) • Commit () • Abort() Ø Possibilité de points de sauvegarde : • Savepoint Save() • Rollback (savepoint) // savepoint = 0 ==> Abort Ø Quelques interfaces supplémentaires • Chain. Work (context*) //Commit + Begin • Trid Mytrid() • Status(Trid) // Active, Aborting, Committing, Aborted, Committed 11 ©Gardarin 2001

2. Journaux et Sauvegarde Ø Journal des images avant • Journal contenant les débuts

2. Journaux et Sauvegarde Ø Journal des images avant • Journal contenant les débuts de transactions, les valeurs d'enregistrement avant mises à jour, les fins de transactions (commit ou abort) • Il permet de défaire les mises à jour effectuées par une transaction Ø Journal des images après • Journal contenant les débuts de transactions, les valeurs d'enregistrement après mises à jour, les fins de transactions (commit ou abort) • Il permet de refaire les mises à jour effectuées par une transaction 12 ©Gardarin 2001

Journal des images avant Ø Utilisé pour défaire les mises à jour : Undo

Journal des images avant Ø Utilisé pour défaire les mises à jour : Undo 2. Log Page lue Page modifiée 3. Update 1. Read 4. Write Base de données 13 ©Gardarin 2001

Journal des images après Ø Utilisé pour refaire les mises à jour : Redo

Journal des images après Ø Utilisé pour refaire les mises à jour : Redo 3. Log Page lue Page modifiée 2. Update 1. Read 4. Write Base de données 14 ©Gardarin 2001

Gestion du journal Ø Journal avant et après sont unifiés Ø Écrits dans un

Gestion du journal Ø Journal avant et après sont unifiés Ø Écrits dans un tampon en mémoire et vider sur disque en début de commit Ø Structure d'un enregistrement : • N° transaction (Trid) • Type enregistrement {début, update, insert, commit, abort} • Tuple. Id • [Attribut modifié, Ancienne valeur, Nouvelle valeur]. . . Ø Problème de taille • on tourne sur N fichiers de taille fixe • possibilité d'utiliser un fichier haché sur Trid/Tid 15 ©Gardarin 2001

Sauvegarde Ø Sauvegarde périodique de la base • toutes les heures, jours, . .

Sauvegarde Ø Sauvegarde périodique de la base • toutes les heures, jours, . . . • Doit être effectuée en parallèle aux mises à jour Ø Un Point de Reprise (checkpoint) est écrit dans le journal pour le synchroniser par rapport à la sauvegarde • permet de situer les transactions effectuées après la sauvegarde Ø Pose d'un point de reprise : • écrire les buffers de journalisation (Log) • écrire les buffers de pages (DB) • écrire un record spécial "checkpoint" dans le journal 16 ©Gardarin 2001

3. Scénarios de Reprise Ø Les mises à jour peuvent être effectuées directement dans

3. Scénarios de Reprise Ø Les mises à jour peuvent être effectuées directement dans la base (en place) • la base est mise à jour immédiatement, ou au moins dès que possible pendant que la transaction est active Ø Les mises à jour peuvent être effectuées en mémoire et installées dans la base à la validation (commit) • le journal est écrit avant d'écrire les mises à jour 17 ©Gardarin 2001

Stratégie do-undo Ø Mises à jour en place • l'objet est modifié dans la

Stratégie do-undo Ø Mises à jour en place • l'objet est modifié dans la base Ø Utilisation des images avant • copie de l'objet avant mise à jour • utilisée pour défaire en cas de panne Update Mémoire cache 2. Log. Page Journal avant 3. Write. Page Undo 1. Lire. Page Base 18 ©Gardarin 2001

Stratégie do-redo Ø Mises à jour en différentiel • l'objet est modifié en page

Stratégie do-redo Ø Mises à jour en différentiel • l'objet est modifié en page différentielle (non en place/journal) Ø Utilisation des images après • copie de l'objet en journal après mise à jour (do) • utilisée pour refaire en cas de panne (redo) Update 3. Log. Page Mémoire cache Journal après 2. Write. Page Redo 1. Lire. Page Base Ombre Commit 19 ©Gardarin 2001

Pages ombres Table des Pages Ombres Nom Fichier Adresse Table des Pages COMMIT Page

Pages ombres Table des Pages Ombres Nom Fichier Adresse Table des Pages COMMIT Page Ombre Nouvelle Table des Pages 20 Nouvelles Pages ©Gardarin 2001

La gestion des buffers Ø Bufferisation des journaux • on écrit le journal lorsqu'un

La gestion des buffers Ø Bufferisation des journaux • on écrit le journal lorsqu'un buffer est plein • ou lorsqu'une transaction commet Ø Bufferisation des bases • on modifie la page en mémoire • le vidage sur disque s'effectue en différé (processus E/S) Ø Synchronisation journaux / base • le journal doit toujours être écrit avant modification de la base ! 21 ©Gardarin 2001

Commits bloqués Ø AFIN D'EVITER 3 E/S POUR 1: • Le système reporte l'enregistrement

Commits bloqués Ø AFIN D'EVITER 3 E/S POUR 1: • Le système reporte l'enregistrement des journaux au commit • Il force plusieurs transactions à commettre ensemble • Il fait attendre les transactions au commit afin de bloquer un buffer d'écriture dans le journal Ø RESULTAT • La technique des "commits" bloques permet d'améliorer les performances lors des pointes sans faire attendre trop sensiblement les transactions 22 ©Gardarin 2001

Reprise à froid Ø En cas de perte d'une partie de la base, on

Reprise à froid Ø En cas de perte d'une partie de la base, on repart de la dernière sauvegarde Ø Le système retrouve le checkpoint associé Ø Il ré-applique toutes les transactions commises depuis ce point • (for each committed Ti : redo (Ti)) 23 ©Gardarin 2001

5. Modèles étendus Ø Applications longues composées de plusieurs transactions coopérantes Ø Seules mises-à-jour

5. Modèles étendus Ø Applications longues composées de plusieurs transactions coopérantes Ø Seules mises-à-jour sont journalisées Ø Si nécessité de défaire une suite de transactions: • contexte ad-hoc dans une table temporaire • nécessité d'exécuter des compensations 24 ©Gardarin 2001

Points de Sauvegardes Ø Introduction de points de sauvegarde intermédiaires • (savepoint, commitpoint) Ø

Points de Sauvegardes Ø Introduction de points de sauvegarde intermédiaires • (savepoint, commitpoint) Ø Begin_Trans • update • savepoint • update unité d'oeuvre Non perte du contexte unité d'oeuvre Ø Commit 25 ©Gardarin 2001

Transactions Imbriquées Begin(T) Ø OBJECTIFS • Obtenir un mécanisme de reprise multi-niveaux • Permettre

Transactions Imbriquées Begin(T) Ø OBJECTIFS • Obtenir un mécanisme de reprise multi-niveaux • Permettre de reprendre des parties logiques de transactions • Faciliter l'exécution parallèle de soustransactions Begin(t'1) Begin(t 1) Commit(t'1) Commet t 1 Begin(t 2) Begin(t 21) Ø SCHEMA • Reprises et abandons partiels • Possibilité d'ordonner ou non les sous-transactions Commit(t 21) Abort(t 2) Commit(T) 26 Annule t 2 et t 21 ©Gardarin 2001

Sagas Ø Groupe de transactions avec transactions compensatrices Ø En cas de panne du

Sagas Ø Groupe de transactions avec transactions compensatrices Ø En cas de panne du groupe, on exécute les compensations T 1 T 2 T 3 CT 2 27 Tn . . . CT 1 ©Gardarin 2001

Activités : Propriétés Souhaitées Ø contexte persistant Ø rollforward, rollback avec compensations Ø flot

Activités : Propriétés Souhaitées Ø contexte persistant Ø rollforward, rollback avec compensations Ø flot de contrôle dépendant des succès et échecs • différencier les échecs systèmes des échecs de programmes Ø monitoring d'activités: • état d'une activité, arrêt, . . . 28 ©Gardarin 2001

Langage de Contrôle d'Activités Ø Exemple: réservation de vacances • T 1 : réservation

Langage de Contrôle d'Activités Ø Exemple: réservation de vacances • T 1 : réservation avion alternative : location voiture • T 2 : réservation hôtel • T 3 : location voiture Ø Activité • Ensemble d'exécution de transactions avec alternative ou compensation Ø Langage de contrôle d'activités • Possibilité de transactions vitales (ex: réservation hôtel) • Langage du type : § If abort, If commit, Run alternative, Run compensation, … 29 ©Gardarin 2001

6. Transactions réparties Ø OBJECTIF • Garantir que toutes les mises à jour d'une

6. Transactions réparties Ø OBJECTIF • Garantir que toutes les mises à jour d'une transaction sont exécutées sur tous les sites ou qu'aucune ne l'est. Ø EXEMPLE • Transfert de la somme X du compte A vers le compte B • DEBUT § site 1: A = A - X § site 2: B = B + X PANNE --> INCOHERENCE DONNEES • FIN Ø PROBLEME • Le contrôle est réparti : chaque site peut décider de valider ou d’annuler. . . 30 ©Gardarin 2001

Commit en 2 Phases Ø Principe • Diviser la commande COMMIT en deux phases

Commit en 2 Phases Ø Principe • Diviser la commande COMMIT en deux phases • Phase 1 : § Préparer à écrire les résultats des mises à jour dans la BD § Centralisation du contrôle • Phase 2 : § Écrire ces résultats dans la BD Ø Coordinateur : • Le composant système d'un site qui applique le protocole Ø Participant : • Le composant système d'un autre site qui participe dans l'exécution de la transaction 31 ©Gardarin 2001

Protocole C/S Ø 1. PREPARER • Le coordinateur demande aux autres sites s’ils sont

Protocole C/S Ø 1. PREPARER • Le coordinateur demande aux autres sites s’ils sont prêts à commettre leurs mises à jour. Ø 2 a. SUCCES : COMMETTRE • Tous les participants effectuent leur validation sur ordre du client. Ø 2 b. ECHEC : ABORT • Si un participant n’est pas prêt, le coordinateur demande à tout les autres sites de défaire la transaction. Ø REMARQUE • Le protocole nécessite la journalisation des mises à jour préparées et des états des transactions dans un journal local à chaque participant. 32 ©Gardarin 2001

Cas Favorable SITE COORDINATEUR SITE PARTICIPANT 2 SITE PARTICIPANT 1 PREPARE OK OK COMMIT

Cas Favorable SITE COORDINATEUR SITE PARTICIPANT 2 SITE PARTICIPANT 1 PREPARE OK OK COMMIT ACK 33 ©Gardarin 2001

Cas Défavorable (1) SITE COORDINATEUR SITE PARTICIPANT 2 SITE PARTICIPANT 1 PREPARE OK KO

Cas Défavorable (1) SITE COORDINATEUR SITE PARTICIPANT 2 SITE PARTICIPANT 1 PREPARE OK KO ABORT ACK 34 ©Gardarin 2001

Cas Défavorable (2) SITE COORDINATEUR SITE PARTICIPANT 2 SITE PARTICIPANT 1 PREPARE OK OK

Cas Défavorable (2) SITE COORDINATEUR SITE PARTICIPANT 2 SITE PARTICIPANT 1 PREPARE OK OK COMMIT ACK STATUS COMMIT ACK 35 ©Gardarin 2001

Commit distribué ou centralisé Ø Validation à deux phases centralisée Prepare OK Commit OK

Commit distribué ou centralisé Ø Validation à deux phases centralisée Prepare OK Commit OK Ø Possibilité de diffuser la réponse au PREPARE • chaque site peut décider localement dans un réseau sans perte OK Prepare 36 ©Gardarin 2001

Transitions d'Etats Initial CCommit/Prepare Wait Vote. KO/GAbort Vote. OK/GCommit Initial Commit Prepare/Vote. OK COORDINATEUR

Transitions d'Etats Initial CCommit/Prepare Wait Vote. KO/GAbort Vote. OK/GCommit Initial Commit Prepare/Vote. OK COORDINATEUR Ready GAbort/Ack Abort GCommit/Ack Commit PARTICIPANT 37 ©Gardarin 2001

Transactions bloquées Ø Que faire en cas de doute ? • Demander l’état aux

Transactions bloquées Ø Que faire en cas de doute ? • Demander l’état aux autres transactions : STATUS § conservation des états nécessaires § message supplémentaire • Forcer la transaction locale : ABORT § toute transaction annulée peut être ignorée § cohérence garantie avec un réseau sans perte de message • Forcer la transaction locale : COMMIT § toute transaction commise peut être ignorée § non garantie de cohérence avec le coordinateur 38 ©Gardarin 2001

Commit en 3 Phases Initial Ø Inconvénient du commit à 2 phases CCommit/Prepare •

Commit en 3 Phases Initial Ø Inconvénient du commit à 2 phases CCommit/Prepare • en cas de time-out en état “Prêt”, le participant est bloqué • le commit à 3 phases permet d’éviter les blocages Vote. KO/GAbort Vote. OK/PréCommit Abort PréCommit PréOK/GCommit Initial Ø Messages du commit à 3 phases • • Wait Prepare/Vote. OK Prepare, Prepare to Commit, Global-Abort. GAbort/Ack Abort Ready PréCommit/PréOK PréCommit GCommit/Ack Commit 39 ©Gardarin 2001

Protocole arborescent TP Ø TP est le standard proposé par l’ISO dans le cadre

Protocole arborescent TP Ø TP est le standard proposé par l’ISO dans le cadre OSI Ø Protocole arborescent • Tout participant peut déclancher une sous-transaction • Un responsable de la validation est choisi • Un coordinateur est responsable de ses participants pour la phase 1 Coordinateur global Coordinateur local Point de validation (Noeud critique) § collecte les PREPARE § demande la validation • Le point de validation est responsable de la phase 2 § envoie les COMMIT 40 ©Gardarin 2001

7. Moniteurs transactionnels Ø Support de transactions ACID Ø Accès continu aux données Ø

7. Moniteurs transactionnels Ø Support de transactions ACID Ø Accès continu aux données Ø Reprise rapide du système en cas de panne Ø Sécurité d'accès Ø Performances optimisées • Partage de connexions • Réutilisation de transactions Ø Partage de charge • Distribution de transactions Ø Support de bases hétérogènes Ø Respect des normes et standards 41 ©Gardarin 2001

Moniteur transactionnel : Modèle Ø Modèle DTP de l’X/OPEN • Programme d’application AP •

Moniteur transactionnel : Modèle Ø Modèle DTP de l’X/OPEN • Programme d’application AP • Gestionnaire de transactions TM • Gestionnaire de communication CRM • Gestionnaire de ressources RM AP TX TM Ø Interfaces standards • TX = interface du TM • XA = interface du RM • intégration de TP CRM TM Ø Types de RM XA • gestionnaire de fichiers • SGBD • périphérique RM 42 ©Gardarin 2001

Interface applicative TX Ø tx_open • ordonne au TM d’initialiser la communication avec tous

Interface applicative TX Ø tx_open • ordonne au TM d’initialiser la communication avec tous les RM dont les librairies d’accès ont été liées à l’application. Ø tx_begin • ordonne au TM de demander aux RM de débuter une transaction. Ø tx_commit ou tx_rollback • ordonne au TM de coordonner soit la validation soit l’abandon de la transaction sur tous les RM impliqués. Ø tx_set_transaction_timeout • positionne un “ timeout ” sur les transactions Ø tx_info • permet d’obtenir des informations sur le statut de la transaction. 43 ©Gardarin 2001

Interface ressource XA Ø xa_open • ouvre un contexte pour l’application. Ø xa_start •

Interface ressource XA Ø xa_open • ouvre un contexte pour l’application. Ø xa_start • débute une transaction. Ø xa_end • indique au RM qu’il n’y aura plus de requêtes pour le compte de la transaction courante. Ø xa_prepare • lance l’étape de préparation du commit à deux phases. Ø xa_commit • valide la transaction. Ø xa_rollback • abandonne la transaction. 44 ©Gardarin 2001

Principaux moniteurs (1) Ø Encina de Transarc • issu de CMU (1992), racheté par

Principaux moniteurs (1) Ø Encina de Transarc • issu de CMU (1992), racheté par IBM • construit sur DCE (OSF) pour la portabilité et la sécurité • transactions imbriquées • conformité DTP : Xa, CPI-C, Tx. RPC Ø Open CICS de IBM • construit sur Encina (et DCE) • reprise de l’existant CICS (API et outils) • conformité DTP : Xa, CPI-C 45 ©Gardarin 2001

Principaux moniteurs (2) Ø Tuxedo de USL • éprouvé (depuis 1984), à la base

Principaux moniteurs (2) Ø Tuxedo de USL • éprouvé (depuis 1984), à la base de DTP • supporte l’asynchronisme, les priorités et le routage dépendant des données • conformité DTP: Xa, Tx, Xa. TMI, CPI-C, Tx. RPC Ø Top End de NCR • produit stratégique d’AT&T • respecte le modèle des composants DTP (AP, RM, TM, CRM) • haute disponibilité • conformité DTP: Xa, Xa+, Xap-Tp, Tx Ø Autres : UTM de Siemens, Unikix 46 ©Gardarin 2001

Le marché Gartner Group 47 ©Gardarin 2001

Le marché Gartner Group 47 ©Gardarin 2001

MTS de Microsoft Ø Microsoft Transaction Server Ø Intégré à DCOM Ø Partage de

MTS de Microsoft Ø Microsoft Transaction Server Ø Intégré à DCOM Ø Partage de grappes de NT (cluster) Ø Les disques sont supposés partagés Ø Allocation des ressources en pool aux requêtes : • pool de connexion aux ressources (SQL Server) • pool de transactions (support) • pool de machines Ø Ne suit pas les standards ! 48 ©Gardarin 2001

8. Conclusion Ø Des techniques complexes Ø Un problème bien maîtrisé dans les SGBDR

8. Conclusion Ø Des techniques complexes Ø Un problème bien maîtrisé dans les SGBDR Ø La concurrence complique la gestion de transactions Ø Les transactions longues restent problématiques Ø Enjeu essentiel pour le commerce électronique • • validation fiable reprise et copies partage de connections partage de charge 49 ©Gardarin 2001