Systèmes de gestion de bases de données



Documents pareils
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

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

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

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

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

TP Contraintes - Triggers

CATALOGUE FORMATIONS DOMAINE Bases de données

Bases de données cours 1

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

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

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

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

PROJET 1 : BASE DE DONNÉES REPARTIES

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

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

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

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

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

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

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

CREATION WEB DYNAMIQUE

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

SQL Historique

Implémentation des SGBD

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

Bases de données relationnelles

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

Chapitre 10. Architectures des systèmes de gestion de bases 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)

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

Bases de données Cours 1 : Généralités sur les bases de données

Java DataBaseConnectivity

A QUOI SERVENT LES BASES DE DONNÉES?

Initiation aux bases de données (SGBD) Walter RUDAMETKIN

IFT3030 Base de données. Chapitre 1 Introduction

Introduction aux bases de données Cours 1 : Généralités sur les bases de données

Attaques applicatives

Architectures d'intégration de données

Bases de données documentaires et distribuées Cours NFE04

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

Cours de Base de Données Cours n.12

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

Devoir Data WareHouse

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

Les bases de données

COMPRENDRE LES DIFFERENTS TYPES DE CONNEXION LORS DE LA

Bases de données et sites WEB

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

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

Introduction aux Bases de Données Relationnelles Conclusion - 1

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

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Cours Bases de données

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

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

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Etude et développement d un moteur de recherche

Java et les bases de données

Gestion de base de données

UNION INTERCEPT SELECT WHERE JOINT FROM ACID

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

Bases de données avancées

1. Base de données SQLite

A QUOI SERVENT LES BASES DE DONNÉES?

Historisation des données

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

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

Gestion de stock pour un magasin

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Réplication des données

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

Le langage SQL Rappels

AGRÉGATION «ÉCONOMIE ET GESTION»

Application web de gestion de comptes en banques

Avertissement : ceci est un corrigé indicatif qui n engage que son auteur

I. MySQL : Serveur et SGBD

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

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

Bases de Données Avancées

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

UML et les Bases de Données

Introduction à JDBC. Accès aux bases de données en Java

Corrigés détaillés des exercices

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

PHP 4 PARTIE : BASE DE DONNEES

... /5. Bases de Données I (J. Wijsen) 23 janvier 2009 NOM + PRENOM : Orientation + Année : Cet examen contient 11 questions.

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

Création et Gestion des tables

Raja Bases de données distribuées A Lire - Tutoriel

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

Langage SQL : créer et interroger une base

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Compte Rendu d intégration d application

Cours de Systèmes d Exploitation

THEME PROJET D ELABORATION D UNE BASE DE DONNEES SOUS LE SERVEUR MYSQL

Bases de Données Avancées

Hibernate vs. le Cloud Computing

Transcription:

Systèmes de gestion de bases de données Introduction a la notion de transaction P. Rigaux Cnam, dépt. informatique May 20, 2015 PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 20, 2015 1 / 1

Notion de transaction De quoi s agit-il? Deux hypothèses à reconsidérer. Hyp. 1: Un programme SQL s exécute indépendamment des autres ( en isolation ) faux, car de grandes bases de données peuvent gérer des centaines, voire des milliers d accès concurrents qui peuvent interagir les uns sur les autres. Hyp. 2: Un programme s exécute sans erreur et intégralement. Transaction faux pour des raisons innombrables: plantage de l application, pb réseau, pb du serveur, panne électrique, etc. L interruption peut laisser la base dans un état incohérent. La notion de transaction répond à ces deux problèmes. PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 20, 2015 2 / 1

Notion de transaction Objectifs du cours Sans même comprendre les techniques utilisées il faut Maîtriser la notion, centrale, de transaction. La spécification d une transaction nous revient. Réaliser l impact des exécutions transactionnelles concurrentes sur les autres utilisateurs Un défaut d isolation entre transaction peut engendrer des incohérences. Choisir un niveau d isolation approprié Compromis entre fluidité/anomalies et isolation/cohérence. Les techniques? (Contrôle de concurrence, objet du prochain cours. PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 20, 2015 3 / 1

Qu est-ce qu une transaction Définition Une transaction est une séquence d opérations de lecture ou d écriture, se terminant par commit ou rollback. Le commit est une instruction qui valide toutes les mises à jour. Le rollback est une instruction qui annule toutes les mises à jour. Essentiel Les opérations d une transaction sont solidaires: elles sont toutes validées, ou pas du tout (atomicité). PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 20, 2015 4 / 1

Pour bien comprendre On parle de transaction plutôt que de programme : beaucoup plus précis. Une transaction s exécute dans le cadre d un processus client connecté au processus serveur (SGBD). On peut effectuer une ou plusieurs transactions dans un même processus: elles sont dites sérielles (si pas de parallélisme). En revanche, deux processus distincts engendrent des transactions concurrentes. PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 20, 2015 5 / 1

Notre exemple de base: les données Notre base de données: Des clients qui réservent des places pour des spectacles Client (id client, nb places réservées, solde) Des spectacles qui proposent des places à des clients. Spectacle (id spectacle, nb places offertes, nb places prises, tarif) À retenir Cette base est cohérente si le nombre de places prises est égal à la somme des places réservées. PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 20, 2015 6 / 1

Notre exemple de base: le programme (partie lectures) procedure Reservation (v_id_client INT, v_id_spectacle INT, nb_places IN -- Variables v_client Client%ROWTYPE; v_spectacle Spectacle%ROWTYPE; v_places_libres INT; v_places_reservees INT; BEGIN -- On recherche le spectacle SELECT * INTO v_spectacle FROM Spectacle WHERE id_spectacle=v_id_spectacle; -- S il reste assez de places: on effectue la reservation IF (v_spectacle.nb_places_libres >= nb_places) THEN -- On recherche le client SELECT * INTO v_client FROM Client WHERE id_client=v_id_client; -- Calcul du transfert v_places_libres := v_spectacle.nb_places_libres - nb_places; v_places_reservees := v_client.nb_places_reservees + nb_places; PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 20, 2015 7 / 1

Le programme, suite (partie écritures) -- On diminue le nombre de places libres UPDATE Spectacle SET nb_places_libres = v_places_libres WHERE id_spectacle=v_id_spectacle; -- On augmente le nombre de places reervees par le client UPDATE Client SET nb_places_reservees=v_places_reservees WHERE id_client = v_id_client; -- Validation commit; ELSE rollback; END IF; END; NB: le langage (ici PL/SQL) n a aucun impact sur la modélisation des transactions. PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 20, 2015 8 / 1

Ce programme engendre des transactions L exécution de ce programme effectue des lectures et des mises à jour constituant des transactions. Les deux processus communiquent par message (requêtes, données). Le SGBD ne sait pas ce que fait l application avec les données transmises. Il ne voit que la séquence des lectures et des écritures. PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 20, 2015 9 / 1

Représentation d une transaction On représente les transactions par ce qu en connaît le système. les transactions, notées T 1,T 2,,T n ; les données (tuples) échangées sont notées x,y,z, ; pour chaque transaction T i, une lecture de x est notée r i [x] et une écriture de x est notée w i [x]; C i et R i représentent un commit (resp. rollback) effectué par la transaction T i. Une transaction T i est donc une séquence de lectures ou d écritures se terminant par C i ou R i.. Exemple: r i [x]w i [y]r i [y]r i [z]w i [z]c i PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 20, 2015 10 / 1

Les transactions engendrées par Réservation En s exécutant, la procédure Réservation engendre des transactions. Exemples: r[s 1 ]r[c 1 ]w[s 1 ]w[c 1 ]C: on lit le spectacle s1, le client c 1, puis on les met à jour tous les deux; r[s 1 ]r[c 2 ]w[s 1 ]w[c 2 ]C: un autre client (c 2 ) réserve pour le même spectacle (s 1 ); r[s 1 ] : on lit le spectacle s 1, et on s arrête là (plus assez de places disponibles?) Un même processus peut effectuer des transactions en série: r[s 1 ]r[c 1 ]w[s 1 ]w[c 1 ]C 1 r[s 1 ]r[c 2 ]w[s 1 ]w[c 2 ]r[s 1 ]C 1 PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 20, 2015 11 / 1

Exécutions concurrentes Quand plusieurs programmes clients sont actifs simultanément, les transactions engendrées s effectuent en concurrence. On obtient potentiellement un entrelacement des requêtes. Important L entrelacement de requêtes issues de transactions concurrentes engendre des anomalies. PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 20, 2015 12 / 1

Propriétés des transactions Un système relationnel contrôle la concurrente et garantit un ensemble de propriétés rassemblées sous l acronyme ACID. A = Atomicité. Une transaction est validée complètement ou pas du tout. C = Cohérence. Une transaction mène d un état cohérent à un autre état cohérent. I = Isolation. Une transaction s exécute comme si elle était seule. D = Durabilité. Quand le commit s exécute, ses résultats sont définitifs. Essentiel L isolation par défaut est seulement partielle: meilleures performances mais risque d anomalie. PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 20, 2015 13 / 1

Vérifions (Démonstration de sessions concurrentes avec MySQL) Réfléchir: J effectue un commit, puis je m aperçois d une erreur: est-il encore temps de faire un rollback? La transaction r[s 1 ]r[c 1 ]w[s 2 ]w[c 1 ]C peut-elle être engendrée par la procédure Réservation? J exécute la commande: DELETE * FROM Client; WHERE id=1; Réponse: 100 000 lignes détruites. Pourquoi et que faire? Exécution de Réservation: je lis un spectacle: il reste 10 places libres; je veux en réserver 5: on me répond qu une autre transaction a tout pris. Est-ce possible dans un système transactionnel? PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 20, 2015 14 / 1