Gestion des transactions et accès concurrents dans les bases de données relationnelles



Documents pareils
Cours Bases de données 2ème année IUT

Bases de données et sites WEB Licence d informatique LI345

Intégrité sémantique dans les bases de données relationnelles

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Implémentation des SGBD

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions

Cours de Base de Données Cours n.12

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Bases de Données relationnelles et leurs systèmes de Gestion

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Module BDR Master d Informatique (SAR)

Réplication des données

Le Langage De Description De Données(LDD)

TP Contraintes - Triggers

Devoir Data WareHouse

Intégrité des données

Bases de données avancées Concurrence d'accès et reprise

UNION INTERCEPT SELECT WHERE JOINT FROM ACID

Transactionnel et transactionnel réparti. Source R.CHEVANCE G.Gardarin

Notes de cours : bases de données distribuées et repliquées

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Langage SQL : créer et interroger une base

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Application web de gestion de comptes en banques

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Bases de données et sites WEB

1 Position du problème

Cours Bases de données 2ème année IUT

SYSTÈME DE GESTION DE FICHIERS

Année Universitaire 2009/2010 Session 2 de Printemps

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Compétences Business Objects

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Bases de données relationnelles

PROJET 1 : BASE DE DONNÉES REPARTIES

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

TP 8: LES OPERATEURS ENSEMBLISTES

Chapitre 1 : Introduction aux bases de données

Le Langage SQL version Oracle

AGRÉGATION «ÉCONOMIE ET GESTION»

CREATION WEB DYNAMIQUE

Les bases de données

Cours de Systèmes d Exploitation

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Données Réparties. Thibault BERNARD.

SQL Historique

Vincent Augusto

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Cours Base de données relationnelles. M. Boughanem, IUP STRI

ST3 : Techniques de bases de données avancées

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Présentation du module Base de données spatio-temporelles

TP3 : Creation de tables 1 seance

IFT3030 Base de données. Chapitre 1 Introduction

I4 : Bases de Données

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

Introduction aux Bases de Données

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

BASES DE DONNÉES. CNAM Centre associé de Clermont-Ferrand Cycle A Année J. Darmont I. INTRODUCTION II. LES SYSTÈMES HIÉRARCHIQUES

Bases de Données. Plan

A QUOI SERVENT LES BASES DE DONNÉES?

INTEGRITE ET BD ACTIVES

Chapitre 10. Architectures des systèmes de gestion de bases de données

Cours Bases de données

Le langage SQL (première partie) c Olivier Caron

Gestion des utilisateurs et de leurs droits

MySQL / SQL EXEMPLES

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Introduction au Système de Gestion de Base de Données et aux Base de Données

1. Base de données SQLite

Gestion de données réparties. Cours 1

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Projet gestion d'objets dupliqués

INTRODUCTION : Données structurées et accès simplifié

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007

Historisation des données

Auto-évaluation Oracle: cours de base

I. MySQL : Serveur et SGBD

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Département Génie Informatique

Mysql. Les requêtes préparées Prepared statements

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Chapitre 07 Le modèle relationnel des données

A QUOI SERVENT LES BASES DE DONNÉES?

Développement de base de données Microsoft SQL Server Durée : 5 jours Référence : DPSQL12. Contenu

Java DataBaseConnectivity

UML et les Bases de Données

PHP 5. La base de données MySql. A. Belaïd 1

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Transcription:

Gestion des transactions et accès concurrents dans les bases de données relationnelles Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU) Ecole Polytechnique Universitaire de Marseille Fev. 2013 Transaction et primitives - Propriétés ACID - Terminaison Contrôle des accès concurrents - Problèmes liés à la concurrence - Nature et largeur de verrous, «dead lock» (verrou mortel) - Protocoles de validation à 2 et 3 phases R e q u ê t e p r i m i t i v e Une instruction ou «requête primitive» (unique) jouit des propriétés ACID (garantie contractuelle du SGBD) Exemple : DELETE FROM Professeur WHERE numprof = 1 ; Cette requête conduit généralement à plusieurs modifications dans la base de données : suppression d'une ligne de la table «Professeur» suppression de plusieurs lignes de la table «Charge» Requête primitive et propriétés ACID : Atomicité : l'ensemble des actions élémentaires est réalisé complètement ou pas du tout Cohérence : si les données sont cohérentes au départ, elles le sont à l'arrivée (intégrité référentielle par exemple) Indépendance : l'exécution de primitives d'autres processus n'interfère pas avec l'exécution de cette primitive (les lignes de PROFESSEURS et CHARGE touchées sont protégées) Durabilité : si la primitive se termine normalement, les lignes supprimées le restent, quels que soient les incidents qui pourront se produire ultérieurement Bernard ESPINASSE - Gestion des transactions et accès concurrents 1 Bernard ESPINASSE - Gestion des transactions et accès concurrents 2 S u i t e d e r e q u ê t e s p r i m i t i v e s Problème : la granularité des primitives peut être trop fine pour certaines opérations sur les données Exemple : Transfert d'une somme d'un compte vers un autre = 2 primitives update du compte source: - 1000 si incident: incohérence update du compte destination: + 1000 Solution : SUPER PRIMITIVE ( update du compte source: - 1000 update du compte destination: + 1000 ) => Transaction = «super primitive» construite par le programmeur T r a n s a c t i o n Transaction = Unité Logique de Traitement (ULT - LUW) du point de vue des accès à la base de données Exemples : Enregistrer une commande, enregistrer un professeur et ses charges Propriétés d'une transaction : Une transaction vérifie, relativement à la base de données, les 4 propriétés «A.C.I.D.» : Atomicity (atomicité) : l'ensemble des instructions de la section sont exécutées complètement (en cas de succès), ou pas du tout (en cas d'incident), mais jamais partiellement; Consistency (cohérence) : si la BD est cohérente avant la transaction, elle le sera à la sortie de celle-ci (respect des contraintes d'intégrité); Isolation (indépendance) : les interactions entre la transaction et la base de données s'effectuent comme si la transaction était seule à travailler sur la BD (pas d'interférences nuisibles avec les autres transactions); Durability (permanence) : si la transaction s'est terminée correctement, les modifications faites dans la BD sont garanties permanentes (sauf modifications via d'autres transactions), quels que soient les incidents ultérieurs. Bernard ESPINASSE - Gestion des transactions et accès concurrents 3 Bernard ESPINASSE - Gestion des transactions et accès concurrents 4

T r a n s a c t i o n Une transaction est construite à l'aide de 3 primitives offertes par le SGBD : ouverture d'une transaction clôture avec confirmation clôture avec annulation Principe : begin-transaction ROLLBACK Le SGBD garantit les propriétés ACID lorsqu'il exécute une primitive; si le programmeur désire que cette propriété s'applique à une séquence d'instructions, il doit en faire une transaction : préparation begin-transaction suite du traitement acquisition des données modification des données si erreur ROLLBACK et sortie A n n u l a t i o n d u n e t r a n s a c t i o n Evénements survenant lors de l'exécution d'une transaction : Arrêt interne (géré par le programmeur) Lors de l'exécution d'une transaction, une condition peut être détectée, rendant la poursuite de la transaction impossible Exemple : violation d'une contrainte d'intégrité Action du SGBD : effacer toute trace de la transaction annulée Arrêt externe (panne - géré par le SGBD) Au cours de l'exécution des primitives, un événement extérieur peut arrêter définitivement l'exécution de la transaction Exemple : panne Action du SGBD : effacer toute trace de la transaction annulée après la reprise (reprise après panne) Bernard ESPINASSE - Gestion des transactions et accès concurrents 5 Bernard ESPINASSE - Gestion des transactions et accès concurrents 6 A A t o m i c i t é d e l a t r a n s a c t i o n Atomicité : Une transaction doit être traitée comme une seule opération, c-a-d que le SGBD doit assurer que toutes les actions de la transaction sont exécutées ou bien qu'aucune Exemple : begin-transaction; INSERT... ; DELETE... ; INSERT... ; DELETE..; ; Actions exécutées Actions suspendues Panne Si l'exécution d'une transaction est interrompue à cause d'une panne quelconque, le SGBD doit être capable de décider des actions à entreprendre après la réparation de la panne : Soit compléter la transaction en exécutant les actions restantes Soit défaire les actions qui avaient déjà été exécutées avant la panne (journal des actions) C - C o h é r e n c e d u n e b a s e d e d o n n é e s Base de données dans un état cohérent : si les valeurs contenues dans la base vérifient toutes les contraintes dʼintégrité définies sur la base Problème : Des contraintes ne sont satisfaites que suite à une séquence de plusieurs primitives! => Etats intermédiaires incohérents Ex 1 : Transfert d'un compte vers un autre (contrainte: la somme des comptes est invariante). Après la modification du premier compte, la BD est incohérente Ex 2 : Après la suppression d'une commande (contrainte: toute ligne de commande doit être associée à une commande), la BD peut être incohérente begin-transaction; Etat cohérent delete from COMMANDE where num_cde = 1 ; Etat incohérent! delete from LIGNE where num_cde = 1 ; Etat cohérent ; Solutions SQL possibles : Ordonnancement judicieux des primitives Débrayer la vérification des contraintes Bernard ESPINASSE - Gestion des transactions et accès concurrents 7 Bernard ESPINASSE - Gestion des transactions et accès concurrents 8

C - C o h é r e n c e d u n e b a s e d e d o n n é e s Débrayage de la vérification des contraintes : CREATE TABLE LIGNE (num_article integer not null, num_commande integer not null, primary key (num_article, num_commande) CONSTRAINT ligne_article FOREIGN KEY (num_cours) REFERENCES ARTICLES CONSTRAINT ligne_commande FOREIGN KEY (num_commande) REFERENCES COMMANDES INITIALLY DEFFERABLE) ; Sauf ordre contraire dans la transaction, la vérification des contraintes déclarées sera d'office (initially) reportée (deferrable) au : begin-transaction; delete from COMMANDES where num_cde = 1 ; pas de vérification! delete from LIGNES where num_cde = 1 ; vérification! ; Bernard ESPINASSE - Gestion des transactions et accès concurrents 9 I - I s o l a t i o n d e l a t r a n s a c t i o n Isolation : les interactions entre la transaction et la BD s'effectuent comme si la transaction était seule à travailler sur la BD => propriété à assurer pour des transactions concurrentes D - D u r a b i l i t é & I s o l a t i o n d e l a t r a n s a c t i o n Durabilité : propriété qui assure que lorsqu'une transaction a été confirmée (), ses effets deviennent permanents Importance: après un arrêt externe (panne) le SGBD doit sʼassurer que : les effets d'une transaction validée apparaissent dans la base de données après la reprise les effets d'une transaction annulée n'apparaissent pas dans la base de données après la reprise Bernard ESPINASSE - Gestion des transactions et accès concurrents 10 T r a n s a c t i o n s c o n c u r r e n t e s Transactions concurrentes : 2 transactions sont concurrentes si elles accèdent en même aux mêmes données P b d e c o n c u r r e n c e : P e r t e s d e m i s e s à j o u r et transactions concurrentes : lire (x) ; x <- x + 10 ; écrire (x) : lire (x) ; x <- x + 20; écrire (x) Au départ x = 50 Problème possibles : lorsque certaines transactions font des mises jour sur la BD : Perte de mise à jour Lire (x) ( lit x = 50 dans BD) x <- x + 10 Ecrire x (dans BD : x = 60) Lire (x) ( lit x = 50 dans BD) x <- x + 20 Ecrire x (dans BD : x = 70) Lecture impropre Lecture non reproductible Bilan : la mise à jour effectuée par a été écrasée par celle faite par Bernard ESPINASSE - Gestion des transactions et accès concurrents 11 Bernard ESPINASSE - Gestion des transactions et accès concurrents 12

P b d e c o n c u r r e n c e : L e c t u r e i m p r o p r e ( 1 ) et transactions concurrentes UPDATE comptes SET solde = 25000 WHERE num_compte = ʻ9ʼ ; ROLLBACK Bilan : SELECT solde FROM comptes WHERE num_compte = ʻ9ʼ ; Propriété d'atomicité : la mise à jour ne devrait pas être prise en compte Dès lors, la valeur lue par est incorrecte. Cette valeur est dite impropre ( lit des données non confirmées) P b d e c o n c u r r e n c e : L e c t u r e i m p r o p r e ( 2 ) et transactions concurrentes transfère 10 euros du compte ʻ9ʼ vers le compte ʻ5ʼ affiche le solde total des 2 comptes UPDATE Comptes SET solde = solde - 10 WHERE num_compte = ʻ9ʼ ; UPDATE Comptes SET solde = solde + 10 WHERE num_compte = ʻ5ʼ ; SELECT SUM (solde) FROM Comptes WHERE num_compte in (ʻ9ʼ, ʻ5ʼ) ; Bilan : la somme des comptes affichée par est incorrecte puisque le solde du compte '5' n'a pas encore été mis à jour Etat intermédiaire incohérent de la base de données Bernard ESPINASSE - Gestion des transactions et accès concurrents 13 Bernard ESPINASSE - Gestion des transactions et accès concurrents 14 P b d e c o n c u r r e n c e : L e c t u r e n o n r e p r o d u c t i b l e et transactions concurrentes effectue plusieurs fois la lecture du même objet SELECT points FROM Resultats WHERE num_cours = 5 AND num_eleve = 7 ; UPDATE Resultats SET points = points * 1.1 WHERE num_cours = 5 AND nom_eleve = 7 ; SELECT points FROM Resultats WHERE num_cours = 5 AND num_eleve = 7 ; En principe, doit obtenir à chaque lecture la même valeur Mais, si entre 2 lectures de l'objet, celui-ci est modifié par, n'obtient plus le même valeur : lecture non reproductible! V e r r o u i l l a g e Diverses techniques selon les SGBD, consistant toutes à réaliser un verrouillage temporaire de la BD :! d'une partie plus ou moins grande de la BD (BD, sous-ensemble de la BD, table, page, tuple,...),! pendant un plus ou moins long (le d'une transaction,...),! tenir compte du fait que les opérations effectuées par les utilisateurs sur la base peuvent être soit en consultation soit en mise à jour: 2 types de verrous : verrou exclusif (write lock):! installé pour une opération de MAJ, il interdit à d'autres utilisateurs d'effectuer simultanément d'autres MAJ ou consultations sur une même partie de la BD verrou partagé (read lock):! installé pour une opération de consultation, il permet à d'autres utilisateurs d'effectuer simultanément d'autres consultations sur une même partie de la BD, et interdit toute mise à jour Verrouillage à "2 phases" : 1 - phase de croissance d'acquisition de verrous (SEIZE BLOCK) 2 - phase de décroissance de libération de verrous Bernard ESPINASSE - Gestion des transactions et accès concurrents 15 Bernard ESPINASSE - Gestion des transactions et accès concurrents 16

E x e m p l e d e v e r r o u i l l a g e Séquence de verrouillage/transaction 1- verrouiller des pages ou une table 2- lecture ou écriture des données 3- si d'autres verrouillages sont nécessaires, retourner en 1 4- quand la transaction est terminée, relâcher tous les verrous. Exemple de verrouillage/transaction (en SQL) : 1- begin transaction 2- update employé set salaire = salaire * 1.05 3- select * from departement 4- end transaction 2- l'utilisateur installe un verrou exclusif sur la table employé 3- l'utilisateur installe un verrou partagé sur la table departement 4- l'utilisateur relâche tous les verrous. Bernard ESPINASSE - Gestion des transactions et accès concurrents 17 E p a i s s e u r d u v e r r o u ( S G B D «I N G R E S» )! 2 types de verrou: exclusif et partagé! durée du verrouillage: durée d'une transaction! épaisseur du verrou: table ou page Choix de l'épaisseur du verrou dans un SGBD : en général est effectué par l'optimiseur de requête du SGBD:! verrou sur table lorsque: - la requête touche une table entière - la requête n'est pas très restrictive - la requête n'utilise pas des structures indexées exemples: update employé set salaire = salaire * 1.05 update employé set salaire = salaire * 1.05 where salaire > 10000;! verrou sur page lorsque: - la requête utilise des structures indexées - et la requête n'est pas très restrictive exemples (si les tables sont indexées): select * from employé where nom = "Durant"; update departement set vente=200000 where nom_departement='commercial'; Bernard ESPINASSE - Gestion des transactions et accès concurrents 18 L ' a t t e n t e d ' u n v e r r o u 1. begin transaction Utilisateur 1 Utilisateur 2 3. update employé set salaire = 4000 5. select * from departement where nom_departement ='commercial' 6. end transaction 2. begin transaction 4. update employé set salaire = 3000 attente 7. end transaction 3 - l'utilisateur 1 installe un verrou exclusif sur la table emp 4 - l'utilisateur 2 doit attendre la libération du verrou installé sur emp 5 - l'utilisateur 1 installe un verrou partagé sur la table dept 6 - l'utilisateur 1 libère les 2 verrous et l'utilisateur 2 peut continuer sa transaction V e r r o u m o r t e l ( d e a d l o c k ) 1. begin transaction 3. select * from employé Utilisateur 1 Utilisateur 2 5. update departement set nom_departement ='commercial' Blocage! 2. begin transaction 4. select * from departement 6. insert into employé value (Duval,...) Blocage! 3 - l'utilisateur 1 installe un verrou partagé sur la table emp 4 - l'utilisateur 2 installe un verrou partagé sur la table dept 5 - l'utilisateur 1 doit attendre la libération du verrou installé par l'utilisateur 2 sur la table dept 6 - l'utilisateur 2 doit attendre la libération du verrou installé par l'utilisateur 1 sur la table emp bloquage! Bernard ESPINASSE - Gestion des transactions et accès concurrents 19 Bernard ESPINASSE - Gestion des transactions et accès concurrents 20

V e r r o u m o r t e l ( d e a d l o c k ) apparaît lorsque les transactions de 2 utilisateurs se bloquent mutuellement peut aussi apparaître lors d'une simple requête à cause d'un verrouillage sur page lorqu'un verrou mortel survient, le SGBD doit: détecter le bloquage avorter une transaction et laisser continuer l'autre transaction la manipulation des dead-lock est un travail important pour les programmeurs EXEC SQL... IF SQLCODE < 0 (valeur indiquant l'interblocage) THEN DO EXEC SQL ROLLBACK... END. T r a n s a c t i o n s d a n s l e s s y s t è m e s r é p a r t i s transaction répartie ou "globale" = unité atomique d'interaction et de maintient de la cohérence composée d'entités coopérantes s'exécutant sur des systèmes différents soit et initialisées sur 2 sites différents gérant une entité dupliquée A : A SITE i : A=A*2 réseau SITE j : A=A+50 contrôleur de site (gestionaire tr ansaction globale) supposons que le site i fasse l'opération locale A=A*2 +100 et supposons que le site j fasse l'opération A=(A+50)*2 le contenu des 2 occurrences des l'entité A est devenu incohérent car l'ordre de traitement des transactions est différent! besoin de coordonner les 2 transactions et pour assurer un verrouillage global et un maintient de la cohérence! 2 types de protocoles : protocole de terminaison à 2 phases (2 phase commit protocol-2pc) protocole de terminaison à 3 phases (3 phase commit protocol-3pc) A Bernard ESPINASSE - Gestion des transactions et accès concurrents 21 Bernard ESPINASSE - Gestion des transactions et accès concurrents 22 2 p h a s e s c o m m i t p r o t o c o l - 2 P C la terminaison atomique de plusieurs sites : tous les sites terminent (commit) ou annulent (rollback) en respectant : 1- chaque site doit arriver à la même décision de terminaison ou d'annulation 2- chaque site a un droit de véto et l'unanimité est requise pour prendre une décision de terminaison 3- chaque site ne peut plus annuler sa décision une fois qu'une décision globale est prise! d'où : 2 phases : préparation (commit local) et décision (commit global) présence d'un coordinateur : coordinateur site i participant 3 p h a s e s c o m m i t p r o t o c o l - 3 P C intégre une phase de terminaison en cas de panne du coordinateur : coordinateur -WORK tous les OUI tous les ACK PREPARE OUI (or NOT) PRE ACK ACK site i participant préparation de la terminaison locale un nouvel coordinateur peut être élu en cas de panne du coordinateu r -WORK Consensus sur le OUI terminaison PREPARE OUI ACK préparation de la terminaison locale rollback si au moins un NON terminaison locale attention!!!! : danger de versions incohérentes en cas de partition du réseau en 2 sous réseaux qui prendraient des décision différentes Bernard ESPINASSE - Gestion des transactions et accès concurrents 23 Bernard ESPINASSE - Gestion des transactions et accès concurrents 24