Chapitre 4 : Transactions et gestion de la concurrence d accès

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

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

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

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

Implémentation des SGBD

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

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

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

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

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

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

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

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

SQL Historique

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

A QUOI SERVENT LES BASES DE DONNÉES?

Partie II Cours 3 (suite) : Sécurité de bases de données

TP Contraintes - Triggers

Réplication des données

Bases de données et sites WEB

//////////////////////////////////////////////////////////////////// Administration bases de données

Intégrité des données

UNION INTERCEPT SELECT WHERE JOINT FROM ACID

Devoir Data WareHouse

CHAPITRE 1 ARCHITECTURE

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

A QUOI SERVENT LES BASES DE DONNÉES?

Eléments de base de la sécurité des bases de données

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

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

Historisation des données

Session S12 Les bases de l optimisation SQL avec DB2 for i

Bases de Données Avancées PL/SQL

Les bases de données

Matrice d accès. Master SEMS, Pierre Paradinas. October 16, 2013

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

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

Configurer la supervision pour une base MS SQL Server Viadéis Services

Administration des bases de données. Jean-Yves Antoine

Bases de données relationnelles

1. Base de données SQLite

Les bases de l optimisation SQL avec DB2 for i

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

Cours de Base de Données Cours n.12

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

Bases de données avancées

Données Réparties. Thibault BERNARD.

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

Compétences Business Objects

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

Introduction aux Bases de Données 2004/2005

La replication dans PostgreSQL

Département Génie Informatique

IFT3030 Base de données. Chapitre 1 Introduction

Corrigés détaillés des exercices

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

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

Administration des bases de données

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

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

Information utiles. webpage : Google+ : digiusto/

SERVEUR DE SAUVEGARDE POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé

Plan de formation : Certification OCA Oracle 11g. Les administrateurs de base de données (DBA) Oracle gèrent les systèmes informatiques

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

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

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

Bases de Données Réparties

Quelques aspects du Relationnel-Objet du SGBD Oracle

TP3 : Creation de tables 1 seance

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

PROJET 1 : BASE DE DONNÉES REPARTIES

COMPOSANTS DE L ARCHITECTURE D UN SGBD. Chapitre 1

Description de SQL SERVER. historique

Table des matières 1 DISASTER RECOVERY SAUVEGARDER RESTAURER BASE DE DONNÉS "SUSPECT"... 28

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

Cours d algorithmique pour la classe de 2nde

CREATION WEB DYNAMIQUE

Les déclencheurs. Version 1.0. Grégory CASANOVA

Paginer les données côté serveur, mettre en cache côté client

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

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

Notion de base de données

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)

RECOVERY MANAGER G. Mopolo-Moké prof. MBDS UNSA 2005/ 2006

Guide d'installation et de configuration de Pervasive.SQL 7 dans un environnement réseau Microsoft Windows NT

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

CHAPITRE 4 POLITIQUES DE CONTRÔLES DES ACCÈS SOUS ORACLE ADMINISTRATION ET TUNING DE BASES DE DONNÉES 10/05/2015 RESPONSABLE DR K.

Java DataBaseConnectivity

Module BDR Master d Informatique (SAR)

Réparer un disque dur passé en RAW

Vincent Augusto

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

Guide pour l Installation des Disques Durs SATA et la Configuration RAID

Cours de Systèmes d Exploitation

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

Gestion de base de données

Attaques applicatives

Transcription:

Chapitre 4 : Transactions et gestion de la concurrence d accès

Introduction aux transactions En BD 2 problèmes : De multiples utilisateurs doivent pouvoir accéder à la base de donnée en même temps à problème d accès concurrents De nombreuses et diverses pannes peuvent apparaître. Il ne faut pourtant pas perdre les données, La Gestion de transactions répond à ces problèmes

Notion de transaction Une transaction est une suite d'opérations interrogeant et/ou modiant la BD, pour laquelle l'ensemble des opérations doit être soit validé, soit annulé. Toute la transaction est réalisée ou rien ne l est Validation : toute la transaction est prise en compte Avortement ou annulation : la transaction n a aucun effet Sous oracle Début d une transaction : ordre SQL ou fin de la précédente Fin d une transaction : validation(commit) ou annulation (Rollback)

Notion de transaction L'exécution d une transaction provoque le passage d'un état cohérent de la BD à un nouvel état cohérent Une transaction est constituée de trois primitives Ouverture d une transaction Travail sur les données clôture avec confirmation. à clôture avec annulation à Begin transaction Travail sur les données COMMIT ROLLBACK temps

Propriété d une transaction Atomicité Soit toutes les modifications effectuées par une transaction sont enregistrées dans la BD, soit aucune ne l est. Cohérence Une transaction fait passer une BD d un état cohérent à un autre état cohérent. Un état cohérent est un état dans lequel les contraintes d intégrité sont vérifiées. Isolation Une transaction se déroule sans être perturbée par les transactions concurrentes : tout se passe comme si elle se déroulait seule. Durabilité Une fois qu une transaction a été confirmée le SGBD garantit qu aucune modification qu elle a effectuée ne sera perdue même en cas : interruption, pannes du système d exploitation, «crash» de disque, etc.

Vies possibles d une transcation Vie sans histoire La transaction arrive sur la fin Point de confirmation : commit Un assassinat Arrêt par un événement extérieur Arrêt par le sgbd lui même (dead lock) Le système fait marche arrière (rollback) et annule les actions déjà effectuées Un suicide Arrêt et annulation par la transaction elle même (rollback)

Utilisation des transactions à Accès concurrents Accès concurrent Il y a un accès concurrent lorsque plusieurs utilisateurs (transactions) accèdent en même temps à la même donnée dans une base de données. Gestion des accès concurrents (contrôle de concurrence) S assurer que l exécution simultanée des transactions produit le même résultat que leur exécution séquentielle (l une puis l autre)

Accès concurrents Problèmes posés par les accès concurrents Perte de mise à jour Lecture impropre Lecture non reproductible Objets fantômes

Problèmes posés par les accès concurrents : Perte de mise à jour T1 et T2 modifient simultanèment A T 1 T 2 BD A = 10 read A read A A = A + 10 write A A = 20 A = A + 50 write A A = 60 Les modifications effectuées par T1 sont perdues

Problèmes posés par les accès concurrents : Lecture impropre read A T 1 T 2 BD A = A - 50 A + B = 200 A = 120 B = 80 write A A = 70 read B B = B + 50 read A read B display A + B (150 est affiché) write B B = 130 T2 lit une valeur de A non validée, affiche une valeur incohérence

Problèmes posés par les accès concurrents : Lecture impropre (donnée non confirmée) read A (70 est lu) T 1 T 2 BD A = 70 A = 50 write A A = 70 rollback (La valeur initiale de A est restaurée) A = 50 T1 lit une valeur de A non confirmée

Problèmes posés par les accès concurrents : Lecture non reproductible A = 20 T 1 T 2 BD read A (10 est lu) A = 10 write A A = 20 read A (20 est lu) T2 lit deux valeurs de A différentes

Problèmes posés par les accès concurrents : Objet fantôme T 1 T 2 BD E = {1, 2, 3} display card(e) 3 est affiché insert 4 into E E = {1, 2, 3, 4} display card(e) 4 est affiché

Accès concurrents : contrôle des accès Verrouillage : Le verrouillage est la technique la plus classique pour résoudre les problèmes dus à la concurrence : Avant de lire ou écrire une donnée une transaction peut demander un verrou sur cette donnée pour interdire aux autres transactions d y accéder. Si ce verrou ne peut être obtenu, parce qu une autre transaction en possède un, la transaction demandeuse est mise en attente. Afin de limiter les temps d attente, on peut jouer sur : la granularité du verrouillage : pour restreindre la taille de la donnée verrouillée (n-uplet, une table) le mode de verrouillage: pour restreindre les opérations interdites sur la donnée verrouillée

Verrouillage : Exemple T1 T2 Résultat A=10 Read A avec verrou A=A+10 Write A Commit; Read A avec verrou attente A=20 Read A avec verrou 20 A=A+50 50 Write A commit A=20 A=70

Problème de verrouillage : interblocage L impasse générée par deux transactions (ou plus) qui attendent, l une, que des verrous se libèrent, alors qu ils sont détenus par l autre T 1 T 2 lock X A lock X B lock S B attente lock S A attente attente B(S) T 1 T 2 A(S) graphe d attente

Résolution de l interblocage Deux approches Prévention Toutes les ressources nécessaires à la transaction sont verrouillées au départ Problème : cas des transactions qui ne démarrent jamais! Méthode peu utilisée aujourd hui Détection : On inspecte à intervalles réguliers le graphe d attente pour détecter si un interblocage s est produit. Dans ce cas on défait l une des transactions bloquées et on la relance un peu plus tard. On annule une transaction dont le temps d attente dépasse un certain seuil, et on la relance un peu plus tard.

Transaction : mise en oeuvre sous oracle Ouverture d une transaction Travail sur les données clôture avec confirmation. à clôture avec annulation à Connexion ou commit ou rollkack Travail sur les données COMMIT ROLLBACK temps

Mise en oeuvre sous oracle Début de transaction à la connexion, ou à la fin de la transaction précédente. Fin de transaction Commit ou Rollback. Instructions du DDL (CREATE, ALTER, DROP,..) sont suivies d un commit implicite, on ne peut donc pas faire d annulation d une telle instruction. Si la transaction courante contient des instructions DML, il y a d abord un commit de ces instructions avant d effectuer l instruction DDL. Déconnexion entraîne aussi un commit de la transaction en cours.

Points de repères Possible de subdiviser une transaction en plusieurs étapes en sauvant les infos modifiées a la fin de chaque étape, en gardant la possibilité soit de valider l'ensemble des mises a jour, d'annuler une partie des mises a jour a la n de la transaction. à Insérer des points de repère, ou SAVEPOINT. La création d'un point de repère se fait avec l'instruction : SAVEPOINT pointrepere; Pour annuler la partie de la transaction depuis un point de repère : ROLLBACK TO [SAVEPOINT] pointrepere;

Points repères Possibilité de défaire jusqu au point de confirmation [EXEC SQL] insert into employe values( ) ; [EXEC SQL] savepoint apres_insert ; [EXEC SQL] delete from employe where ; IF %rowcount>50 THEN [EXEC SQL] rollback to apres_insert ; [EXEC SQL] commit ; ELSE [EXEC SQL] commit ; END IF

Points de repères implicites Oracle pose des points de repères (de confirmations) implicites à chaque action : «statement level rollback» L utilisateur peut donc choisir : Effectuer lui même un rollback Tenter de poursuivre la transaction

Contrôle de pannes Motivations : Environnements non fiables Pannes matérielles Crash Disk, Panne de Courant,... Pannes logicielles Erreurs dues aux contrôle de concurrence, Violations de contraintes d'intégrité, Crtl C,... Objectifs : Assurer l'atomicité des transactions Garantir la durabilité des effets des transactions commises Moyens : Journalisation

Principe général Journalisation des transactions Conservation de la trace des opérations sur la base dans un fichier Plusieurs copies physiquement séparées Les informations enregistrées Utilisateur, date, Code de l opération (insert, update, delete) Ancienne valeur nouvelle valeur commit et rollback Les sauvegardes sont notées

Exemple de journal

Journalisation des transactions

Journalisation des transactions On peut exprimer l état de la BD par l équation : état de la base = journaux de transactions + fichiers de la base Règle du point de commit Au moment d un commit le cache du journal doit être écrit sur le disque. On satisfait donc l équation : l état de la base est sur le disque au moment où l enregistrement commit est écrit dans le fichier journal. Règle de recouvrabilité (recovery) Si un bloc du fichier de données, marqué comme modifié mais non validé, est écrit sur le disque, il va écraser l image avant. Le risque est alors de ne plus respecter l équation, et il faut donc écrire dans le journal pour être en mesure d effectuer un rollback éventuel.