La gestion des transactions
|
|
|
- Cécile Thibault
- il y a 9 ans
- Total affichages :
Transcription
1 La gestion des transactions Conception de bases de données Stéphane Crozat 14 septembre 2016
2 Table des matières Introduction 4 I Théorie : Transactions, fiabilité, concurrence 5 1. Principes des transactions Problématique des pannes et de la concurrence Notion de transaction Déroulement d'une transaction Propriétés ACID d'une transaction Journal des transactions Manipulation de transactions en SQL Transactions en SQL Exercice : MiniTP : Transaction en SQL standard sous PostgreSQL Exemple : Transaction sous Oracle en SQL Exemple : Transaction sous Oracle en PL/SQL Exemple : Transaction sous Access en VBA Mode Autocommit Exercice Exercice Exercice Fiabilité et transactions Les pannes Point de contrôle Ecriture en avant du journal Reprise après panne Exercice : MiniTP : Simulation d'une panne sous PostgreSQL Exemple : Transfert protégé entre deux comptes Exercice Exercice : Superhéros sans tête Complément : Algorithme de reprise UNDOREDO Concurrence et transactions Trois problèmes soulevés par la concurrence Le verrouillage Le déverrouillage Interblocage Exercice : MiniTP : Simulation d'accès concurrents sous PostgreSQL Solution aux trois problèmes soulevés par la concurrence Exercice Exercice : Films en concurrence Complément : Protocole d'accès aux données Synthèse : Les transactions Bibliographie commentée sur les transactions II Application : Transactions 30
3 1. Exercice : Opération bancaires et transactions III Test : Transactions 32 Questions de synthèse 42 Solutions des exercices 45 Abréviations 60 Bibliographie 61 Webographie 62 Index 63
4 Introduction Les transactions sont une réponse générale aux problèmes de fiabilité et d'accès concurrents dans les BD, et en particulier dans les BD en mode clientserveur. Elles sont le fondement de toute implémentation robuste d'une BD. Un SGBDR ne fonctionne nativement qu'en mode transactionnel. Stéphane Crozat 4
5 Théorie : Transactions, fiabilité, concurrence Théorie : Transactions, fiabilité, concurrence I 1. Principes des transactions Objectifs Comprendre les principes et l'intérêt des transactions 1.1. Problématique des pannes et de la concurrence Une BD ** est un ensemble persistant de données organisées qui a en charge la préservation de la cohérence de ces données. Les données sont cohérentes si elles respectent l'ensemble des contraintes d'intégrité spécifiées pour ces données : contraintes de domaine, intégrité référentielle, dépendances fonctionnelles... La cohérence des données peut être remise en cause par deux aspects de la vie d'une BD : La défaillance Lorsque le système tombe en panne alors qu'un traitement est en cours, il y a un risque qu'une partie seulement des instructions prévues soit exécutée, ce qui peut conduire à des incohérences. Par exemple pendant une mise à jour en cascade de clés étrangères suite au changement d'une clé primaire. La concurrence Lorsque deux accès concurrents se font sur les données, il y a un risque que l'un des deux accès rende l'autre incohérent. Par exemple si deux utilisateurs en réseau modifient une donnée au même moment, seule une des deux mises à jour sera effectuée. La gestion de transactions par un SGBD ** est à la base des mécanismes qui permettent d'assurer le maintien de la cohérence des BD. C'est à dire encore qu'il assure que tous les contraintes de la BD seront toujours respectées, même en cas de panne et même au cours d'accès concurrents Notion de transaction Définition : Transaction Une transaction est une unité logique de travail, c'est à dire une séquence d'instructions, dont l'exécution assure le passage de la BD ** d'un état cohérent à un autre état cohérent. 5
6 Déroulement d'une transaction Fondamental : Cohérence des exécutions incorrectes La transaction assure le maintien de la cohérence des données que son exécution soit incorrecte. correcte ou Exemple : Exemples d'exécutions incorrectes L'exécution d'une transaction peut être incorrecte parce que : Une panne a lieu Un accès concurrent pose un problème Le programme qui l'exécute en a décidé ainsi 1.3. Déroulement d'une transaction DEBUT TRAITEMENT Accès aux données en lecture Accès aux données en écriture 3. FIN Correcte : Validation des modifications Incorrecte : Annulation des modifications Fondamental Tant qu'une transaction n'a pas été terminée correctement, elle doit être assimilée à une tentative ou une mise à jour virtuelle, elle reste incertaine. Une fois terminée correctement la transaction ne peut plus être annulée par aucun moyen Propriétés ACID d'une transaction Une transaction doit respecter quatre propriétés fondamentales : L'atomicité Les transactions constituent l'unité logique de travail, toute la transaction est exécutée ou bien rien du tout, mais jamais une partie seulement de la transaction. La cohérence Les transactions préservent la cohérence de la BD **, c'est à dire qu'elle transforme la BD d'un état cohérent à un autre (sans nécessairement que les états intermédiaires internes de la BD au cours de l'exécution de la transaction respectent cette cohérence) L'isolation Les transactions sont isolées les unes des autres, c'est à dire que leur exécution est indépendante des autres transactions en cours. Elles accèdent donc à la BD comme si elles étaient seules à s'exécuter, avec comme corollaire que les résultats intermédiaires d'une transaction ne sont jamais accessibles aux autres transactions. 6
7 Journal des transactions La durabilité Les transactions assurent que les modifications qu'elles induisent perdurent, même en cas de défaillance du système. Remarque Les initiales de Atomicité, Cohérence, Isolation et Durabilité forme le mot mnémotechnique ACID Journal des transactions Définition : Journal Le journal est un fichier système qui constitue un espace de stockage redondant avec la BD **. Il répertorie l'ensemble des mises à jour faites sur la BD (en particulier les valeurs des enregistrements avant et après mise à jour). Le journal est donc un historique secondaire) qui mémorise tout ce qui se passe sur la BD. persistant (donc en mémoire Le journal est indispensable pour la validation (COMMIT), l'annulation (ROLLBACK) et la reprise après panne de transactions. Synonymes : Log 2. Manipulation de transactions en SQL Objectifs Connaître les syntaxes SQL standard, PostgreSQL, Oracle et Access pour utiliser des transactions 2.1. Transactions en SQL Introduction Le langage SQL ** fournit trois instructions pour gérer les transactions. Syntaxe : Début d'une transaction 1 BEGIN TRANSACTION (ou BEGIN) ; Cette syntaxe est optionnelle (voire inconnue de certains façon implicite dès qu'instruction est initiée sur la BD **. SGBD ** ), une transaction étant débutée de Syntaxe : Fin correcte d'une transaction 1 COMMIT TRANSACTION (ou COMMIT) ; Cette instruction SQL signale la fin d'une transaction couronnée de succès. Elle indique donc au gestionnaire de transaction que l'unité logique de travail s'est terminée dans un état cohérent est que les données peuvent effectivement être modifiées de façon durable. 7
8 Exercice : MiniTP : Transaction en SQL standard sous PostgreSQL Syntaxe : Fin incorrecte d'une transaction 1 ROLLBACK TRANSACTION (ou ROLLBACK) ; Cette instruction SQL signale la fin d'une transaction pour laquelle quelque chose s'est mal passé. Elle indique donc au gestionnaire de transaction que l'unité logique de travail s'est terminée dans un état potentiellement incohérent et donc que les données ne doivent pas être modifiées en annulant les modifications réalisées au cours de la transaction. Remarque : Programme Un programme est généralement une séquence de plusieurs transactions Exercice : MiniTP : Transaction en SQL standard sous PostgreSQL Se connecter à une base de données : psql mydb Créer une table test : CREATE TABLE test (a integer); Question 1 1. Commencer une transaction : BEGIN TRANSACTION; 2. Insérer les deux valeurs 1 et 2 dans la table : INSERT INTO Valider la transaction : COMMIT 4. Vérifier que les valeurs sont bien dans la table : SELECT * FROM... [ solution n 1 [*] p.45] Question 2 1. Commencer une transaction : BEGIN TRANSACTION; 2. Insérer les deux valeurs 3 et 4 dans la table : INSERT INTO Annuler la transaction : ROLLBACK 4. Vérifier que les valeurs ne sont pas dans la table : SELECT * FROM... [ solution n 2 [*] p.45] 2.3. Exemple : Transaction sous Oracle en SQL Exemple : Exemple en SQL sous Oracle 1 INSERT INTO test (a) VALUES (1); 2 COMMIT; 3 Attention : BEGIN implicite sous Oracle La commande BEGIN; ou BEGIN TRANSACTION; ne peut pas être utilisé sous Oracle (la commande BEGIN est réservée à l'ouverture d'un bloc PL/SQL). Toute commande SQL LMD ( INSERT, UPDATE ou DELETE) démarre par défaut une transaction, la commande BEGIN TRANSACTION est donc implicite. 8
9 Exemple : Transaction sous Access en VBA 2.4. Exemple : Transaction sous Oracle en PL/SQL Exemple : Exemple en PL/SQL sous Oracle 1 BEGIN 2 INSERT INTO test (a) VALUES (1); 3 COMMIT; 4 END; Exemple : Transaction sous Access en VBA Exemple : Exemple de transfert entre deux comptes en VBA sous Access 1 Sub MyTransaction 2 BeginTrans 3 CurrentDb.CreateQueryDef ("", "INSERT INTO test (a) VALUES (1)" ).Execute 4 CommitTrans 5 End Sub Remarque : VBA et transactions Sous Access, il n'est possible de définir des transactions sur plusieurs objets requêtes qu'en VBA Mode Autocommit Attention : Autocommit La plupart des clients et langages d'accès aux bases de données proposent un mode autocommit permettant d'encapsuler chaque instruction dans une transaction. Ce mode revient à avoir un COMMIT implicite après chaque instruction. Ce mode doit être désactivé pour permettre des transactions portant sur plusieurs instructions. Oracle Sous Oracle SQL*Plus : SET AUTOCOMMIT ON et SET AUTOCOMMIT OFF Sous Oracle SQL Developper : Menu Outils > Préférences > Base de données > Paramètres de feuille de calcul > Validation automatique dans une feuille de calcul PostgreSQL Avec psql : \set AUTOCOMMIT on \set AUTOCOMMIT off Si l' autocommit est activé, il est néanmoins possible de démarrer une transaction sur plusieurs lignes en exécutant un BEGIN TRANSACTION explicite : BEGIN ;... ; COMMIT ;. 9
10 Exercice Ainsi deux modes sont possibles : Autocommit activé : BEGIN explicites, COMMIT implicites Autocommit désactivé : BEGIN implicites, COMMIT explicites Access Sous Access, toute requête portant sur plusieurs lignes d'une table est encapsulée dans une transaction. Ainsi par exemple la requête UPDATE Compte SET Solde=Solde*6,55957 est exécutée dans une transaction et donc, soit toutes les lignes de la table Compte seront mises à jour, soit aucune (par exemple en cas de panne pendant Exercice Quel est le résultat de l'exécution suivante sous Oracle? [ solution n 3 [*] p.45] 1 SET AUTOCOMMIT OFF 2 CREATE TABLE T1 (A INTEGER); 3 4 INSERT INTO T1 VALUES (1); 5 INSERT INTO T1 VALUES (2); 6 INSERT INTO T1 VALUES (3); 7 COMMIT; 8 INSERT INTO T1 (4); 9 INSERT INTO T1 (5); 10 ROLLBACK; 11 SELECT SUM(A) FROM T Exercice Combien de lignes renvoie l'avantdernière instruction SELECT? [ solution n 4 [*] p.46] 1 SET AUTOCOMMIT OFF 2 CREATE TABLE T1 (A INTEGER); 3 4 INSERT INTO T1 VALUES (1); 5 INSERT INTO T1 VALUES (1); 6 INSERT INTO T1 VALUES (1); 7 SELECT * FROM T1; 8 COMMIT; 10
11 Fiabilité et transactions 2.9. Exercice Combien de tables sont créées par cette série d'instruction? [ solution n 5 [*] p.46] 1 SET AUTOCOMMIT OFF 2 CREATE TABLE T1 (A INTEGER); 3 CREATE TABLE T2 (A INTEGER); 4 CREATE TABLE T3 (A INTEGER); 5 INSERT INTO T1 VALUES (1); 6 INSERT INTO T2 VALUES (1); 7 INSERT INTO T3 VALUES (1); 8 ROLLBACK; 3. Fiabilité et transactions Objectifs Appréhender la gestion des pannes dans les SGBD. Comprendre la réponse apportée par la gestion des transactions Les pannes Une BD ** est parfois soumise à des défaillances qui entraînent une perturbation, voire un arrêt, de son fonctionnement. On peut distinguer deux types de défaillances : Les défaillances système ou défaillances douces ( soft crash), par exemple une coupure de courant ou une panne réseau. Ces défaillances affectent toutes les transactions en cours de traitement, mais pas la BD au sens de son espace de stockage physique. Les défaillances des supports ou défaillances dures ( hard crash), typiquement le disque dur sur lequel est stockée la BD. Ces défaillances affectent également les transactions en cours (par rupture des accès aux enregistrements de la BD), mais également les données ellesmêmes. Remarque : Annulation des transactions non terminées Lorsque le système redémarre après une défaillance, toutes les transactions qui étaient en cours d'exécution (pas de COMMIT) au moment de la panne sont annulés (ROLLBACK imposé par le système). Cette annulation assure le retour à un état cohérent, en vertu des propriétés transactions. ACID ** des 11
12 Point de contrôle Remarque : Réexécution des transactions terminées avec succès Au moment de la panne certaines transactions étaient peutêtre terminées avec succès (COMMIT) mais non encore (ou seulement partiellement) enregistrées dans la BD (en mémoire volatile, tampon, etc.). Lorsque le système redémarre il doit commencer par rejouer ces transactions, qui assurent un état cohérent de la BD plus avancé. Cette reprise des transactions après COMMIT est indispensable dans la mesure où c'est bien l'instruction COMMIT qui assure la fin de la transaction et donc la toute transaction pourrait être remise en cause. durabilité. Sans cette gestion, Remarque : Unité de reprise Les transactions sont des unités de travail, et donc également de reprise. Remarque : Défaillance des supports Tandis que la gestion de transactions et de journal permet de gérer les défaillances systèmes, les défaillances des supports ne pourront pas toujours être gérés par ces seuls mécanismes. Il faudra leur adjoindre des procédures de sauvegarde et de restauration de la BD pour être capable au pire de revenir dans un état antérieur cohérent et au mieux de réparer complètement la BD (cas de la réplication en temps réel par exemple) Point de contrôle Définition : Point de contrôle Un point de contrôle est une écriture dans le journal positionnée automatiquement par le système qui établit la liste de toutes les transactions en cours (au moment où le point de contrôle est posé) et force la sauvegarde des données alors en mémoire centrale dans la mémoire secondaire. Le point de contrôle est positionné à intervalles de temps ou de nombre d'entrées. Le dernier point de contrôle est le point de départ d'une reprise après panne, dans la mesure où c'est le dernier instant où toutes les données ont été sauvegardées en mémoire non volatile. Synonymes : Syncpoint 3.3. Ecriture en avant du journal Fondamental On remarquera que pour que la reprise de panne soit en mesure de rejouer les transactions, la première action que doit effectuer le système au moment du COMMIT est l'écriture dans le journal de cette fin correcte de transaction. En effet ainsi la transaction pourra être rejouée, même si elle n'a pas eu le temps de mettre effectivement à jour les données dans la BD, puisque le journal est en mémoire secondaire. 12
13 Reprise après panne 3.4. Reprise après panne Introduction Le mécanisme de reprise après panne s'appuie sur le journal et en particulier sur l'état des transactions au moment de la panne et sur le dernier point de contrôle. Le schéma ciaprès illustre les cinq cas de figure possibles pour une transaction au moment de la panne. États d'une transaction au moment d'une panne Transactions de type T1 Elles ont débuté et se sont terminées avant tc. Elles n'interviennent pas dans le processus de reprise. Transactions de type T2 Elles ont débuté avant tc et se sont terminées entre tc et tf. Elles devront être rejouées (il n'est pas sûr que les données qu'elles manipulaient aient été correctement inscrites en mémoire centrale, puisque après tc, or le COMMIT impose la durabilité). Transactions de type T3 13
14 Exercice : MiniTP : Simulation d'une panne sous PostgreSQL Elles ont débuté avant tc, mais n'était pas terminées à tf. Elles devront être annulées (pas de COMMIT). Transactions de type T4 Elles ont débuté après tc et se sont terminées avant tf. Elles devront être rejouées. Transactions de type T5 Elles ont débuté après tc et ne se sont pas terminées. Elles devront être annulées. Remarque Les transactions sont des unités d'intégrité Exercice : MiniTP : Simulation d'une panne sous PostgreSQL Question Se connecter à une base de données : psql mydb Créer une table test : CREATE TABLE test (a integer); Commencer une transaction : BEGIN TRANSACTION; Insérer les deux valeurs 1 et 2 dans la table : INSERT INTO... Vérifier que les valeurs sont bien dans la table : SELECT * FROM... Simuler un crash en fermant le terminal : ROLLBACK du système [ solution n 6 [*] p.46] Se reconnecter et vérifier que les valeurs ne sont plus dans la table : SELECT * FROM Exemple : Transfert protégé entre deux comptes Exemple : Transfert entre deux comptes en SQL standard sous PostgreSQL 1 BEGIN; 2 UPDATE Compte1 SET Solde=Solde+ 100 WHERE Num= 1 ; 3 UPDATE Compte2 SET Solde=Solde 100 WHERE Num= 1 ; 4 COMMIT; 5 / Exemple : Transfert entre deux comptes en PL/SQL sous Oracle 1 CREATE OR REPLACE PROCEDURE mytransfc1c2 2 IS 3 BEGIN 4 UPDATE Compte1 SET Solde=Solde+ 100 WHERE Num= 1 ; 5 UPDATE Compte2 SET Solde=Solde 100 WHERE Num= 1 ; 6 COMMIT; 7 END; 8 / Exemple : Transfert entre deux comptes en VBA sous Access 1 Sub mytransfc1c2 2 BeginTrans 3 CurrentDb.CreateQueryDef ("", "UPDATE Compte1 SET Solde=Solde+100 WHERE Num=1" ).Execute 4 CurrentDb.CreateQueryDef ("", "UPDATE Compte2 SET Solde=Solde100 WHERE Num=1" ).Execute 14
15 Exercice 5 CommitTrans 6 End Sub Fondamental : Transfert protégé Pour les trois exemples ciavant le transfert est protégé au sens où soit les deux exécutés, soit aucun. UPDATE seront En cas de panne pendant la transaction, le transfert sera annulé ( ROLLBACK système), mais en aucun cas un des deux comptes ne pourra être modifié sans que l'autre le soit (ce qui aurait entraîné une perte ou un gain sur la somme des deux comptes) Exercice Pour faire un transfert sécurisé d'un point de vue transactionnel de 100 du compte bancaire C1 vers le compte bancaire C2 pour le compte numéro 12, quelle est la série d'instructions correcte (en mode autocommit off)? UPDATE C1 SET Solde=Solde100 WHERE Numero=12; ROLLBACK; [ solution n 7 [*] p.47] UPDATE C2 SET Solde=Solde+100 WHERE Numero=12; COMMIT; UPDATE C1 SET Solde=Solde100 WHERE Numero=12 UPDATE C2 SET Solde=Solde+100 WHERE Numero=12 ROLLBACK; UPDATE C1 SET Solde=Solde100 WHERE Numero=12; COMMIT; UPDATE C2 SET Solde=Solde+100 WHERE Numero=12; COMMIT; UPDATE C1 SET Solde=Solde100 WHERE Numero=12; UPDATE C2 SET Solde=Solde+100 WHERE Numero=12; COMMIT; UPDATE C1 SET Solde=Solde100 WHERE Numero=12; ROLLBACK; UPDATE C2 SET Solde=Solde100 WHERE Numero=12; ROLLBACK; 3.8. Exercice : Superhéros sans tête [10 minutes] Les usines GARVEL construisent des figurines de superhéros à partir des données présentes dans la base de données PostgreSQL de l'entreprise. Un gros problème est survenu le mois dernier, lorsque l'usine en charge d'une nouvelle figurine, Superchild, a livré un million d'exemplaires sans tête. À l'analyse de la base il a en effet été observé que la base contenait un tuple "Superchild" dans la table Personnage, et cinq tuples associés dans la table Membre, deux pour les bras, deux pour les jambes et un pour le torse, mais aucun pour la tête. Le service qui a opéré la saisie du nouveau personnage assure, sans ambiguïté possible, que la tête a pourtant été saisie dans la base. En revanche, l'enquête montre des instabilités de son réseau à cette période. 15
16 Complément : Algorithme de reprise UNDOREDO L'extrait du modèle UML utile au problème est proposé ciaprès, ainsi que le code SQL exécuté via le client psql lors de l'insertion de la nouvelle figurine. Modèle UML Figurines GARVEL (extrait) 1 \set AUTOCOMMIT on 2 INSERT INTO Personnage (designation, prix, identite_secrete, genre) VALUES ('Superchild','12','Jordy', 'superhéros') ; 3 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','bras droit','bleu' ) ; 4 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','bras gauche','bleu' ) ; 5 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','jambe gauche','bleu' ) ; 6 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','jambe droite','bleu' ) ; 7 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','torse','rouge' ) ; 8 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','tete','rose' ) ; Question 1 Expliquer la nature du problème qui est probablement survenu. Proposer une solution générale pour que le problème ne se renouvelle pas, en expliquant pourquoi. Soyez concis et précis : La bonne mobilisation des concepts du domaine et la clarté de la rédaction seront appréciées. [ solution n 8 [*] p.47] Question 2 Illustrer la solution proposée en corrigeant le code SQL de l'insertion de "Superchild". [ solution n 9 [*] p.48] 3.9. Complément : Algorithme de reprise UNDOREDO Introduction L'algorithme suivant permet d'assurer une reprise après panne qui annule et rejoue les transactions adéquates. 16
17 Complément : Algorithme de reprise UNDOREDO 1 1. SOIT deux listes REDO et UNDO 2 1a. Initialiser la liste REDO à vide 3 1b. Initialiser la liste UNDO avec toutes les transactions en cours au dernier point de contrôle FAIRE une recherche en avant dans le journal, à partir du point de contrôle 6 2a. SI une transaction T est commencée ALORS ajouter T à UNDO 7 2b. SI une transaction T est terminée avec succès alors déplacer T de UNDO à REDO QUAND la fin du journal est atteinte 10 3a. Annuler les transactions de la liste UNDO (reprise en arrière) 11 3b. Rejouer les transactions de la liste REDO (reprise en avant) TERMINER la reprise et redevenir disponible pour de nouvelles instructions Exemple États d'une transaction au moment d'une panne Transactions de type T1 Non prises en compte par l'algorithme. Transactions de type T2 Ajoutées à la liste UNDO (étape 1b) puis déplacée vers REDO (étape 2b) puis rejouée (étape 3b). Transactions de type T3 Ajoutées à la liste UNDO (étape 1b) puis annulée (étape 3a). Transactions de type T4 17
18 Concurrence et transactions Ajoutées à la liste UNDO (étape 2a) puis déplacée vers REDO (étape 2b) puis rejouée (étape 3b). Transactions de type T5 Ajoutées à la liste UNDO (étape 2a) puis annulée (étape 3a). * * * On voit que la gestion transactionnelle est un appui important à la reprise sur panne, en ce qu'elle assure des états cohérents qui peuvent être restaurés. 4. Concurrence et transactions Objectifs Appréhender la gestion de la concurrence dans les SGBD. Comprendre la réponse apportée par la gestion des transactions Trois problèmes soulevés par la concurrence. Introduction Nous proposons cidessous trois problèmes posés par les accès concurrents des transactions aux données Perte de mise à jour Problème de la perte de mise à jour du tuple T par la transaction A Les transaction A et B accèdent au même tuple T ayant la même valeur respectivement à t1 et t2. Ils modifient chacun la valeur de T. Les modifications effectuées par A seront perdues puisqu'elle avait lu T avant sa modification par B. 18
19 Exemple Doucle crédit d'un compte bancaire C Dans cet exemple le compte bancaire vaut 1010 à la fin des deux transactions à la place de Accès à des données non validées Problème de la lecture impropre du tuple T par la transaction A La transaction A accède au tuple T qui a été modifié par la transaction B. B annule sa modification et A a donc accédé à une valeur qui n'aurait jamais dû exister (virtuelle) de T. Pire A pourrait faire une mise à jour de T après l'annulation par B, cette mise à jour inclurait la valeur avant annulation par B (et donc reviendrait à annuler l'annulation de B). 19
20 Exemple Annulation de crédit sur le compte bancaire C Dans cet exemple le compte bancaire vaut 1110 à la fin des deux transactions à la place de Lecture incohérente Problème de la lecture non reproductible du tuple T par la transaction A Si au cours d'une même transaction A accède deux fois à la valeur d'un tuple alors que ce dernier est, entre les deux, modifié par une autre transaction B, alors la lecture de A est inconsistente. Ceci peut entraîner des incohérences par exemple si un calcul est en train d'être fait sur des valeurs par ailleurs en train d'être mises à jour par d'autres transactions. Remarque Le problème se pose bien que la transaction B ait été validée, il ne s'agit donc pas du problème d'accès à des données non validées. 20
21 Le verrouillage Exemple Transfert du compte C1 au compte C2 pendant une opération de calcul C1+C2 Dans cet exemple la somme calculée vaut 210 à la fin du calcul alors qu'elle devrait valoir Le verrouillage Introduction Une solution générale à la gestion de la concurrence est une technique très simple appelée verrouillage. Définition : Verrou Poser un verrou sur un objet (typiquement un tuple) par une transaction signifie rendre cet objet inaccessible aux autres transactions. Synonymes : Lock Définition : Verrou partagé S Un verrou partagé, noté S, est posé par une transaction lors d'un accès en lecture sur cet objet. Un verrou partagé interdit aux autres transaction de poser un verrou exclusif sur cet objet et donc d'y accéder en écriture. Synonymes : Verrou de lecture, Shared lock, Read lock 21
22 Le déverrouillage Définition : Verrou exclusif X Un verrou exclusif, noté X, est posé par une transaction lors d'un accès en écriture sur cet objet. Un verrou exclusif interdit aux autres transactions de poser tout autre verrou (partagé ou exclusif) sur cet objet et donc d'y accéder (ni en lecture, ni en écriture). Synonymes : Verrou d'écriture, Exclusive lock, Write lock Remarque : Verrous S multiples Un même objet peut être verrouillé de façon partagée par plusieurs transactions en même temps. Il sera impossible de poser un verrou exclusif sur cet objet tant qu'au moins une transaction disposera d'un verrou S sur cet objet. Méthode : Règles de verrouillage Soit la transaction A voulant poser un verrou S sur un objet O Si O n'est pas verrouillé alors A peut poser un verrou S Si O dispose déjà d'un ou plusieurs verrous S alors A peut poser un verrou S Si O dispose déjà d'un verrou X alors A ne peut pas poser de verrou S Soit la transaction A voulant poser un verrou X sur un objet O Si O n'est pas verrouillé alors A peut poser un verrou X Si O dispose déjà d'un ou plusieurs verrous S ou d'un verrou X alors A ne peut pas poser de verrou X Matrice des règles de verrouillage Remarque : Promotion d'un verrou Une transaction qui dispose déjà, ellemême, d'un verrou S sur un objet peut obtenir un verrou X sur cet objet si aucune autre transaction ne détient de verrou S sur l'objet. Le verrou est alors promu du statut partagé au statut exclusif Le déverrouillage Définition : Déverrouillage Lorsqu'une transaction se termine (COMMIT ou ROLLBACK) elle libère tous les verrous qu'elle a posé. Synonymes : Unlock 22
23 Interblocage 4.4. Interblocage Définition : Interblocage L'interblocage est le phénomène qui apparaît quand deux transactions (ou plus, mais généralement deux) se bloquent mutuellement par des verrous posés sur les données. Ces verrous empêchent chacune des transactions de se terminer et donc de libérer les verrous qui bloquent l'autre transaction. Un processus d'attente sans fin s'enclenche alors. Les situations d'interblocage sont détectées par les SGBD ** et gérées, en annulant l'une, l'autre ou les deux transactions, par un ROLLBACK système. Les méthodes utilisées sont la détection de cycle dans un graphe d'attente et la détection de délai d'attente trop long. Synonymes : Deadlock, Blocage, Verrou mortel Définition : Cycle dans un graphe d'attente Principe de détection d'un interblocage par détection d'un cycle dans un graphe représentant quelles transactions sont en attente de quelles transactions (par inférence sur les verrous posés et les verrous causes d'attente). Un cycle est l'expression du fait qu'une transaction A est en attente d'une transaction B qui est en attente d'une transaction A. La détection d'un tel cycle permet de choisir une sera annulée pour que l'autre puisse se terminer. Synonymes : Circuit de blocage victime, c'est à dire une des deux transactions qui Définition : Délai d'attente Principe de décision qu'une transaction doit être abandonnée (ROLLBACK) lorsque son délai d'attente est trop long. Ce principe permet d'éviter les situations d'interblocage, en annulant une des deux transactions en cause, et en permettant donc à l'autre de se terminer. Synonymes : Timeout Remarque : Risque lié à l'annulation sur délai Si le délai est trop court, il y a un risque d'annuler des transactions en situation d'attente longue, mais non bloquées. Si le délai est trop long, il y a un risque de chute des performances en situation d'interblocage (le temps que le système réagisse). La détection de cycle est plus adaptée dans tous les cas, mais plus complexe à mettre en œuvre. Remarque : Relance automatique Une transaction ayant été annulée suite à un interblocage (détection de cycle ou de délai d'attente) n'a pas commis de "faute" justifiant son annulation. Cette dernière est juste due aux contraintes de la gestion de la concurrence. Aussi elle n'aurait pas dû être annulée et devra donc être exécutée à nouveau. 23
24 Exercice : MiniTP : Simulation d'accès concurrents sous PostgreSQL Certains SGBD ** se charge de relancer automatiquement les transactions ainsi annulées Exercice : MiniTP : Simulation d'accès concurrents sous PostgreSQL 1. Se connecter deux fois à une même base de données dans deux terminaux ( term1 et term2) : psql mydb psql mydb 2. Créer une table test : CREATE TABLE test (a integer); Question term1 Insérer une valeur : INSERT... ( COMMIT implicite) term2 Vérifier que la valeur est visible : SELECT... [ solution n 10 [*] p.48] Question term1 Commencer une transaction : BEGIN TRANSACTION; term1 Insérer la valeur 2 dans la table : INSERT INTO... term1 Vérifier que la valeur est bien dans la table : SELECT * FROM... term2 Vérifier que la valeur n'est pas visible : SELECT * FROM... term1 Valider la transaction : COMMIT; term2 Vérifier que la valeur est visible : SELECT * FROM... [ solution n 11 [*] p.49] Question term1 Commencer une transaction : BEGIN TRANSACTION; term1 Exécuter une mise à jour (multiplier toutes les valeurs par 2) : UPDATE... term2 Exécuter une mise à jour concurrente (multiplier les valeurs par 3) : UPDATE... term2 Observer la mise en attente term1 Valider la transaction : COMMIT; term2 Vérifier le déblocage et que les deux mises à jour ont bien été effectuées (a multiplié par 6) : SELECT... term1 Vérifier que les deux mises à jour ont bien été effectuées (a multiplié par 6) : SELECT... [ solution n 12 [*] p.49] 4.6. Solution aux trois problèmes soulevés par la concurrence. Introduction Le principe du verrouillage permet d'apporter une solution aux trois problèmes classiques soulevés par les accès aux concurrents aux données par les transactions. 24
25 Perte de mise à jour Problème de la perte de mise à jour du tuple T par la transaction A Remarque Le problème de perte de mise à jour est réglé, mais soulève ici un autre problème, celui de l'interblocage Accès à des données non validées Problème de la lecture impropre du tuple T par la transaction A 25
26 Exercice Lecture incohérente Problème de la lecture non reproductible du tuple T par la transaction A Remarque La lecture reste cohérente car aucune mise à jour ne peut intervenir pendant le processus de lecture d'une même transaction Exercice Soit l'exécution concurrente des deux transactions cidessous (on pose qu'aucune autre transaction ne s'exécute par ailleurs). NB : Le tableau fait état des temps auxquels les instructions sont soumises au serveur et non auxquels elles sont traitées. [ solution n 13 [*] p.50] Transactions concurrentes De combien le champ TABLE1.A atil été augmenté à t6 du point de vue de la transaction 2? NB : Si vous pensez que le résultat ne peut être déterminé à cause d'une perte de mise à jour ou d'un interblocage, répondez 0. 26
27 Exercice 4.8. Exercice : Films en concurrence Soit la table Film suivante définie en relationnel permettant d'enregistrer le nombre d'entrées des films identifiés par leur ISAN. [ solution n 14 [*] p.51] 1 Film(#isan:char(33),entrees:integer) Soit l'exécution concurrente de deux transactions TR1 et TR2 visant à ajouter chacune une entrée au film '123' : Temps Transaction TR1 Transaction TR2 t0 BEGIN t1 BEGIN t2 UPDATE Film SET entrees=entrees+1 WHERE isan='123' t3 t4 UPDATE Film SET entrees=entrees+1 WHERE isan='123' t5 t6 COMMIT t7 t8 COMMIT Transaction parallèles TR1 et TR2 sous PostgreSQL NB : Les instructions sont reportées au moment où elles sont transmises au serveur Aucune autre transaction n'est en cours d'exécution entre t0 et t Exercice De combien les entrées du film 123 onttelles été augmentées à t3 du point de vue de la transaction TR1? Exercice De combien les entrées du film 123 onttelles été augmentées à t3 du point de vue de la transaction TR2? 27
28 Exercice Exercice De combien les entrées du film 123 onttelles été augmentées à t5 du point de vue de la transaction TR1? Exercice De combien les entrées du film 123 onttelles été augmentées à t5 du point de vue de la transaction TR2? Exercice De combien les entrées du film 123 onttelles été augmentées à t7 du point de vue de la transaction TR1? Exercice De combien les entrées du film 123 onttelles été augmentées à t7 du point de vue de la transaction TR2? 4.9. Complément : Protocole d'accès aux données. Méthode : Règles de verrouillage avant les lectures et écritures des données Soit la transaction A voulant lire des données d'un tuple T : A demande à poser un verrou S sur T Si A obtient de poser le verrou alors A lit T Sinon A attend le droit de poser son verrou (et donc que les verrous qui l'en empêchent soient levés) Soit la transaction A voulant écrire des données d'un tuple T : A demande à poser un verrou X sur T Si A obtient de poser le verrou alors A écrit T Sinon A attend le droit de poser son verrou (et donc que les verrous qui l'en empêchent soient levés) Soit la transaction A se terminant (COMMIT ou ROLLBACK) : A libère tous les verrous qu'elle avait posé Certaines transactions en attente obtiennent éventuellement le droit de poser des verrous Remarque : Liste d'attente Afin de rationaliser les attentes des transactions, des stratégies du type FIFO ** appliquées et donc les transactions sont empilées selon leur ordre de demande. sont généralement 28
29 Bibliographie commentée sur les transactions 5. Synthèse : Les transactions Transaction Unité logique de travail pour assurer la cohérence de la BD même en cas de pannes ou d'accès concurrents. Panne Même en cas de panne, la BD doit rester cohérente. Défaillances système Coupure de courant, de réseau, etc. Défaillances du support Crash disque (dans ce cas les transactions peuvent être insuffisantes). Concurrence Dimension relevant de la conception d'application. Perte de mise à jour Accès à des données non valides Lecture incohérente Programmation Un programme peut décider de l'annulation d'une transaction. ROLLBACK Instruction SQL d'annulation d'une transaction. 6. Bibliographie commentée sur les transactions Complément : Synthèses Les transactions ** Une bonne introduction courte au principe des transactions avec un exemple très bien choisi. Des exemples d'implémentation sous divers SGBD (InterBase par exemple) SQL2 SQL3, applications à Oracle ** Une bonne description des principes des transactions, avec les exemples caractéristiques, l'implémentation SQL et une étude de cas sous Oracle 8 (chapitre 5). Tutoriel de bases de données relationnelles de l'int Evry ** ( fr/cours/bd/bd_rel/support/poly.html#rtftoc30 Un aperçu général de l'ensemble de la problématique des transactions, de la concurrence et de la fiabilité. Programmation SQL ** Un exemple d'exécution de transactions (pages 2023) 29
30 Application : Transactions Application : Transactions II 1. Exercice : Opération bancaires et transactions [1 heure] On désire réalisation une modalités suivantes : BD ** permettant de gérer les comptes bancaires des clients selon les Chaque client possède un compte courant et éventuellement un compte d'épargne. Un compte est identifié par un numéro unique composé d'un numéro de pays, d'un numéro de ville (relatif au pays), d'un numéro d'agence (relatif à la ville), et d'un numéro propre (fourni par l'agence). A des fins d'identification du compte par un opérateur humain, on gardera dans la BD un intitulé pour les pays, villes et agences. Il est possible de faire des transferts d'un compte sur l'autre Il est possible de débiter (enlever) de l'argent depuis le compte courant Il est possible de créditer (ajouter) de l'argent sur les deux comptes Les comptes doivent toujours être positifs On ne garde pas la mémoire des opérations, seules les soldes sur les comptes sont gérés Un client est décrit par son nom, son prénom, sa civilité. Question 1 Réaliser la conception complète de la BD [ solution n 15 [*] p.52] Indice : La conception complète signifie le MCD, le MLD et et le code SQL de création de l'implémentation physique. Question 2 Soient les événements suivants survenant sur la BD : [ solution n 16 [*] p.54] Le client Robert Dupont est créé dans l'agence du centre ville de Compiègne, qui vient d'ouvrir. Le client Alphonse Durand est créé dans la même agence, mais il veut également un compte d'épargne sur lequel il dépose tout de suite 1000 Le client Robert Dupont dépose deux chèques de 100 sur son compte courant. Le client Alphonse Durand transfère 500 de son compte d'épargne à son compte courant. Écrire le code SQL permettant de traiter ces événements, sans utiliser de transactions 30
31 Exercice : Opération bancaires et transactions Suite à des problèmes de coupure réseaux, on constate des problèmes sur les comptes. Ainsi suite à l'exécution des opérations précédentes, la requête suivante renvoie des résultats erronés. 1 SELECT tcomptecourant.fkclient AS N, tcomptecourant.asolde + NVL(tCompteEpargne.aSolde,0) AS SoldeDeTousComptes 2 FROM tcomptecourant LEFT JOIN TCompteEpargne 3 ON tcomptecourant.fkclient=tcompteepargne.fkclient ; N SoldeDeTousComptes Résultat retourné Question 3 Expliquer à quoi peuvent être dus les problèmes rencontrés. [ solution n 17 [*] p.54] Indice : La fonction NVL renvoie comme valeur le second paramètre, si le premier à pour valeur NULL. Question 4 Proposer une solution permettant d'assurer la cohérence des opérations, en aménageant cotre code SQL. [ solution n 18 [*] p.55] 31
32 Test : Transactions Test : Transactions III 32
33 Test : Transactions Exercice : Films en concurrence [ solution n 19 [*] p.55] Soit la table Film suivante définie en relationnel permettant d'enregistrer le nombre d'entrées des films identifiés par leur ISAN. 1 Film(#isan:char(33),entrees:integer) Soit l'exécution concurrente de deux transactions TR1 et TR2 visant à ajouter chacune une entrée au film '123' : Temps Transaction TR1 Transaction TR2 t0 BEGIN t1 BEGIN t2 UPDATE Film SET entrees=entrees+1 WHERE isan='123' t3 t4 UPDATE Film SET entrees=entrees+1 WHERE isan='123' t5 t6 COMMIT t7 t8 COMMIT Transaction parallèles TR1 et TR2 sous PostgreSQL NB : Les instructions sont reportées au moment où elles sont transmises au serveur Aucune autre transaction n'est en cours d'exécution entre t0 et t8. 33
34 Exercice 0. Exercice De combien les entrées du film 123 onttelles été augmentées à? t3 du point de vue de la transaction 34
35 Exercice 0. Exercice De combien les entrées du film 123 onttelles été augmentées à? t3 du point de vue de la transaction 35
36 Exercice 0. Exercice De combien les entrées du film 123 onttelles été augmentées à? t5 du point de vue de la transaction 36
37 Exercice 0. Exercice De combien les entrées du film 123 onttelles été augmentées à? t5 du point de vue de la transaction 37
38 Exercice 0. Exercice De combien les entrées du film 123 onttelles été augmentées à? t7 du point de vue de la transaction 38
39 Exercice 0. Exercice De combien les entrées du film 123 onttelles été augmentées à? t7 du point de vue de la transaction Exercice [ solution n 20 [*] p.57] Quel est le résultat de l'exécution suivante sous Oracle? 1 SET AUTOCOMMIT OFF 2 CREATE TABLE T1 (A INTEGER); 3 4 INSERT INTO T1 VALUES (1); 5 INSERT INTO T1 VALUES (2); 6 INSERT INTO T1 VALUES (3); 7 COMMIT; 8 INSERT INTO T1 (4); 9 INSERT INTO T1 (5); 10 ROLLBACK; 11 SELECT SUM(A) FROM T1 Exercice [ solution n 21 [*] p.57] Combien de lignes renvoie l'avantdernière instruction SELECT? 1 SET AUTOCOMMIT OFF 2 CREATE TABLE T1 (A INTEGER); 3 4 INSERT INTO T1 VALUES (1); 5 INSERT INTO T1 VALUES (1); 6 INSERT INTO T1 VALUES (1); 7 SELECT * FROM T1; 8 COMMIT; Exercice [ solution n 22 [*] p.57] Combien de tables sont créées par cette série d'instruction? 1 SET AUTOCOMMIT OFF 2 CREATE TABLE T1 (A INTEGER); 3 CREATE TABLE T2 (A INTEGER); 4 CREATE TABLE T3 (A INTEGER); 5 INSERT INTO T1 VALUES (1); 6 INSERT INTO T2 VALUES (1); 7 INSERT INTO T3 VALUES (1); 8 ROLLBACK; 39
40 Exercice Exercice [ solution n 23 [*] p.58] Pour faire un transfert sécurisé d'un point de vue transactionnel de 100 du compte bancaire C1 vers le compte bancaire C2 pour le compte numéro 12, quelle est la série d'instructions correcte (en mode autocommit off)? UPDATE C1 SET Solde=Solde100 WHERE Numero=12; ROLLBACK; UPDATE C2 SET Solde=Solde+100 WHERE Numero=12; COMMIT; UPDATE C1 SET Solde=Solde100 WHERE Numero=12 UPDATE C2 SET Solde=Solde+100 WHERE Numero=12 ROLLBACK; UPDATE C1 SET Solde=Solde100 WHERE Numero=12; COMMIT; UPDATE C2 SET Solde=Solde+100 WHERE Numero=12; COMMIT; UPDATE C1 SET Solde=Solde100 WHERE Numero=12; UPDATE C2 SET Solde=Solde+100 WHERE Numero=12; COMMIT; UPDATE C1 SET Solde=Solde100 WHERE Numero=12; ROLLBACK; UPDATE C2 SET Solde=Solde100 WHERE Numero=12; ROLLBACK; 40
41 Exercice Exercice [ solution n 24 [*] p.58] Soit l'exécution concurrente des deux transactions cidessous (on pose qu'aucune autre transaction ne s'exécute par ailleurs). NB : Le tableau fait état des temps auxquels les instructions sont soumises au serveur et non auxquels elles sont traitées. Transactions concurrentes De combien le champ TABLE1.A atil été augmenté à t6 du point de vue de la transaction 2? NB : Si vous pensez que le résultat ne peut être déterminé à cause d'une perte de mise à jour ou d'un interblocage, répondez 0. Exercice [ solution n 25 [*] p.59] Quelle valeur renvoie le code suivant sous Oracle? (notez ERREUR si le code renvoie une erreur). 1 set autocommit off 2 create table t (a integer); 3 4 insert into t values (1); 5 rollback; 6 insert into t values (2); 7 commit; 8 select sum(a) from t; 41
42 Questions de synthèse Questions de synthèse Pourquoi une transaction estelle atomique? Pourquoi une transaction estelle cohérente? Pourquoi une transaction estelle isolée? Pourquoi une transaction estelle durable? Stéphane Crozat 42
43 Questions de synthèse Qu'est ce qu'un point de contrôle? A quoi sert le journal des transactions? L algorithme de reprise UNDOREDO termineratil toutes les transactions qui étaient commencées au moment de la panne? Laquelle des propriétés ACID des transactions estelle particulièrement utile pour gérer les accès concurrents? Le verrouillage estil une solution parfaite pour la gestion de la concurrence? 43 Stéphane Crozat
44 Questions de synthèse Pourquoi peuton dire que les transactions sont des unité logique de travail, des unités d'intégrité, des unités de reprise et des unités de concurrence? Stéphane Crozat 44
45 Solutions des exercices Solutions des exercices > Solution n 1 Exercice p. 8 1 BEGIN TRANSACTION; 2 INSERT INTO test(a) VALUES ( 1 ); 3 INSERT INTO test(a) VALUES ( 2 ); 4 COMMIT; 5 SELECT * FROM test; 6 1 a > Solution n 2 Exercice p. 8 1 BEGIN TRANSACTION; 2 INSERT INTO test(a) VALUES ( 1 ); 3 INSERT INTO test(a) VALUES ( 2 ); 4 ROLLBACK; 5 SELECT * FROM test; 6 1 a > Solution n 3 Exercice p. 10 Quel est le résultat de l'exécution suivante sous Oracle? 1 SET AUTOCOMMIT OFF 2 CREATE TABLE T1 (A INTEGER); 3 4 INSERT INTO T1 VALUES (1); 5 INSERT INTO T1 VALUES (2); 6 INSERT INTO T1 VALUES (3); 7 COMMIT; 45 Stéphane Crozat
46 Solutions des exercices 8 INSERT INTO T1 (4); 9 INSERT INTO T1 (5); 10 ROLLBACK; 11 SELECT SUM(A) FROM T1 6 > Solution n 4 Exercice p. 10 Combien de lignes renvoie l'avantdernière instruction SELECT? 1 SET AUTOCOMMIT OFF 2 CREATE TABLE T1 (A INTEGER); 3 4 INSERT INTO T1 VALUES (1); 5 INSERT INTO T1 VALUES (1); 6 INSERT INTO T1 VALUES (1); 7 SELECT * FROM T1; 8 COMMIT; 3 > Solution n 5 Exercice p. 11 Combien de tables sont créées par cette série d'instruction? 3 1 SET AUTOCOMMIT OFF 2 CREATE TABLE T1 (A INTEGER); 3 CREATE TABLE T2 (A INTEGER); 4 CREATE TABLE T3 (A INTEGER); 5 INSERT INTO T1 VALUES (1); 6 INSERT INTO T2 VALUES (1); 7 INSERT INTO T3 VALUES (1); 8 ROLLBACK; Les transactions n'affectent normalement que les instructions LMD ** et non les instructions LDD **. Notons néanmoins que certains SGBD peuvent être paramétrés pour autoriser certaines instructions LDD à être affectées par les transactions (ce qui est un détournement de l'usage théorique des transactions). > Solution n 6 Exercice p BEGIN TRANSACTION; 2 INSERT INTO test(a) VALUES ( 1 ); 3 INSERT INTO test(a) VALUES ( 2 ); 4 SELECT * FROM test; a Stéphane Crozat 46
47 Solutions des exercices SIMULATION DE CRASH 2 SELECT * FROM test; 1 a 2 3 (0 rows) 4 > Solution n 7 Exercice p. 15 Pour faire un transfert sécurisé d'un point de vue transactionnel de 100 du compte bancaire C1 vers le compte bancaire C2 pour le compte numéro 12, quelle est la série d'instructions correcte (en mode autocommit off)? UPDATE C1 SET Solde=Solde100 WHERE Numero=12; ROLLBACK; UPDATE C2 SET Solde=Solde+100 WHERE Numero=12; COMMIT; UPDATE C1 SET Solde=Solde100 WHERE Numero=12 UPDATE C2 SET Solde=Solde+100 WHERE Numero=12 ROLLBACK; UPDATE C1 SET Solde=Solde100 WHERE Numero=12; COMMIT; UPDATE C2 SET Solde=Solde+100 WHERE Numero=12; COMMIT; UPDATE C1 SET Solde=Solde100 WHERE Numero=12; UPDATE C2 SET Solde=Solde+100 WHERE Numero=12; COMMIT; UPDATE C1 SET Solde=Solde100 WHERE Numero=12; ROLLBACK; UPDATE C2 SET Solde=Solde100 WHERE Numero=12; ROLLBACK; Il est nécessaire que les deux instructions UPDATE aient lieu pour que le transfert soit correct et non l'une des deux seulement, le COMMIT doit donc être placé après les deux instructions. > Solution n 8 Exercice p. 16 Explication Le script est en mode AUTOCOMMIT ce qui signifie que chaque instruction est isolée dans une transaction propre, un COMMIT implicite étant exécuté après chaque INSERT (voir ciaprès). Une défaillance système (probablement une coupure réseau) est survenue juste avant le dernier INSERT, ce qui a empêché son exécution. Les six premiers INSERT ont donc été exécutés, mais pas le septième (celui qui concerne la tête). 1 INSERT INTO Personnage (designation, prix, identite_secrete, genre) VALUES ('Superchild','12','Jordy', 'superhéros') ; 47 Stéphane Crozat
48 Solutions des exercices 2 COMMIT ; 3 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','tete','rose' ) ; 4 COMMIT ; 5 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','bras droit','bleu' ) ; 6 COMMIT ; 7 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','bras gauche','bleu' ) ; 8 COMMIT ; 9 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','torse','rouge' ) ; 10 COMMIT ; 11 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','jambe gauche','bleu' ) ; 12 COMMIT ; 13 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','jambe droite','bleu' ) ; 14 COMMIT ; > Solution n 9 Exercice p. 16 AUTOCOMMIT désactivé, BEGIN implicite Pour gérer ce problème il faut encapsuler les sept INSERT dans une unique transaction, celleci en assure alors l' atomicité : il ne sera plus possible à une partie seulement des INSERT d'être exécutée. 1 \set AUTOCOMMIT off 2 INSERT INTO Personnage (designation, prix, identite_secrete, genre) VALUES ('Superchild','12','Jordy', 'superhéros') ; 3 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','tete','rose' ) ; 4 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','bras droit','bleu' ) ; 5 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','bras gauche','bleu' ) ; 6 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','torse','rouge' ) ; 7 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','jambe gauche','bleu' ) ; 8 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','jambe droite','bleu' ) ; 9 COMMIT ; AUTOCOMMIT activé, BEGIN explicite 1 BEGIN TRANSACTION ; 2 INSERT INTO Personnage (designation, prix, identite_secrete, genre) VALUES ('Superchild','12','Jordy', 'superhéros') ; 3 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','tete','rose' ) ; 4 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','bras droit','bleu' ) ; 5 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','bras gauche','bleu' ) ; 6 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','torse','rouge' ) ; 7 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','jambe gauche','bleu' ) ; 8 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','jambe droite','bleu' ) ; 9 COMMIT TRANSACTION ; > Solution n 10 Exercice p term1 2 INSERT INTO test(a) VALUES ( 1 ); 1 term2 2 SELECT * FROM test; Stéphane Crozat 48
49 Solutions des exercices 1 a > Solution n 11 Exercice p term1 2 BEGIN TRANSACTION; 3 INSERT INTO test(a) VALUES ( 2 ); 4 SELECT * FROM test; 5 1 a term2 2 SELECT * FROM test; 1 a term1 2 COMMIT; 3 1 term2 2 SELECT * FROM test; 1 a > Solution n 12 Exercice p term1 2 BEGIN TRANSACTION; 3 UPDATE test SET a=a* 2 ; 4 1 term2 2 UPDATE test SET a=a* 3 ; 3 attente... 1 term1 2 COMMIT; 1 term2 2 SELECT * FROM test; 49 Stéphane Crozat
50 Solutions des exercices 1 a term1 2 SELECT * FROM test; 1 a > Solution n 13 Exercice p. 26 Soit l'exécution concurrente des deux transactions cidessous (on pose qu'aucune autre transaction ne s'exécute par ailleurs). NB : Le tableau fait état des temps auxquels les instructions sont soumises au serveur et non auxquels elles sont traitées. Transactions concurrentes De combien le champ TABLE1.A atil été augmenté à t6 du point de vue de la transaction 2? NB : Si vous pensez que le résultat ne peut être déterminé à cause d'une perte de mise à jour ou d'un interblocage, répondez 0. 3 La transaction 1 obtient un verrou X à t2 et exécute donc sans problème ses deux UPDATE. La transaction 2 est mise en attente avant son UPDATE à t3, car elle ne peut obtenir de verrou X déjà posé par la transaction 1. Mais dès que la transaction 1 exécute son COMMIT à t5, la transaction 1 obtient de poser un verrou X (libéré par la transaction 1) et peut donc exécuter son UPDATE. A t6 la transaction 2 voit donc que A a été augmenté de 3, puisque les trois transactions UPDATE ont été exécutées. Stéphane Crozat 50
51 Solutions des exercices Notons néanmoins que la transaction 2 n'a pas encore fait de COMMIT, et donc que potentiellement un ajout de 1 sur A pourrait être annulé plus tard par un ROLLBACK de la transaction 2. Donc une augmentation de 2 est définitivement acquise et une augmentation de 1 supplémentaire est acquise pour le moment, mais pourra être remise en cause. > Solution n 14 Exercice p. 27 Exercice De combien les entrées du film 123 onttelles été augmentées à t3 du point de vue de la transaction TR1? 1 TR1 est en cours, de son point de vue isolé les entrées ont été augmentées de 1. Exercice De combien les entrées du film 123 onttelles été augmentées à t3 du point de vue de la transaction TR2? 0 TR1 n'est pas validé à t3, les modifications ne sont pas encore visibles en dehors de la transaction. Exercice De combien les entrées du film 123 onttelles été augmentées à t5 du point de vue de la transaction TR1? 1 TR1 obtient un verrou X à t2 et exécute son UPDATE. TR2 est mise en attente avant son UPDATE à t4, car elle ne peut obtenir de verrou X déjà posé par TR1. À t5 TR1 est toujours en cours d exécution, et TR2 toujours bloquée, donc les entrées ont été augmentées de 1 pour le moment. Exercice De combien les entrées du film 123 onttelles été augmentées à t5 du point de vue de la transaction TR2? 0 TR1 est en cours d exécution, et TR2 bloquée, donc t.a n'a pas été augmenté de son point de vue. Exercice De combien les entrées du film 123 onttelles été augmentées à t7 du point de vue de la transaction TR1? 1 Le commit débloque TR2 qui exécute son update, mais celuici n'est toujours pas visible depuis TR1. Exercice 51 Stéphane Crozat
52 Solutions des exercices De combien les entrées du film 123 onttelles été augmentées à t7 du point de vue de la transaction TR2? 2 TR2 a pu exécuter son update à t6 dès que TR1 a libéré le verrou avec son commit. TR1 est validé, donc la modification est visible, et du point de vue de TR2, la modification en cours de TR2 est également visible. > Solution n 15 Exercice p. 30 Comptes bancaires 1 *** MLD *** 2 3 Pays (Numero:Entier, Intitule:Chaîne) 4 Ville (Numero:Entier, NumPays=>Pays, Intitule:Chaîne) 5 Agence (Numero:Entier, NumPays=>Ville, NumVille=>Ville, Intitule:Chaîne) 6 CompteCourant(Numero:Entier, NumPays=>Agence, NumVille=>Agence, NumAgence=>Agence, Solde: RéelPositif, Client=>Client) 7 CompteEpargne(Numero:Entier, NumPays=>Agence, NumVille=>Agence, NumAgence=>Agence, Solde: RéelPositif, Client=>Client) 8 Client(Numero, Nom:Chaîne, Prenom:Chaîne, Civilite:{M Mme Melle}) 9 10 ** Contraintes supplémentaires : 11 CompteCourant.Client est une clé 12 CompteEpargne.Client est une clé 13 Tout enregistrement de Client est référencé par un enregistrement de CompteCourant Remarque L'ajout des clés étrangères dans la clé primaire en cascade (pour ville, agence et compte) est directement lié au fait que les entités Ville, Agence et Compte sont des entités faibles (ou composition en UML), respectivement par rapport à Pays, Ville et Agence. L'intérêt est simple, le Numéro d'une ville étant relatif à un pays (par définition de l'entité faible), il faut pour identifier (connaître) une ville son numéro et celui de son pays. Chaque pays compte bien une seule ville n 1, Stéphane Crozat 52
53 Solutions des exercices mais il existe plusieurs villes n 1 si l'on considère tous les pays. Idem pour Agence et Compte. La seule alternative est de mettre des clés artificielles non relatives, mais ce n'est pas toujours pertinent. On notera que les comptes bancaires sont effectivement composés d'un code agence + un code ville + un code pays, etc. 1 *** Code SQL *** 2 3 CREATE TABLE TPays ( 4 pknumero INTEGER, 5 aintitule VARCHAR(20), 6 PRIMARY KEY (pknumero) 7 ); 8 9 CREATE TABLE TVille ( 10 pknumero INTEGER, 11 pfknumpays INTEGER, 12 aintitule VARCHAR(20), 13 PRIMARY KEY (pknumero, pfknumpays), 14 FOREIGN KEY (pfknumpays) REFERENCES TPays(pkNumero) 15 ); CREATE TABLE TAgence ( 18 pknumero INTEGER, 19 pfknumville INTEGER, 20 pfknumpays INTEGER, 21 aintitule VARCHAR(20), 22 PRIMARY KEY (pknumero, pfknumville, pfknumpays), 23 FOREIGN KEY (pfknumville, pfknumpays) REFERENCES TVille(pkNumero, pfknumpays) 24 ); CREATE TABLE TClient ( 27 pknumero INTEGER, 28 anom VARCHAR(20) NOT NULL, 29 aprenom VARCHAR (20), 30 acivilite CHAR(5) NOT NULL, 31 PRIMARY KEY (pknumero), 32 CHECK (acivilite='m' OR acivilite='mme' OR acivilite='melle') 33 ); CREATE TABLE TCompteCourant ( 36 pknumero INTEGER, 37 pfknumagence INTEGER, 38 pfknumville INTEGER, 39 pfknumpays INTEGER, 40 asolde INTEGER NOT NULL, 41 fkclient INTEGER REFERENCES TClient(pkNumero) UNIQUE NOT NULL, 42 PRIMARY KEY (pknumero, pfknumagence, pfknumville, pfknumpays), 43 FOREIGN KEY (pfknumagence, pfknumville, pfknumpays) REFERENCES TAgence(pkNumero, pfknumville, pfknumpays), 44 CHECK (asolde >= 0) 45 ); CREATE TABLE TCompteEpargne ( 48 pknumero INTEGER, 49 pfknumagence INTEGER, 50 pfknumville INTEGER, 53 Stéphane Crozat
54 Solutions des exercices 51 pfknumpays INTEGER, 52 asolde INTEGER NOT NULL, 53 fkclient INTEGER REFERENCES TClient(pkNumero) UNIQUE NOT NULL, 54 PRIMARY KEY (pknumero, pfknumagence, pfknumville, pfknumpays), 55 FOREIGN KEY (pfknumagence, pfknumville, pfknumpays) REFERENCES TAgence(pkNumero, pfknumville, pfknumpays), 56 CHECK (asolde >= 0) 57 ); > Solution n 16 Exercice p INSERT INTO TClient VALUES ( 1, 'Dupont', 'Robert', 'M' ); 2 3 Il faut également créer un compte courant car tout client doit en possèder un. 4 5 INSERT INTO TPays VALUES ( 1, 'France' ); 6 7 INSERT INTO TVille VALUES ( 1, 1, 'Compiègne' ); 8 9 INSERT INTO TAgence VALUES ( 1, 1, 1, 'Centre Ville' ); INSERT INTO TCompteCourant VALUES ( 1, 1, 1, 1, 0, 1 ); INSERT INTO TClient VALUES ( 2, 'Durand', 'Alphonse', 'M' ); INSERT INTO TcompteCourant VALUES ( 2, 1, 1, 1, 0, 2 ); INSERT INTO TcompteEpargne VALUES ( 1, 1, 1, 1, 0, 2 ); UPDATE TcompteEpargne 20 SET asolde=asolde WHERE fkclient= 2 ; 22 NB : On peut utiliser le champs fkclient qui est une clé UPDATE TcompteCourant 25 SET asolde=asolde WHERE fkclient= 1 ; UPDATE TcompteCourant 29 SET asolde=asolde WHERE fkclient= 1 ; UPDATE TcompteEpargne 33 SET asolde=asolde WHERE fkclient= 2 ; UPDATE TcompteCourant 37 SET asolde=asolde WHERE fkclient= 2 ; > Solution n 17 Exercice p. 31 Les problèmes sont liés au fait que certaines opérations ont eu lieu et d'autres pas. Stéphane Crozat 54
55 Solutions des exercices La valeur 100 pour le solde de tous comptes du client 1, signifie que seul l'un des deux chèques a été enregistré. La valeur 500 pour le solde de tous comptes du client 2, signifie que, lors du transfert, le compte épargne a été débité, mais que le compte courant n'a pas été crédité. > Solution n 18 Exercice p BEGIN TRANSACTION; 2 INSERT INTO TClient VALUES ( 1, 'Dupont', 'Robert', 'M' ); 3 INSERT INTO TPays VALUES ( 1, 'France' ); 4 INSERT INTO TVille VALUES ( 1, 1, 'Compiègne' ); 5 INSERT INTO TAgence VALUES ( 1, 1, 1, 'Centre Ville' ); 6 INSERT INTO TCompteCourant VALUES ( 1, 1, 1, 1, 0, 1 ); 7 COMMIT; 8 Les cinq opérations précédentes doivent toutes être exécutées, ou bien aucune, car en vertu des cardinalités du MCD : 9 il ne peut exister de client sans compte courant, 10 il ne peut exister de pays sans ville, 11 il ne peut exister de ville sans agence, 12 il ne peut exister d'agence sans compte. 13 La transaction assure l'unité logique de traitement de ces opérations BEGIN TRANSACTION; 16 INSERT INTO TClient VALUES ( 2, 'Durand', 'Alphonse', 'M' ); 17 INSERT INTO TcompteCourant VALUES ( 2, 1, 1, 1, 0, 2 ); 18 INSERT INTO TcompteEpargne VALUES ( 1, 1, 1, 1, 0, 2 ); 19 UPDATE TcompteEpargne 20 SET asolde=asolde WHERE fkclient= 2 ; 22 COMMIT; 23 Les quatre opérations précédentes correspondent à l'initialisation du client 2, il est donc conseillé qu'elles s'effectuent également de façon unitaire. 24 Dans tous les cas les deux premières instructions DOIVENT être effectuées dans la même transaction, car il ne peut exister de client sans compte courant et inversement BEGIN TRANSACTION; 27 UPDATE TcompteCourant 28 SET asolde=asolde WHERE fkclient= 1 ; 30 UPDATE TcompteCourant 31 SET asolde=asolde WHERE fkclient= 1 ; 33 COMMIT; 34 Les deux opérations précédentes peuvent être regroupées dans une même transaction, puisque l'on s'attend bien à un crédit de BEGIN TRANSACTION; 37 UPDATE TcompteEpargne 38 SET asolde=asolde WHERE fkclient= 2 ; 40 UPDATE TcompteCourant 41 SET asolde=asolde WHERE fkclient= 2 ; 43 COMMIT; 44 Le transfert est le cas typique où la transaction est obligatoire, en effet, effectuer le crédit sans le débit ou inversement serait une erreur vis à vis de la cohérence de la BD. 55 Stéphane Crozat
56 Solutions des exercices > Solution n 19 Exercice p. 33 Exercice De combien les entrées du film 123 onttelles été augmentées à t3 du point de vue de la transaction TR1? 1 TR1 est en cours, de son point de vue isolé les entrées ont été augmentées de 1. Exercice De combien les entrées du film 123 onttelles été augmentées à t3 du point de vue de la transaction TR2? 0 TR1 n'est pas validé à t3, les modifications ne sont pas encore visibles en dehors de la transaction. Exercice De combien les entrées du film 123 onttelles été augmentées à t5 du point de vue de la transaction TR1? 1 TR1 obtient un verrou X à t2 et exécute son UPDATE. TR2 est mise en attente avant son UPDATE à t4, car elle ne peut obtenir de verrou X déjà posé par TR1. À t5 TR1 est toujours en cours d exécution, et TR2 toujours bloquée, donc les entrées ont été augmentées de 1 pour le moment. Exercice De combien les entrées du film 123 onttelles été augmentées à t5 du point de vue de la transaction TR2? 0 TR1 est en cours d exécution, et TR2 bloquée, donc t.a n'a pas été augmenté de son point de vue. Exercice De combien les entrées du film 123 onttelles été augmentées à t7 du point de vue de la transaction TR1? 1 Le commit débloque TR2 qui exécute son update, mais celuici n'est toujours pas visible depuis TR1. Exercice De combien les entrées du film 123 onttelles été augmentées à t7 du point de vue de la transaction TR2? 2 Stéphane Crozat 56
57 Solutions des exercices TR2 a pu exécuter son update à t6 dès que TR1 a libéré le verrou avec son commit. TR1 est validé, donc la modification est visible, et du point de vue de TR2, la modification en cours de TR2 est également visible. > Solution n 20 Exercice p. 39 Quel est le résultat de l'exécution suivante sous Oracle? 1 SET AUTOCOMMIT OFF 2 CREATE TABLE T1 (A INTEGER); 3 4 INSERT INTO T1 VALUES (1); 5 INSERT INTO T1 VALUES (2); 6 INSERT INTO T1 VALUES (3); 7 COMMIT; 8 INSERT INTO T1 (4); 9 INSERT INTO T1 (5); 10 ROLLBACK; 11 SELECT SUM(A) FROM T1 6 > Solution n 21 Exercice p. 39 Combien de lignes renvoie l'avantdernière instruction SELECT? 1 SET AUTOCOMMIT OFF 2 CREATE TABLE T1 (A INTEGER); 3 4 INSERT INTO T1 VALUES (1); 5 INSERT INTO T1 VALUES (1); 6 INSERT INTO T1 VALUES (1); 7 SELECT * FROM T1; 8 COMMIT; 3 > Solution n 22 Exercice p. 39 Combien de tables sont créées par cette série d'instruction? 3 1 SET AUTOCOMMIT OFF 2 CREATE TABLE T1 (A INTEGER); 3 CREATE TABLE T2 (A INTEGER); 4 CREATE TABLE T3 (A INTEGER); 5 INSERT INTO T1 VALUES (1); 6 INSERT INTO T2 VALUES (1); 7 INSERT INTO T3 VALUES (1); 8 ROLLBACK; Les transactions n'affectent normalement que les instructions LMD ** et non les instructions LDD **. 57 Stéphane Crozat
58 Solutions des exercices Notons néanmoins que certains SGBD peuvent être paramétrés pour autoriser certaines instructions LDD à être affectées par les transactions (ce qui est un détournement de l'usage théorique des transactions). > Solution n 23 Exercice p. 40 Pour faire un transfert sécurisé d'un point de vue transactionnel de 100 du compte bancaire C1 vers le compte bancaire C2 pour le compte numéro 12, quelle est la série d'instructions correcte (en mode autocommit off)? UPDATE C1 SET Solde=Solde100 WHERE Numero=12; ROLLBACK; UPDATE C2 SET Solde=Solde+100 WHERE Numero=12; COMMIT; UPDATE C1 SET Solde=Solde100 WHERE Numero=12 UPDATE C2 SET Solde=Solde+100 WHERE Numero=12 ROLLBACK; UPDATE C1 SET Solde=Solde100 WHERE Numero=12; COMMIT; UPDATE C2 SET Solde=Solde+100 WHERE Numero=12; COMMIT; UPDATE C1 SET Solde=Solde100 WHERE Numero=12; UPDATE C2 SET Solde=Solde+100 WHERE Numero=12; COMMIT; UPDATE C1 SET Solde=Solde100 WHERE Numero=12; ROLLBACK; UPDATE C2 SET Solde=Solde100 WHERE Numero=12; ROLLBACK; Il est nécessaire que les deux instructions UPDATE aient lieu pour que le transfert soit correct et non l'une des deux seulement, le COMMIT doit donc être placé après les deux instructions. > Solution n 24 Exercice p. 41 Soit l'exécution concurrente des deux transactions cidessous (on pose qu'aucune autre transaction ne s'exécute par ailleurs). NB : Le tableau fait état des temps auxquels les instructions sont soumises au serveur et non auxquels elles sont traitées. Stéphane Crozat 58
59 Solutions des exercices Transactions concurrentes De combien le champ TABLE1.A atil été augmenté à t6 du point de vue de la transaction 2? NB : Si vous pensez que le résultat ne peut être déterminé à cause d'une perte de mise à jour ou d'un interblocage, répondez 0. 3 La transaction 1 obtient un verrou X à t2 et exécute donc sans problème ses deux UPDATE. La transaction 2 est mise en attente avant son UPDATE à t3, car elle ne peut obtenir de verrou X déjà posé par la transaction 1. Mais dès que la transaction 1 exécute son COMMIT à t5, la transaction 1 obtient de poser un verrou X (libéré par la transaction 1) et peut donc exécuter son UPDATE. A t6 la transaction 2 voit donc que A a été augmenté de 3, puisque les trois transactions UPDATE ont été exécutées. Notons néanmoins que la transaction 2 n'a pas encore fait de COMMIT, et donc que potentiellement un ajout de 1 sur A pourrait être annulé plus tard par un ROLLBACK de la transaction 2. Donc une augmentation de 2 est définitivement acquise et une augmentation de 1 supplémentaire est acquise pour le moment, mais pourra être remise en cause. > Solution n 25 Exercice p. 41 Quelle valeur renvoie le code suivant sous Oracle? (notez ERREUR si le code renvoie une erreur). 1 set autocommit off 2 create table t (a integer); 3 4 insert into t values (1); 5 rollback; 6 insert into t values (2); 7 commit; 8 select sum(a) from t; 2 59 Stéphane Crozat
60 Signification des abréviations Abréviations ACID : Atomicity, Consistency, Isolation, Durability BD : Base de Données FIFO : First In First Out LDD : Langage de Définition de Données LMD : Langage de Manipulation de Données SGBD : Système de Gestion de Bases de Données SQL : Structured Query Language Stéphane Crozat 60
61 Bibliographie Bibliographie Delmal Pierre. SQL2 SQL3, applications à Oracle. De Boeck Université, MataToledo Ramon A., Cushman Pauline K.. Programmation SQL. Ediscience, Stéphane Crozat
62 Webographie Webographie CesbronLavau Henry, Les transactions, htm, Defude Bruno, Tutoriel de bases de données relationnelles de l'int Evry, fr/cours/bd/, consulté en Stéphane Crozat 62
63 Index Index Acces p. 9, 14 Attente p. 28 Concurrence p. 5, 18, 24 Durabilité p. 7 Fiabilité p. 14 Lecture p. 21 Perte p. 18 ROLLBACK p. 7, 9, 11, 22 Transfert p. 14 Validation p. 6 ACID p. 6 Cohérence p. 5, 5, 6, 18 Défaillance p. 5 Ecriture p. 21 Interblocage p. 22, 24 Oracle p. 8, 8, 14 PL/SQL p. 8, 14 SQL p. 7, 8, 9, 14 UNDOREDO p. 16 VBA p. 9, 14 Annulation p. 6 COMMIT p. 7, 9, 12 Déverrouillage p. 22 Exécution p. 5 Journal p. 7, 12, 12 Panne p. 7, 11, 12, 12, 16 Point de contrôle p. 12, 12, 16 Transaction p. 6, 8, 8, 9, 14 Unité p. 5, 6, 11, 12 Verrou p. 21, 22, 22, 24, Stéphane Crozat
Cours Bases de données 2ème année IUT
Cours Bases de données 2ème année IUT Cours 12 : Concurrence d accès Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Accès concurrents Définitions Verrous Collisions Niveaux de cohérence Blocage
Bases de données et sites WEB Licence d informatique LI345
Bases de données et sites WEB Licence d informatique LI345 Anne Doucet [email protected] http://www-bd.lip6.fr/ens/li345-2013/index.php/lescours 1 Contenu Transactions en pratique Modèle relationnel-objet
Gestion des transactions et accès concurrents dans les bases de données relationnelles
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.
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
1/46 2/46 Pourquoi? Anne-Cécile Caron Master MAGE - SGBD 1er trimestre 2014-2015 Le concept de transaction va permettre de définir des processus garantissant que l état de la base est toujours cohérent
Bases de données avancées Concurrence d'accès et reprise
Bases de données avancées Concurrence d'accès et reprise Dan VODISLAV Université de Cergy-Pontoise Master Informatique M1 Cours BDA Plan La notion de transaction Les problèmes de la concurrence Problèmes
Bases de Données relationnelles et leurs systèmes de Gestion
III.1- Définition de schémas Bases de Données relationnelles et leurs systèmes de Gestion RAPPELS Contraintes d intégrité sous Oracle Notion de vue Typage des attributs Contrainte d intégrité Intra-relation
Implémentation des SGBD
Implémentation des SGBD Structure générale des applications Application utilisateur accédant à des données d'une base Les programmes sous-jacents contiennent du code SQL Exécution : pendant l'exécution
A QUOI SERVENT LES BASES DE DONNÉES?
BASE DE DONNÉES OBJET Virginie Sans [email protected] A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès
AGRÉGATION «ÉCONOMIE ET GESTION»
AGRÉGATION «ÉCONOMIE ET GESTION» CONCOURS INTERNE SESSION 2002 ÉPREUVE SUR LES TECHNIQUES DE GESTION ET COMPORTANT DES ASPECTS PÉDAGOGIQUES DOMAINE : économie et gestion informatique Durée de préparation
Introduction aux bases de données Cours 1 : Généralités sur les bases de données
Cours 1 : Généralités sur les bases de données ESIL Université de la méditerranée [email protected] http://odile.papini.perso.esil.univmed.fr/sources/bdmat.html Plan du cours 1 1 Qu est ce qu
ISC21-1 --- Système d Information Architecture et Administration d un SGBD Compléments SQL
ISC21-1 --- Système d Information Architecture et Administration d un SGBD Compléments SQL Jean-Marie Pécatte [email protected] 16 novembre 2006 ISIS - Jean-Marie PECATTE 1 Valeur de clé
Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées
Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées ANNEE 2014 / 2015 Désignation de l enseignement : Bases de données Nom du document : TP SQL sous PostgreSQL Rédacteur :
Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes
Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition
Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL
Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions
TP3 : Creation de tables 1 seance
Universite de Versailles IUT de Velizy - Algorithmique 2005/2006 TP3 : Creation de tables 1 seance Objectif : Creation et modication de tables dans une base de donnees. Avant de commencer ce TP, terminer
SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)
SGBDR Systèmes de Gestion de Bases de Données (Relationnelles) Plan Approches Les tâches du SGBD Les transactions Approche 1 Systèmes traditionnels basés sur des fichiers Application 1 Gestion clients
Application web de gestion de comptes en banques
Application web de gestion de comptes en banques Objectif Réaliser une application Web permettant à un client de gérer ses comptes en banque Diagramme de cas d'utilisation 1 Les cas d'utilisation Connexion
A QUOI SERVENT LES BASES DE DONNÉES?
BASE DE DONNÉES OBJET Virginie Sans [email protected] A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès
TP Contraintes - Triggers
TP Contraintes - Triggers 1. Préambule Oracle est accessible sur le serveur Venus et vous êtes autorisés à accéder à une instance licence. Vous utiliserez l interface d accés SQL*Plus qui permet l exécution
ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010
ORACLE 10G DISTRIBUTION ET REPLICATION Distribution de données avec Oracle G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 1 Plan 12. Distribution de données 12.1 Génération des architectures C/S et Oracle
Encryptions, compression et partitionnement des données
Encryptions, compression et partitionnement des données Version 1.0 Grégory CASANOVA 2 Compression, encryption et partitionnement des données Sommaire 1 Introduction... 3 2 Encryption transparente des
CREATION WEB DYNAMIQUE
CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de
COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2
SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES
Intégrité des données
. Contraintes d intégrité : Définition et objectif Intégrité des données Définition des contraintes Vérification des contraintes Contrainte d'intégrité : propriété sémantique que doivent respecter les
Cours de Systèmes d Exploitation
Licence d informatique Synchronisation et Communication inter-processus Hafid Bourzoufi Université de Valenciennes - ISTV Introduction Les processus concurrents s exécutant dans le système d exploitation
Les bases de données
Les bases de données Introduction aux fonctions de tableur et logiciels ou langages spécialisés (MS-Access, Base, SQL ) Yves Roggeman Boulevard du Triomphe CP 212 B-1050 Bruxelles (Belgium) Idée intuitive
Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/
Administration des bases de données Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données II Objets avancés dans les bases de données OBJECTIFS 2.1. NOTIONS 2.1.1.
1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5
1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases
Bases de données Cours 1 : Généralités sur les bases de données
Cours 1 : Généralités sur les bases de données POLYTECH Université d Aix-Marseille [email protected] http://odile.papini.perso.esil.univmed.fr/sources/bd.html Plan du cours 1 1 Qu est ce qu une
Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle
Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle Ce projet comporte trois parties sur les thèmes suivants : création de base de donnée, requêtes SQL, mise en œuvre
Notes de cours : bases de données distribuées et repliquées
Notes de cours : bases de données distribuées et repliquées Loïc Paulevé, Nassim Hadj-Rabia (2009), Pierre Levasseur (2008) Licence professionnelle SIL de Nantes, 2009, version 1 Ces notes ont été élaborées
Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.
Les Triggers SQL Didier DONSEZ Université de Valenciennes Institut des Sciences et Techniques de Valenciennes [email protected] 1 Sommaire Motivations Trigger Ordre Trigger Ligne Condition Trigger
Structure fonctionnelle d un SGBD
Fichiers et Disques Structure fonctionnelle d un SGBD Requetes Optimiseur de requetes Operateurs relationnels Methodes d acces Gestion de tampon Gestion de disque BD 1 Fichiers et Disques Lecture : Transfert
Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS
Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS 1. Introduction Nous allons aborder la notion de surcouche procédurale au sein des SGBDS relationnels tels que Oracle (PLSQL)
PROJET 1 : BASE DE DONNÉES REPARTIES
PROJET 1 : BASE DE DONNÉES REPARTIES GESTION D UNE BANQUE Elèves : David Bréchet Frédéric Jacot Charles Secrétan DONNÉES DU PROJET SSC - Bases de Données II Laboratoire de Bases de Données BD réparties
Principes de la conception des bases de données
BDD Principes de la conception des bases de données stph.crzt.fr/bdd STÉPHANE CROZAT Paternité - Partage des Conditions Initiales à l'identique : http://creativecommons.org/licenses/by-sa/2.0/fr/ 10 juillet
Cours Bases de données 2ème année IUT
Cours Bases de données 2ème année IUT Cours Bilan : Des vues à PL/SQL corrigé Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Cas exemple 2 Les tables... 3 Vues et index 4 Privilèges 5 Fonctions
TP Bases de données réparties
page 1 TP Bases de données réparties requêtes réparties Version corrigée Auteur : Hubert Naacke, révision 5 mars 2003 Mots-clés: bases de données réparties, fragmentation, schéma de placement, lien, jointure
Bases de Données. Plan
Université Mohammed V- Agdal Ecole Mohammadia d'ingénieurs Rabat Bases de Données Mr N.EL FADDOULI 2014-2015 Plan Généralités: Définition de Bases de Données Le modèle relationnel Algèbre relationnelle
Introduction aux SGBDR
1 Introduction aux SGBDR Pour optimiser une base Oracle, il est important d avoir une idée de la manière dont elle fonctionne. La connaissance des éléments sous-jacents à son fonctionnement permet de mieux
Bases de données et sites WEB
Bases de données et sites WEB Cours2 : Sécurité et contrôles d accès Anne Doucet 1 Authentification Autorisation Privilèges Rôles Profils Limitations de ressources Plan Audit Contrôle d accès via les vues
Chapitre 10. Architectures des systèmes de gestion de bases de données
Chapitre 10 Architectures des systèmes de gestion de bases de données Introduction Les technologies des dernières années ont amené la notion d environnement distribué (dispersions des données). Pour reliér
Langage SQL : créer et interroger une base
Langage SQL : créer et interroger une base Dans ce chapitre, nous revenons sur les principales requêtes de création de table et d accès aux données. Nous verrons aussi quelques fonctions d agrégation (MAX,
Bases de données relationnelles
Bases de données relationnelles Système de Gestion de Bases de Données Une base de données est un ensemble de données mémorisé par un ordinateur, organisé selon un modèle et accessible à de nombreuses
Le langage SQL pour Oracle - partie 1 : SQL comme LDD
Le langage SQL pour Oracle - partie 1 : SQL comme LDD 1 SQL : Introduction SQL : Structured Query Langage langage de gestion de bases de donn ees relationnelles pour Définir les données (LDD) interroger
Mysql. Les requêtes préparées Prepared statements
Mysql Les requêtes préparées Prepared statements Introduction Les prepared statements côté serveur sont une des nouvelles fonctionnalités les plus intéressantes de MySQL 4.1 (récemment sorti en production
Bases de données avancées
Bases de données avancées Jean-Yves Antoine LI - Université François Rabelais de Tours [email protected] UFR Sciences et Techniques IUP SIR Blois Master 1 Bases de Données avancées IUP Blois,
Cours Base de données relationnelles. M. Boughanem, IUP STRI
Cours Base de données relationnelles 1 Plan 1. Notions de base 2. Modèle relationnel 3. SQL 2 Notions de base (1) Définition intuitive : une base de données est un ensemble d informations, (fichiers),
Notion de base de données
Notion de base de données Collection de données opérationnelles enregistrées sur un support adressable et utilisées par les systèmes et les applications Les données doivent être structurées indépendamment
Cours de Base de Données Cours n.12
Cours de Base de Données Cours n.12 Gestion des transactions : contrôle de concurrence Elisabetta De Maria - http://www.i3s.unice.fr/ edemaria/ UFR Sciences et Laboratoire I3S, CNRS 2013-2014 Université
COMPOSANTS DE L ARCHITECTURE D UN SGBD. Chapitre 1
1 COMPOSANTS DE L ARCHITECTURE D UN SGBD Chapitre 1 Généralité 2 Les composants principaux de l architecture d un SGBD Sont: Les processus Les structures mémoires Les fichiers P1 P2 Pn SGA Fichiers Oracle
Intégrité sémantique dans les bases de données relationnelles
Intégrité sémantique dans les bases de données relationnelles 1 - Intégrité sémantique Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU Ecole Polytechnique Universitaire de Marseille Fev. 2013
Olivier Mondet http://unidentified-one.net
T-GSI Ch.4 Le Langage SQL LDD, LCD Cet exercice guidé reprend le plan suivis lors de l intervention de formation faite pour l académie de Versailles. L objectif principal visait en la présentation du langage
Raja Bases de données distribuées A Lire - Tutoriel
Université des Sciences de Montpellier Master 2 Semestre 1 Unité d'enseignement FMIN306 Raja Bases de données distribuées A Lire - Tutoriel 26 janvier 2011 Audrey Novak Romain Maneschi Jonathan Fhal Aloys
SYSTÈME DE GESTION DE FICHIERS
SYSTÈME DE GESTION DE FICHIERS - DISQUE 1 Les couches logiciels réponse requête Requêtes E/S Système E/S Pilote E/S Interruptions utilisateur traitement S.E. commandes S.E. S.E. matériel Contrôleur E/S
Module BDR Master d Informatique (SAR)
Module BDR Master d Informatique (SAR) Cours 9- Transactions réparties Anne Doucet [email protected] Transactions réparties Gestion de transactions Transactions dans un système réparti Protocoles de
I4 : Bases de Données
I4 : Bases de Données Passage de UML au modèle relationnel Georges LOUIS Département Réseaux et Télécommunications Université de La Rochelle Module I4 2008-2009 1 G.Louis Sommaire 1 Des classes aux tables
ORACLE TUNING PACK 11G
ORACLE TUNING PACK 11G PRINCIPALES CARACTÉRISTIQUES : Conseiller d'optimisation SQL (SQL Tuning Advisor) Mode automatique du conseiller d'optimisation SQL Profils SQL Conseiller d'accès SQL (SQL Access
Introduction au Système de Gestion de Base de Données et aux Base de Données
Introduction au Système de Gestion de Base de Données et aux Base de Données Formation «Gestion des données scientifiques : stockage et consultation en utilisant des bases de données» 24 au 27 /06/08 Dernière
SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE
SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE C.Crochepeyre MPS_SGF 2000-20001 Diapason 1 Les couches logiciels réponse SGF requête matériel matériel Requêtes E/S Système E/S Pilote E/S Interruptions Contrôleur
Le langage SQL Rappels
Le langage SQL Rappels Description du thème : Présentation des principales notions nécessaires pour réaliser des requêtes SQL Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs,
Chapitre 5 : Les procédures stockées PL/SQL
I. Introduction Une procédure ou une fonction stockée est un bloc PL/SQL nommé pouvant accepter des paramètres et être appelée. Généralement, on utilise une fonction pour calculer une valeur. Les procédures
3. La SGA ou System global Area
1/11 L'instance Oracle Oracle est une base de données composée de 3 parties différentes : L'instance Les fichiers de données Les fichiers de données facultatifs (fichier d'initialisation, fichier de mots
Tutoriel - flux de facturation
1 of 12 17.01.2007 01:41 Tutoriel - flux de facturation Le schéma ci-dessous illustre le flux de facturation classique : Lors de la création d'une facture, elle possède l'état de brouillon, ce qui veut
Vincent Augusto 2010-2011
le des Systèmes Vincent Augusto École Nationale Supérieure des Mines de Saint-Étienne 2010-2011 Un 1/73 le des Un 2/73 1 2 3 4 le 5 6 7 8 Un le des Un 3/73 Contenu du cours : Techniques pour l analyse
Introduction aux Bases de Données
Introduction aux Bases de Données I. Bases de données I. Bases de données Les besoins Qu est ce qu un SGBD, une BD Architecture d un SGBD Cycle de vie Plan du cours Exemples classiques d'applications BD
1. Base de données SQLite
Dans ce TP, nous allons voir comment créer et utiliser une base de données SQL locale pour stocker les informations. La semaine prochaine, ça sera avec un WebService. On repart de l application AvosAvis
Présentation du module Base de données spatio-temporelles
Présentation du module Base de données spatio-temporelles S. Lèbre [email protected] Université de Strasbourg, département d informatique. Partie 1 : Notion de bases de données (12,5h ) Enjeux et principes
Gestion des utilisateurs et de leurs droits
Gestion des utilisateurs et de leurs droits Chap. 12, page 323 à 360 Lors de la création d'un utilisateur vous devez indiquer son nom, ses attributs, son profil, la méthode d'authentification (par le SE
CATALOGUE FORMATIONS 2015. DOMAINE Bases de données
DOMAINE Bases de données Version 1.0 - Octobre 2014 1, 2, 3 juin 2015 1, 2, 3 octobre 2015 CATALOGUE Analyse et conception d une base de données Elaboration de fiches de collecte de données Techniques
14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.
Gaëlle PERRIN SID2 Grenoble Le 10/04/2014 Base de Données (BD) : une grande quantité de données, centralisées ou non, servant pour les besoins d'une ou plusieurs applications, interrogeables et modifiables
Année Universitaire 2009/2010 Session 2 de Printemps
Année Universitaire 2009/2010 Session 2 de Printemps DISVE Licence PARCOURS : CSB4 & CSB6 UE : INF 159, Bases de données Épreuve : INF 159 EX Date : Mardi 22 juin 2010 Heure : 8 heures 30 Durée : 1 heure
ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;
RÈGLES A SUIVRE POUR OPTIMISER LES REQUÊTES SQL Le but de ce rapport est d énumérer quelques règles pratiques à appliquer dans l élaboration des requêtes. Il permettra de comprendre pourquoi certaines
Rappel sur les bases de données
Rappel sur les bases de données 1) Généralités 1.1 Base de données et système de gestion de base de donnés: définitions Une base de données est un ensemble de données stockées de manière structurée permettant
Chapitre 4 : Exclusion mutuelle
Chapitre 4 : Exclusion mutuelle Pierre Gançarski Juillet 2004 Ce support de cours comporte un certain nombre d erreurs : je décline toute responsabilité quant à leurs conséquences sur le déroulement des
Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43
Techniques de stockage Techniques de stockage, P. Rigaux p.1/43 Techniques de stockage Contenu de ce cours : 1. Stockage de données. Supports, fonctionnement d un disque, technologie RAID 2. Organisation
4. Utilisation d un SGBD : le langage SQL. 5. Normalisation
Base de données S. Lèbre [email protected] Université de Strasbourg, département d informatique. Présentation du module Contenu général Notion de bases de données Fondements / Conception Utilisation :
Cours Bases de données
Informations sur le cours Cours Bases de données 9 (10) séances de 3h Polycopié (Cours + TD/TP) 3 année (MISI) Antoine Cornuéjols www.lri.fr/~antoine [email protected] Transparents Disponibles
Initiation aux bases de données (SGBD) Walter RUDAMETKIN
Initiation aux bases de données (SGBD) Walter RUDAMETKIN Bureau F011 [email protected] Moi Je suis étranger J'ai un accent Je me trompe beaucoup en français (et en info, et en math, et...)
Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008
Introduction Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008 Forms 10g permet l utilisation du JAVA côté client et côté application
Compte-rendu de projet de Système de gestion de base de données
Compte-rendu de projet de Système de gestion de base de données Création et utilisation d'un index de jointure LAMBERT VELLER Sylvain M1 STIC Université de Bourgogne 2010-2011 Reponsable : Mr Thierry Grison
Auto-évaluation Oracle: cours de base
Auto-évaluation Oracle: cours de base Document: F0475Test.fm 14/01/2008 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION ORACLE: COURS DE
Hibernate vs. le Cloud Computing
Hibernate vs. le Cloud Computing Qui suis-je? Julien Dubois Co-auteur de «Spring par la pratique» Ancien de SpringSource Directeur du consulting chez Ippon Technologies Suivez-moi sur Twitter : @juliendubois
PHP 5. La base de données MySql. A. Belaïd 1
PHP 5 La base de données MySql A. Belaïd 1 Base de données C est quoi une base de données? Une base de données contient une ou plusieurs tables, chaque table ayant un ou plusieurs enregistrements Exemple
Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO2 2006-2007 S2-IO2 Bases de données: Jointures, Transactions
Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO2 2006-2007 S2-IO2 Bases de données: Jointures, Cours Internet et Outils: [1/12] Intro, Internet, Web, XHTML (2H) [2/12] XHTML(2H) [3/12]
Procédures Stockées WAVESOFT... 12 ws_sp_getidtable... 12. Exemple :... 12. ws_sp_getnextsouche... 12. Exemple :... 12
Table des matières Les Triggers... 2 Syntaxe... 2 Explications... 2 Les évènements déclencheurs des triggers... 3 Les modes de comportements des triggers... 4 Les pseudo tables... 5 Exemple... 6 Les procédures
Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers
Programme détaillé Objectifs de la formation Les systèmes de gestion de bases de données prennent aujourd'hui une importance considérable au regard des données qu'ils hébergent. Véritable épine dorsale
Devoir Data WareHouse
Université Paris XIII Institut Galilée Master 2-EID BENSI Ahmed CHARIFOU Evelyne Devoir Data WareHouse Optimisation, Transformation et Mise à jour utilisées par un ETL Mr R. NEFOUSSI Année 2007-2008 FICHE
Le langage SQL (première partie) c Olivier Caron
Le langage SQL (première partie) 1 Plan Le S.G.B.D. postgres Le langage SQL Langage de manipulation de données Langage de requêtes 2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley)
UNION INTERCEPT SELECT WHERE JOINT FROM ACID
STOCKAGE TRANSACTION, SÉRIALISABILITÉ, NIVEAUX D'ISOLATION 1 BASE RELATIONNELLE Un serveur de données relationnel : Rend compte de la «réalité» sous forme de table Met en relation la perception logique
Java DataBaseConnectivity
Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage
2 Grad Info Soir Langage C++ Juin 2007. Projet BANQUE
2 Grad Info Soir Langage C++ Juin 2007 Projet BANQUE 1. Explications L'examen comprend un projet à réaliser à domicile et à documenter : - structure des données, - objets utilisés, - relations de dépendance
Chapitre 1 : Introduction aux bases de données
Chapitre 1 : Introduction aux bases de données Les Bases de Données occupent aujourd'hui une place de plus en plus importante dans les systèmes informatiques. Les Systèmes de Gestion de Bases de Données
Les Utilisateurs dans SharePoint
Les Utilisateurs dans SharePoint La gestion des utilisateurs dans SharePoint SharePoint dont le cœur est l'outil collaboratif, Windows SharePoint Services. Chaque utilisateur (ou collaborateur) peut créer
Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)
Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL) Un modèle de données définit un mode de représentation de l information selon trois composantes : 1. Des structures de données. 2. Des contraintes qui permettent
Bases de données avancées Introduction
Bases de données avancées Introduction Dan VODISLAV Université de Cergy-Pontoise Master Informatique M1 Cours BDA Plan Objectifs et contenu du cours Rappels BD relationnelles Bibliographie Cours BDA (UCP/M1)
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)
Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07
Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications
Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications P.-A. Sunier, HEG-Arc Neuchâtel avec le concours de J. Greub [email protected] http://lgl.isnetne.ch/
