GESTION DE TRANSACTIONS

Slides:



Advertisements
Présentations similaires
ORTHOGRAM PM 3 ou 4 Ecrire: « a » ou « à » Référentiel page 6
Advertisements

LES NOMBRES PREMIERS ET COMPOSÉS
Contrôle de la concurrence
Page 1 Retour sur le e- tourisme. Page 2 Quelques chiffres…
A l’issue des conseils de classe de 3ème,
1 CNAM Vendredi 29 Novembre 2002 Bases de Données Avancées UV C Responsable : Mr Scholl PROTOCOLE A DEUX PHASES Meryem Guerrouani.
Distance inter-locuteur
M1 MASTER GESTION Séance 3 Pilotage coûts- délais
Les numéros
Serveur jeu Le serveur fait partie d'un logiciel de jeu en ligne multi joueur en architecture client serveur. Il répond à des demandes.
1 V-Ingénierie… La compétence au service de lexigence… vous présente.
TRANSACTION Problèmes posés
Architecture de réseaux
Performances 1 Évolution : Performance. Performances 2 Évolution : Mémoire.

Plan de formation Chapitre 1 : Présentation de SAP
1 Efficient Data and Program Integration Using Binding Patterns Ioana Manolescu, Luc Bouganim, Francoise Fabret, Eric Simon INRIA.
Mr: Lamloum Med LES NOMBRES PREMIERS ET COMPOSÉS Mr: Lamloum Med.
1 5 octobre 2011 / paw Présentation du 7 octobre 2011.
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
1 Bienvenue! Ministère de lEmploi et de la Solidarité sociale Direction des ressources humaines La conduite dun projet de refonte dun intranet Pascale.
Page 1 Introduction à ATEasy 3.0 Page 2 Quest ce quATEasy 3.0? n Ensemble de développement très simple demploi n Conçu pour développer des bancs de test.
Cours 5: Récupération Nguyen Tuanloc.
Transaction Ensemble d'opérations de modification de données annulées ou validées en bloc. Une Transaction vérifie les caractéristiques suivantes ( ACID.
Module 1 : Préparation de l'administration d'un serveur
Gestion des Périphériques
Synchronisation et communication entre processus
Serveurs Partagés Oracle
Rappel au Code de sécurité des travaux 1 Code de sécurité des travaux Rappel du personnel initié Chapitre Lignes de Transport (Aériennes)
1 Guide de lenseignant-concepteur Vincent Riff 27 mai 2003.
Atomicité Transactions Atomiques Recouvrement à Base de Journal
Bases de Données Réparties
Configuration de Windows Server 2008 Active Directory
1 CLUB DES UTILISATEURS SAS DE QUÉBEC COMMENT TRANSFORMER UN PROGRAMME SAS EN TÂCHE PLANIFIÉE SOUS WINDOWS Présentation de Jacques Pagé STRiCT Technologies.
Tableaux de distributions
L’utilisation des bases de données
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
22 janvier 2013 Commercialiser en 2013 ! Que de variables à ajuster ! 1.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
LES NOMBRES PREMIERS ET COMPOSÉS
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
Logiciel gratuit à télécharger à cette adresse :
Représentation des systèmes dynamiques dans l’espace d’état
Représentation des systèmes dynamiques dans l’espace d’état
Représentation des systèmes dynamiques dans l’espace d’état
DUMP GAUCHE INTERFERENCES AVEC BOITIERS IFS D.G. – Le – 1/56.
Programmation concurrente
1 Gestion des Transactions: Survol Chapitre Transactions Une transaction est la vue abstraite qua le SGBD dun programme dusager: cest une séquence.
1 Reprise Chapitre Objectifs Vol et forçage: rappel Le log organisation maintient et utilisation Autres structures de données Protocole WAL Points.
1 10 pt 15 pt 20 pt 25 pt 5 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt Les fonctions.
Module 2 : Préparation de l'analyse des performances du serveur
STSWEB Bascule Diffusion Nationale TOULOUSE – déc.2008.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Les transactions.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Gestion des transactions SQLServer.
LA GESTION COLLABORATIVE DE PROJETS Grâce aux outils du Web /03/2011 Académie de Créteil - Nadine DUDRAGNE 1.
‘‘Open Data base Connectivity‘‘
Systèmes de gestion de bases de données NFP 107 Les techniques du contrôle de concurrence Philippe Rigaux
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
1/65 微距摄影 美丽的微距摄影 Encore une belle leçon de Macrophotographies venant du Soleil Levant Louis.
Introduction.
Exercice de vérification 1 p
Module 8 : Surveillance des performances de SQL Server
Cours n°4M2. ESCE (S. Sidhom) Séminaire ( 6-12 Février 2007 ) Promo. M2 ESCE-Tunis 2006/07 Conception d’un système d'information sur Internet Architecture.
Les Composants de l’architecture Oracle
Bases de données Open Source Pierre Crépieux 13/03/2008.
Gestion des transactions
Ait Ahmed Madjid Cohen Lior Jaballah Seddik Leborgne Fabien
1  G. Gardarin GESTION DE TRANSACTIONS l 2. Journaux et reprise l 3. Scénarios de reprise l 4. Modèles étendus l 5. Cas des systèmes répartis.
1  G. Gardarin GESTION DE TRANSACTIONS l 1. Objectifs et bases l 2. Journaux et reprise l 3. Scénarios de reprise l 4. Modèles étendus l 5. Cas des systèmes.
Transcription de la présentation:

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

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 unebase de données bancaire TPC-A transactionnel et TPC-B avec traitement par lot Mesure le nombre de trasactions par seconde (tps) et le coût par tps

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

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

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.BranchId, AVG(C.Balance) FROM Branch B, Account C WHERE B.BrachId = C.BranchId GROUP BY B.BranchId ;

Les menaces Problèmes de concurrence Panne de transaction 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

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

Commit et Abort INTRODUCTION D’ACTIONS ATOMIQUES COMMIT ABORT 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

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

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

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 ChainWork (context*) //Commit + Begin Trid Mytrid() Status(Trid) // Active, Aborting, Committing, Aborted, Committed

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

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

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

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} TupleId [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

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

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

Stratégie do-undo Mises à jour en place Utilisation des images avant 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 2. LogPage Mémoire cache Journal avant 3. WritePage Undo 1. LirePage Base

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. LogPage Journal après Mémoire cache 2. WritePage 1. LirePage Redo Ombre Base Commit

Nouvelle Table des Pages Pages ombres Nom Fichier Adresse Table des Pages Table des Pages Ombres Page Ombre Nouvelles Pages Nouvelle Table des Pages COMMIT

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 !

Commits bloqués AFIN D'EVITER 3 E/S POUR 1: RESULTAT 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

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))

5. Modèles étendus Applications longues composées de plusieurs transactions coopérantes Seules les 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

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

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

Sagas Groupe de transactions avec transactions compensatrices En cas de panne du groupe, on exécute les compensations T1 T2 T3 ... Tn T1 T2 CT2 CT1

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, ...

Langage de Contrôle d'Activités Exemple: réservation de vacances T1 : réservation avion alternative : location voiture T2 : réservation hôtel T3 : 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, …

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 ... 3

Commit en 2 Phases Principe Coordinateur : Participant : 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 4

Protocole C/S 1. PREPARER 2a. SUCCES : COMMETTRE 2b. ECHEC : ABORT Le coordinateur demande aux autres sites s’ils sont prêts à commettre leurs mises à jour. 2a. SUCCES : COMMETTRE Tous les participants effectuent leur validation sur ordre du client. 2b. 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. 5

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

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

Cas Défavorable (2) SITE COORDINATEUR SITE PARTICIPANT 2 PREPARE PREPARE OK OK COMMIT COMMIT ACK STATUS COMMIT ACK 8

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

Transitions d'Etats Initial CCommit/Prepare Wait VoteKO/GAbort VoteOK/GCommit Initial Abort Commit Prepare/VoteOK COORDINATEUR Ready GAbort/Ack GCommit/Ack Abort Commit PARTICIPANT 11

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 12

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

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 collecte les PREPARE demande la validation Le point de validation est responsable de la phase 2 envoie les COMMIT Coordinateur global Coordinateur local Coordinateur local Point de validation (Noeud critique) 14

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 15

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 Interfaces standards TX = interface du TM XA = interface du RM intégration de TP Types de RM gestionnaire de fichiers SGBD périphérique AP TX TM CRM TM XA RM 16

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. 17

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. 18

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, TxRPC Open CICS de IBM construit sur Encina (et DCE) reprise de l’existant CICS (API et outils) conformité DTP : Xa, CPI-C

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, XaTMI, CPI-C, TxRPC 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 18

Le marché Gartner Group

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 !

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