Conception de bases de données III NF17 Cours (Approfondissements) Stéphane Crozat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique : http://creativecommons.org/licenses/by-nc-sa/4.0/fr/ Publiée le 11 février 2015 Table des matières I - Le relationnel-objet 5 1. Introduction : R, OO, RO ............................................................................................................ 5 1.1. 1.2. 1.3. 1.4. 1.5. Les atouts du modèle relationnel .............................................................................................................. Les inconvénients du modèle relationnel .................................................................................................... Les SGBDOO ......................................................................................................................................... Les SGBDRO ......................................................................................................................................... Exercice .................................................................................................................................................. 5 5 6 7 7 2. Le passage conceptuel vers relationnel-objet ................................................................................ 8 2.1. Classe .................................................................................................................................................... 8 2.2. Exercice : Un film classe .......................................................................................................................... 8 2.3. Attributs et méthodes .............................................................................................................................. 9 2.4. Exercice : Un film avec des attributs .......................................................................................................... 9 2.5. Exercice : Un film méthodique ................................................................................................................... 9 2.6. Exercice : Un film vraiment méthodique ................................................................................................... 10 2.7. Association 1:N et 1 :1 .......................................................................................................................... 10 2.8. Exercice : Un film associatif .................................................................................................................... 10 2.9. Association N:M ................................................................................................................................... 10 2.10. Exercice : Un film très associatif ............................................................................................................ 11 2.11. Exercice : Un film très associatif, le retour ............................................................................................. 11 2.12. Composition ........................................................................................................................................ 12 2.13. Exercice : Un film bien composé ............................................................................................................ 12 2.14. Héritage .............................................................................................................................................. 12 2.15. Exercice : RO sans fil ........................................................................................................................... 12 3. Introduction au SQL3 et aux types utilisateurs ......................................................................... 13 3.1. Types utilisateurs .................................................................................................................................. 13 3.2. Déclaration des types utilisateurs en SQL3 (extension au LDD) ................................................................ 13 3.3. Exercice ................................................................................................................................................ 14 4. Exemples RO .............................................................................................................................. 14 4.1. Exemple RO : Gestion de cours .............................................................................................................. 15 4.2. Exemple : Gestion de cours simplifiée (version avec OID) ......................................................................... 17 5. Synthèse : Le relationnel-objet ................................................................................................... 19 6. Bibliographie commentée sur le relationnel-objet ....................................................................... 20 II - La gestion des transactions 21 1. Principes des transactions .......................................................................................................... 21 1.1. 1.2. 1.3. 1.4. 1.5. 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 ........................................................................................................................ 21 22 22 22 23 2. Fiabilité et transactions .............................................................................................................. 23 2.1. 2.2. 2.3. 2.4. 2.5. 2.6. 2.7. 2.8. 2.9. Les pannes ........................................................................................................................................... Point de contrôle ................................................................................................................................... Ecriture en avant du journal .................................................................................................................. Reprise après panne .............................................................................................................................. Exercice : Mini-TP : Simulation d'une panne sous PostgreSQL .................................................................. Exemple : Transfert protégé entre deux comptes ....................................................................................... Exercice ................................................................................................................................................ Exercice : Super-héros sans tête ............................................................................................................... Complément : Algorithme de reprise UNDO-REDO .................................................................................. 23 24 24 24 25 26 26 27 28 3. Concurrence et transactions ....................................................................................................... 29 3.1. Trois problèmes soulevés par la concurrence. ........................................................................................... 30 3.2. 3.3. 3.4. 3.5. 3.6. Le verrouillage ...................................................................................................................................... Le déverrouillage ................................................................................................................................... Inter-blocage ......................................................................................................................................... Exercice : Mini-TP : Simulation d'accès concurrents sous PostgreSQL ....................................................... Solution aux trois problèmes soulevés par la concurrence. ......................................................................... 32 33 33 34 35 3.7. Exercice ............................................................................................................................................... 36 3.8. Exercice : Films en concurrence .............................................................................................................. 37 3.9. Complément : Protocole d'accès aux données. .......................................................................................... 38 4. Synthèse : Les transactions ........................................................................................................ 39 5. Bibliographie commentée sur les transactions ............................................................................ 39 III - L'optimisation 40 1. Introduction à l'optimisation du schéma interne ........................................................................ 40 1.1. Schéma interne et performances des applications ..................................................................................... 1.2. Évaluation des besoins de performance .................................................................................................... 1.3. Indexation ............................................................................................................................................ 1.4. Exercice ................................................................................................................................................ 1.5. Dénormalisation .................................................................................................................................... 1.6. Les trois principes à respecter pour introduire de la redondance dans une base de données .......................... 1.7. Exercice ................................................................................................................................................ 1.8. Partitionnement de table ........................................................................................................................ 1.9. Exercice ................................................................................................................................................ 1.10. Vues concrètes .................................................................................................................................... 40 41 42 43 43 44 44 45 46 46 1.11. Exercice : Film concret ......................................................................................................................... 47 1.12. Exercice : Super-lents ........................................................................................................................... 47 1.13. Complément : Groupement de tables ...................................................................................................... 48 2. Mécanismes d'optimisation des moteurs de requêtes .................................................................. 49 2.1. 2.2. 2.3. 2.4. 2.5. Exercice : Calcul du coût d'une requête .................................................................................................... Principe de l'optimisation de requêtes ..................................................................................................... Techniques pour l'optimisation de requêtes .............................................................................................. Collecte de statistiques pour le moteur d'optimisation ............................................................................... Jointures et optimisation de requêtes ...................................................................................................... 49 49 50 50 51 3. Synthèse : L'optimisation ........................................................................................................... 51 4. Bibliographie commentée sur l'optimisation ............................................................................... 51 IV - Au delà des bases de données relationnelles 52 1. Introduction aux datawarhouses ................................................................................................ 52 1.1. Présentation du décisionnel .................................................................................................................... 52 1.2. Présentation du data warehousing ........................................................................................................... 53 1.3. Différence entre un DW et un système transactionnel ............................................................................... 53 1.4. Implémentation du DW avec un SGBDR ................................................................................................. 54 1.5. Présentation de la modélisation en étoile ................................................................................................. 54 1.6. L'ETL .................................................................................................................................................. 55 1.7. SGBD orientés décisionnel ..................................................................................................................... 55 2. Introduction à XML ................................................................................................................... 56 2.1. Définition du XML ................................................................................................................................ 56 2.2. 2.3. 2.4. 2.5. 2.6. Exemple : Un document XML ................................................................................................................ Document bien formé ............................................................................................................................ Balise ................................................................................................................................................... Notion de document valide ..................................................................................................................... Document Type Definition ..................................................................................................................... 57 57 57 58 58 3. Introduction aux bases de données XML ................................................................................... 59 3.1. XML comme format d'échange ............................................................................................................... 59 3.2. Stocker du XML en BD ......................................................................................................................... 59 3.3. Introduction à XPath ............................................................................................................................. 62 4. Brève introduction aux bases de données NoSQL ...................................................................... 62 V - Ouvrage de référence conseillé 64 Contenus annexes 65 Glossaire 77 Abréviations 78 Bibliographie 79 Webographie 80 Le relationnel-objet Le relationnel-objet I Introduction : R, OO, RO 5 Le passage conceptuel vers relationnel-objet 8 Introduction au SQL3 et aux types utilisateurs 13 Exemples RO 14 Synthèse : Le relationnel-objet 19 Bibliographie commentée sur le relationnel-objet 20 Si le modèle logique relationnel a prouvé sa puissance et sa fiabilité au cours des 20 dernières années, les nouveaux besoins de l'informatique industrielle ont vu l'émergence de structures de données complexes mal adaptées à une gestion relationnelle. La naissance du courant "orienté objet" et des langages associées (Java et C++ par exemple) ont donc également investi le champ des SGBDSGBD - p.78 > afin de proposer des solutions pour étendre les concepts du relationnel et ainsi mieux répondre aux nouveaux besoins de modélisation. * 1. Introduction : R, OO, RO Objectifs Comprendre les limites du modèle relationnel Comprendre pourquoi et comment le modèle relationnel peut être étendu 1.1. Les atouts du modèle relationnel Fondé sur une théorie rigoureuse et des principes simples Mature, fiable, performant Indépendance programme et données SGBDRSGBDR- p.78 > : les plus utilisés, connus, maîtrisés SQLSQL- p.78 > une implémentation standard du modèle relationnel, avec des APIAPI- p.78 > pour la plupart des langages de programmation Les SGBDR incluent des outils performants de gestion de requêtes, de générateurs d'applications, d'administration, d'optimisation, etc. * * * 1.2. Les inconvénients du modèle relationnel La structure de donnée en tables est pauvre d'un point de vue de la modélisation logique Le mapping MCDMCD- p.78 > vers MLDMLD- p.78 > entraîne une perte de sémantique La manipulation de structures relationnelles par des langages objets entraîne une impedance mismatch, c'est à dire un décalage entre les structures de données pour le stockage et les structures de données pour le traitement (ce qui implique des conversions * * 5 Stéphane Crozat - UTC Le relationnel-objet constantes d'un format à l'autre) La 1NF1NF- p.78 > est inappropriée à la modélisation d'objets complexes La normalisation entraîne la genèse de structures de données complexes et très fragmentées, qui peuvent notamment poser des problèmes de performance ou d'évolutivité Le SQL doit toujours être combiné à d'autres langages de programmation pour être effectivement mis en œuvre La notion de méthode ne peut être intégrée au modèle logique, elle doit être gérée au niveau de l'implémentation physique Les types de données disponibles sont limités et non extensibles * 1.3. Les SGBDOO Introduction Les SGBDOOSGBDOO- p.78 > ont été créés pour gérer des structures de données complexes, en profitant de la puissance de modélisation des modèles objets et de la puissance de stockage des BDBD- p.78 > classiques. * * Objectifs des SGBDOO : Offrir aux langages de programmation orientés objets des modalités de stockage permanent et de partage entre plusieurs utilisateurs Offrir aux BD des types de données complexes et extensibles Permettre la représentation de structures complexes et/ou à taille variable Avantages des SGBDOO : Le schéma d'une BD objet est plus facile à appréhender que celui d'une BD relationnelle (il contient plus de sémantique, il est plus proche des entités réelles) L'héritage permet de mieux structurer le schéma et de factoriser certains éléments de modélisation La création de ses propres types et l'intégration de méthodes permettent une représentation plus directe du domaine L'identification des objets permet de supprimer les clés artificielles souvent introduites pour atteindre la 3NF3NF- p.78 > et donc de simplifier le schéma Les principes d'encapsulation et d'abstraction du modèle objet permettent de mieux séparer les BD de leurs applications (notion d'interface). * Inconvénient des SGBDOO : Gestion de la persistance et de la coexistence des objets en mémoire (pour leur manipulation applicative) et sur disque (pour leur persistance) complexe Gestion de la concurrence (transactions) plus difficile à mettre en œuvre Interdépendance forte des objets entre eux Gestion des pannes Complexité des systèmes (problème de fiabilité) Problème de compatibilité avec les SGBDR classiques Fondamental Les SGBDOO apportent des innovations sur des aspects que les SGBDR ne savent pas faire, mais sans être au même niveau sur ce que les SGBDR savent bien faire. 6 Stéphane Crozat - UTC Le relationnel-objet 1.4. Les SGBDRO Introduction Les SGBDROSGBDRO- p.78 > sont nés du double constat de la puissance nouvelle promise par les SGBDOOSGBDOO- p.78 > et de l'insuffisance de leur réalité pour répondre aux exigences de l'industrie des BDBD- p.78 > classiques. Leur approche est plutôt d'introduire dans les SGBDRSGBDR- p.78 > les concepts apportés par les SGBDOO plutôt que de concevoir de nouveaux systèmes. * * * * Objectifs des SGBDRO Gérer des données complexes (temps, géo-référencement, multimédia, types utilisateurs, etc.) Rapprocher le modèle logique du modèle conceptuel Réduire l'impedance mismatchImpedance mismatch- p.77 § Réduire les pertes de performance liées à la normalisation et aux jointures * Définition : Modèle relationnel-objet Modèle relationnel étendu avec des principes objet pour en augmenter les potentialités. Synonymes : Modèle objet-relationnel Fondamental : Type utilisateur Le concept central du RO est celui de type utilisateur, correspondant à la classe en POOPOO- p.78 > , qui permet d'injecter la notion d'objet dans le modèle relationnel. * Les apports principaux des types utilisateurs sont : La gestion de l'imbrication (données structurées et collections) Les méthodes et l'encapsulation L'héritage et la réutilisation de définition de types L'identité d'objet et les références physiques Attention : Tables imbriquées et tables objets Le modèle RO apporte deux nouveautés distinctes et indépendantes à ne pas confondre : Les tables imbriquées (nested model) qui permettent de dépasser les limites de la première forme normale et de limiter la fragmentation de l'information ; Les tables objets qui permettent d'ajouter les identifiants d'objets (OID), les méthodes et l'héritage aux tables classiques. Avec un SGBDRO on peut ne pas utiliser ces deux extensions (on reste alors en relationnel), utiliser l'une des deux ou bien les deux conjointement. 1.5. Exercice Parmi les assertions suivantes, lesquelles expriment des limites des SGBDR qui justifient l'évolution du modèle relationnel classique vers le modèle relationnel-objet ? Le principe d'atomicité des attributs d'une relation (première forme normale) empêche de disposer de propriétés structurant plusieurs valeurs dans un type complexe. La séparation des données et des traitements empêche l'intégration des méthodes au modèle. La représentation de données complexes conduit à une fragmentation importante de l'information en de multiples relations et à des chutes de performance. Le modèle relationnel ne permet pas d'exécuter correctement des transactions en réseau. 7 Stéphane Crozat - UTC Le relationnel-objet Il n'est pas possible de créer des types de données personnalisées. Il n'est pas possible d'exécuter des instructions SQL1 ou SQL2 à partir d'un langage objet tel que Java, alors que c'est possible avec SQL3. L'héritage n'est pas représentable directement. 2. Le passage conceptuel vers relationnel-objet Objectifs Savoir déduire un modèle logique relationnel-objet depuis un modèle conceptuel E-A ou UML. Intégrer les apports du modèle relationnel-objet par rapport au relationnel dans ce processus. Cette partie permet de traiter la traduction d'un modèle conceptuel UMLUML- p.78 > ou E-AE-A- p.78 > en modèle relationnel-objet. Le modèle E-A étendu est bien plus adapté au relationnel-objet que le modèle E-A classique. * * 2.1. Classe Pour chaque classe (ou entité), créer un type d'objet avec les attributs de la classe (ou entité). Créer une table d'objets de ce type pour instancier la classe (ou entité), en ajoutant les contraintes d'intégrité. Remarque : Table d'objet La fait d'instancier la classe (l'entité) via une table d'objets plutôt qu'une relation classique, permet l'accès à l'héritage de type, à l'implémentation des méthodes et éventuellement à l'usage d'OIDOID - p.78 > à la place de clés étrangères classiques. * Si aucun de ces aspects n'est utilisé, il est possible d'instancier directement la classe (l'entité) en table. Mais le passage par un type est a priori plus systématique. Remarque : Mapping des méthodes Si le modèle conceptuel autorise l'expression de méthodes ( UMLUML- p.78 > ou extension de E-AE-A - p.78 > ), alors on ajoute la définition de ces méthodes sur le type d'objet créé pour de chaque classe (ou entité). * * 2.2. Exercice : Un film classe Question Proposer un modèle RO correspondant au modèle UML. Film (classe) 8 Stéphane Crozat - UTC Le relationnel-objet 2.3. Attributs et méthodes Attributs composites Pour chaque type d'attribut composé, créer un type d'objet. Attributs multi-valués Pour chaque attribut multi-valué créer une collection du type de cet attribut. Remarque : Attributs composites multi-valués Si l'attribut multi-valué est composite, alors créer une collection d'objets. Attributs dérivés te méthodes Pour chaque attribut dérivé et chaque méthode créer une méthode associée au type d'objet de la classe (l'entité). 2.4. Exercice : Un film avec des attributs Question Proposer un modèle RO correspondant au modèle UML. Film (attribut multi-valué) 2.5. Exercice : Un film méthodique Question Proposer un modèle RO correspondant au modèle UML. Film (méthode) 9 Stéphane Crozat - UTC Le relationnel-objet 2.6. Exercice : Un film vraiment méthodique Question Proposer une implémentation SQL3 sous Oracle correspondant au modèle UML. La méthode DureeTournage sera implémentée de façon à retourner un nombre entier de jours. Film (méthode) Indices : On pourra utiliser une fonction duree(debut,fin) qui retourne le nombre de jours entre deux dates. On fera un usage explicite de SELF. 2.7. Association 1:N et 1 :1 Les associations 1:N et 1:1 sont gérées comme en relationnel. On peut néanmoins favoriser l'usage d'objets pour les clés étrangères composées de plusieurs attributs, ainsi que pour les attributs des classes d'association. Il est aussi possible de gérer la clé étrangère avec un OID à la place d'une clé étrangère classique. 2.8. Exercice : Un film associatif Question Proposer un modèle RO correspondant au modèle UML, en utilisant les OID. Film (association 1:N) 2.9. Association N:M Les associations N:M peuvent être gérées comme en relationnel. Il est aussi possible de gérer ces relations, en utilisant une collection de références (une collection de clés étrangères) (NB : on favorise ainsi une des deux relations). 10 Stéphane Crozat - UTC Le relationnel-objet Il est aussi possible de gérer ces relations en utilisant un OID comme clé étrangère. Il est aussi possible de gérer ces relations en utilisant une collection de référence OID. Remarque : Collection de clés étrangères Oracle n'autorise pas (à ma connaissance ...) la spécification de contraintes d'intégrité référentielle dans une table imbriquée. Ce qui limite l'utilisation de telles tables pour gérer des relations N:M avec des collections de clés étrangères. Par contre cela fonctionne avec des références à des OID. 2.10. Exercice : Un film très associatif Question Proposer un modèle RO correspondant au modèle UML, en utilisant les OID, mais pas de table imbriquée. Film (association M:N) 2.11. Exercice : Un film très associatif, le retour Question Proposer un modèle RO correspondant au modèle UML, en utilisant les OID et en utilisant une table imbriquée. Film (association M:N) Indice : Les films étant le centre de notre BD, c'est dans cette table que l'on imbriquera les références. 11 Stéphane Crozat - UTC Le relationnel-objet 2.12. Composition En RO, les compositions sont gérées avec le modèle imbriqué, à l'instar des attributs composés et multi-valués : en effet par définition l'élément composant ne peut être partagé par plusieurs composites, le modèle imbriqué n'introduit donc pas de redondance. 1. Créer un type correspondant au schéma de la table des composants 2. Créer une collection de ce type 3. Imbriquer cette collection dans la table des composites 2.13. Exercice : Un film bien composé Question Proposer un modèle RO correspondant au modèle UML. Film (composition) 2.14. Héritage L'héritage est géré comme en relationnel classique. En cas d'héritage par les classes filles, l'on peut profiter de l'héritage de type pour éliminer la redondance dans la définition des schémas. 2.15. Exercice : RO sans fil [30 minutes] L'on souhaite réaliser une base de données permettant de gérer tous les relais Wifi sur un site d'entreprise. Chaque relais est identifié par une coordonnée géographique (de type CooT, dont le code est fourni ci-après) et fait référence à un modèle. On associe également à chaque relais son prix d'achat. Chaque modèle est décrit par une marque et un type et possède une puissance. 1 CREATE TYPE CooT AS OBJECT ( 2 latitude real, 3 longitude real 4 ); Question 1 Proposez une implémentation RO SQL3 sous Oracle exploitant les tables-objets et le modèle imbriqué (vous pouvez faire un MCD et un MLD préalablement pour vous aider). 12 Stéphane Crozat - UTC Le relationnel-objet Question 2 Insérer les données suivantes dans votre base de données : Un modèle de marque SuperWif et de type X1, puissance 25mW Deux relais de ce modèle respectivement aux coordonnées (48.853 ; 2.35) et (48.978 ; 3.01), achetés chacun 100€. Question 3 Écrivez deux requêtes permettant de renvoyer respectivement : La puissance du relais situé à la coordonnée (47.5 ; 1.5) La moyenne des prix des relais pour chaque modèle (type et marque) 3. Introduction au SQL3 et aux types utilisateurs Objectifs Connaître les caractéristiques principales du modèle relationnel-objet Connaître l'extension du LDD pour la déclaration de type (CREATE TYPE) 3.1. Types utilisateurs Définition : Type utilisateur Type de données créé par le concepteur d'un schéma relationnel-objet, qui encapsule des données et des opérations sur ces données. Ce concept est à rapprocher de celui de classe d'objets. Synonymes : Type de données utilisateur, Type de données abstrait Syntaxe : Niveau logique 1 Type nom_type : < 2 attribut1:typeAttribut1, 3 attribut2:typeAttribut2, 4 ... 5 attributN:typeAttributN, 6 =methode1:(paramètres) typeRetourné1, 7 =methode2:(paramètres) typeRetourné2, 8 =... 9 =methodeN:(paramètres) typeRetournéN 10 > Fondamental Les types des attributs (ou des méthodes) d'un type peuvent également être des types utilisateurs. C'est ce principe qui permet l'imbrication de données relationnelles. 3.2. Déclaration des types utilisateurs en SQL3 (extension au LDD) Syntaxe : Déclaration de type 1 CREATE TYPE nom_type AS OBJECT ( 13 Stéphane Crozat - UTC Le relationnel-objet 2 nom_attribut1 type_attribut1 3 ... 4 MEMBER FUNCTION nom_fonction1 (parametre1 IN|OUT type_parametre1, ...) RETURN type_fonction1 5 ... 6 ) [NOT FINAL]; 7/ 8 CREATE TYPE BODY nom_type 9 IS 10 MEMBER FUNCTION nom_fonction1 (...) RETURN type_fonction1 11 IS 12 BEGIN 13 ... 14 END ; 15 MEMBER FUNCTION nom_fonction2 ... 16 ... 17 END ; 18 END ; 19 / Syntaxe : Héritage de type 1 CREATE TYPE sous_type UNDER sur_type ( 2 Déclarations spécifiques ou surcharges 3) ; Remarque : NOT FINAL Pour être héritable, un type doit être déclaré avec la clause optionnelle NOT FINAL. Remarque : Type retourné par une méthode « The datatype cannot specify a length, precision, or scale. » http://docs.oracle.com/cd/B13789_01/server.101/b10759/statements_5009.htm 3.3. Exercice Parmi les possibilités de modélisation logique suivantes, lesquelles peuvent être réalisées en relationnel-objet mais pas en relationnel. Associer des méthodes aux tables Mettre plusieurs valeurs dans un enregistrement Référencer un enregistrement depuis un autre enregistrement Définir ses propres types de données 4. Exemples RO 14 Stéphane Crozat - UTC Le relationnel-objet 4.1. Exemple RO : Gestion de cours Modèle conceptuel Modèle conceptuel en UML Modèle logique 1 Type Bureau : < 2 poste:entier, 3 centre:chaîne, 4 bâtiment:chaîne, 5 numéro:entier, 6 =coordonnées():chaîne 7> 8 Type Personne : < nom:chaîne, prénom:chaîne > 9 Type Intervenant hérite de Personne : < bureau:Bureau > 10 tIntervenant de Intervenant (#nom, #prénom) 11 Type RefIntervenant : <nom:chaîne, prénom:chaîne> 12 Type ListeRefIntervenants: collection de <RefIntervenant> 13 Type Cours(semestre:chaîne, num:entier, titre:chaîne, type:enum, contenu:chaîne, lIntervenant:ListeRefIntervenant) 14 tCours de Cours (#semestre, #num) Remarque : Méthode coordonnées() On a choisi de mettre la méthode coordonnées au niveau du type Bureau plutôt que du type Personne, pour augmenter les possibilités de réutilisabilité (car d'autres entités que Intervenant pourraient utiliser le type Bureau). C'est une possibilité offerte par le fait que les attributs composés donnent naissance à des types utilisateurs (on décide donc de remonter certaines méthodes qui ne concerne que cet attribut composé au niveau de ce type). Implémentation 1 CREATE TYPE Bureau AS OBJECT ( 2 poste number(4), 3 centre char(2), 15 Stéphane Crozat - UTC Le relationnel-objet 4 batiment char(1), 5 numero number(3), 6 MEMBER FUNCTION coordonnees RETURN varchar2 7 ); 8 CREATE TYPE BODY Bureau 9 IS 10 MEMBER FUNCTION coordonnees RETURN varchar2 11 IS 12 BEGIN 13 RETURN centre||batiment||numero||' - poste '||poste; 14 END; 15 END; 16 17 CREATE TYPE Personne AS OBJECT( 18 pkNom varchar2(50), 19 pkPrenom varchar2(50) 20 ) NOT FINAL ; 21 22 CREATE TYPE Intervenant UNDER Personne ( 23 aBureau Bureau 24 ); 25 26 CREATE TABLE tIntervenant OF Intervenant ( 27 PRIMARY KEY(pkNom,pkPrenom) 28 ); 29 30 CREATE TYPE RefIntervenant AS OBJECT ( 31 nom varchar2(50), 32 prenom varchar2(50) 33 ); 34 CREATE TYPE ListeRefIntervenants AS TABLE OF RefIntervenant; 35 36 CREATE TYPE Cours AS OBJECT( 37 pkSemestre char(5), 38 pkNum number(2), 39 aTitre varchar2(50), 40 aType char(2), 41 aContenu varchar2(300), 42 lIntervenant ListeRefIntervenants 43 ); 44 45 CREATE TABLE tCours OF Cours ( 46 PRIMARY KEY(pkSemestre, pkNum), 47 CHECK (aType='C' or aType='TD' or aType='TP') 48 ) 49 NESTED TABLE lIntervenant STORE AS ntCoursIntervenants; Initialisation 1 INSERT INTO tIntervenant VALUES ('CROZAT', 'Stéphane', Bureau('4287','R','A',108)); 2 INSERT INTO tIntervenant VALUES ('JOUGLET', 'Antoine', Bureau('4423','R','C',100)); 3 4 INSERT INTO tCours VALUES ('P2003',1,'Conception','C','E-A et UML', ListeRefIntervenants(RefIntervenant('CROZAT','Stéphane'))); 5 INSERT INTO tCours VALUES ('P2003',5,'Access','TP','Initiation', ListeRefIntervenants(RefIntervenant('CROZAT','Stéphane'), RefIntervenant('JOUGLET','Antoine'))); 16 Stéphane Crozat - UTC Le relationnel-objet Question (méthode) 1 SELECT t.pkNom||' '||t.pkPrenom AS Qui, t.aBureau.coordonnees() AS Ou 2 FROM tIntervenant t; 3 4 QUI OU 5 ------------------------------------6 CROZAT Stéphane R A108 - poste 4287 7 JOUGLET Antoine R C100 - poste 4423 Question (nested table) 1 SELECT c.pkSemestre AS Quand,c.aTitre AS Quoi,ci.Nom AS Qui 2 FROM tCours c, TABLE(c.lIntervenant) ci; 3 4 QUAND QUOI QUI 5 -----------------------------6 P2003 Conception CROZAT 7 P2003 Access CROZAT 8 P2003 Access JOUGLET Question (jointure) 1 SELECT c.pkSemestre AS Quand,c.aTitre AS Quoi,i.pkNom AS Qui,i.aBureau.coordonnees() AS Ou 2 FROM tCours c, TABLE(lIntervenant) ci, tIntervenant i 3 WHERE ci.nom=i.pkNom AND ci.prenom=i.pkPrenom; 4 5 QUAND QUOI QUI OU 6 ------------------------------------------------7 P2003 Conception CROZAT R A108 - poste 4287 8 P2003 Access CROZAT R A108 - poste 4287 9 P2003 Access JOUGLET R C100 - poste 4423 4.2. Exemple : Gestion de cours simplifiée (version avec OID) 4.2.1. Modèle conceptuel Modèle conceptuel en UML 4.2.2. Modèle logique 1 Type Intervenant : < nom:chaîne, prénom:chaîne > 2 tIntervenant de Intervenant (#nom) 17 Stéphane Crozat - UTC Le relationnel-objet 3 Type Cours(num:entier, titre:chaîne, fkIntervenant =>o tIntervenant) 4 tCours de Cours (#num) 4.2.3. Implémentation 1 CREATE TYPE Intervenant AS OBJECT ( 2 pkNom varchar2(50), 3 aPrenom varchar2(50) 4 ); 5 6 CREATE TABLE tIntervenant OF Intervenant (PRIMARY KEY (pkNom)); 7 8 CREATE TYPE Cours AS OBJECT ( 9 pkNum number(2), 10 aTitre varchar2(50), 11 fkIntervenant REF Intervenant 12 ); 13 14 CREATE TABLE tCours OF Cours ( 15 SCOPE FOR (fkIntervenant) IS tIntervenant, 16 PRIMARY KEY(pkNum) 17 ); 4.2.4. Initialisation de la table d'objets tIntervenant 1 INSERT INTO tIntervenant 2 VALUES ('CROZAT', 'Stéphane'); 4.2.5. Insertion de données dans la table d'objets tCours (SQL) 1 INSERT INTO tCours 2 SELECT 2, 'Modélisation', REF(i) 3 FROM tIntervenant i 4 WHERE pkNom='CROZAT'; 4.2.6. Insertion de données dans la table tCours (PL/SQL) 1 DECLARE 2 ri REF Intervenant; 3 BEGIN 4 SELECT REF(i) INTO ri 5 FROM tIntervenant i 6 WHERE i.pkNom='CROZAT'; 7 INSERT INTO tCours 8 VALUES (1,'Conception',ri); 9 END; 4.2.7. Sélection : Clé étrangère sous forme d'OID 1 SELECT * FROM tCours; 2 3 PKNUM ATITRE FKINTERVENANT 4 -----------------------------------------------------------5 1 Conception 0000220208DE4BD8F3191044589847E31E64B83EBB5807280A335B44C4AD958EDF20D185B5 6 2 Modélisation 0000220208DE4BD8F3191044589847E31E64B83EBB5807280A335B44C4AD958EDF20D185B5 18 Stéphane Crozat - UTC Le relationnel-objet 4.2.8. Sélection : Jointure sur l'OID Contre-exemple : ce qu'il ne faut pas faire ! 1 SELECT c.pkNum, i.pkNom 2 FROM tCours c, tIntervenant i 3 WHERE c.fkIntervenant=REF(i); 4 5 PKNUM PKNOM 6 ------------------------7 1 CROZAT 8 2 CROZAT 4.2.9. Sélection : Navigation d'objets 1 SELECT pkNum, c.fkIntervenant.pkNom 2 FROM tCours c 3 4 PKNUM PKNOM 5 ------------------------6 1 CROZAT 7 2 CROZAT 5. Synthèse : Le relationnel-objet Types Pré-définis Domaines classiques Chaîne, Entier, Date, Booléen, etc. Domaines avancés CLOB, BLOB, etc. Définis par l'utilisateur Relation Comme dans le modèle relationnel classique Objets Types utilisateurs Collections Tables imbriquées Modèle RO Modèle imbriqué Table d'objets CREATE TYPE CREATE TABLE OF Collection NESTED TABLE Type utilisateur OID REF SCOPE FOR 19 Stéphane Crozat - UTC Le relationnel-objet Héritage de type NOT FINAL Méthode MEMBER FUNCTION CREATE TYPE BODY 6. Bibliographie commentée sur le relationnel-objet Complément : Synthèse SQL3 sous Oracle 8i SQL2 SQL3, applications à OracleDelmal01- p.79 ¨ * On consultera les chapitre 11 et 12 pour avoir une description des extensions SQL3 et de ses implémentations et extensions sous Oracle (version 8i). 20 Stéphane Crozat - UTC La gestion des transactions La gestion des transactions II Principes des transactions 21 Fiabilité et transactions 23 Concurrence et transactions 29 Synthèse : Les transactions 39 Bibliographie commentée sur les transactions 39 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 client-serveur. Elles sont le fondement de toute implémentation robuste d'une BD. Des systèmes comme Oracle ne fonctionnent nativement qu'en mode transactionnel. 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 BDBD- p.78 > 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 SGBDSGBD- p.78 > 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. * 21 Stéphane Crozat - UTC La gestion des transactions 1.2. 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 BDBD- p.78 > d'un état cohérent à un autre état cohérent. * Fondamental : Cohérence des exécutions incorrectes La transaction assure le maintien de la cohérence des données que son exécution soit correcte ou incorrecte. 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 1. DEBUT 2. 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. 1.4. 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 BDBD- p.78 > , 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. La durabilité Les transactions assurent que les modifications qu'elles induisent perdurent, même en cas de défaillance du système. * 22 Stéphane Crozat - UTC La gestion des transactions Remarque Les initiales de Atomicité, Cohérence, Isolation et Durabilité forme le mot mnémotechnique ACID. 1.5. Journal des transactions Définition : Journal Le journal est un fichier système qui constitue un espace de stockage redondant avec la BDBD- p.78 > . 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 persistant (donc en mémoire secondaire) qui mémorise tout ce qui se passe sur la BD. * Le journal est indispensable pour la validation (COMMIT), l'annulation (ROLLBACK) et la reprise après panne de transactions. Synonymes : Log 2. Fiabilité et transactions Objectifs Appréhender la gestion des pannes dans les SGBD. Comprendre la réponse apportée par la gestion des transactions. 2.1. Les pannes Une BDBD- p.78 > 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 elles-mê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 ACIDACID- p.78 > des transactions. * 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é. 23 Stéphane Crozat - UTC La gestion des transactions 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 durabilité. Sans cette gestion, toute transaction pourrait être remise en cause. 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). 2.2. 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 2.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. 2.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 ci-après illustre les cinq cas de figure possibles pour une transaction au moment de la panne. 24 Stéphane Crozat - UTC La gestion des transactions É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 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é. 2.5. Exercice : Mini-TP : Simulation d'une panne sous PostgreSQL 1. Se connecter à une base de données : psql mydb 2. Créer une table test : CREATE TABLE test (a integer); Question 1. 2. 3. 4. 5. 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 Se reconnecter et vérifier que les valeurs ne sont plus dans la table : SELECT * FROM ... 25 Stéphane Crozat - UTC La gestion des transactions 2.6. 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=Solde-100 WHERE Num=1") .Execute 5 CommitTrans 6 End Sub Fondamental : Transfert protégé Pour les trois exemples ci-avant le transfert est protégé au sens où soit les deux UPDATE seront exécutés , soit aucun. 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). 2.7. 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=Solde-100 WHERE Numero=12; ROLLBACK; UPDATE C2 SET Solde=Solde+100 WHERE Numero=12; COMMIT; UPDATE C1 SET Solde=Solde-100 WHERE Numero=12 UPDATE C2 SET Solde=Solde+100 WHERE Numero=12 ROLLBACK; 26 Stéphane Crozat - UTC La gestion des transactions UPDATE C1 SET Solde=Solde-100 WHERE Numero=12; COMMIT; UPDATE C2 SET Solde=Solde+100 WHERE Numero=12; COMMIT; UPDATE C1 SET Solde=Solde-100 WHERE Numero=12; UPDATE C2 SET Solde=Solde+100 WHERE Numero=12; COMMIT; UPDATE C1 SET Solde=Solde-100 WHERE Numero=12; ROLLBACK; UPDATE C2 SET Solde=Solde-100 WHERE Numero=12; ROLLBACK; 2.8. Exercice : Super-héros sans tête [10 minutes] Les usines GARVEL construisent des figurines de super-hé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. L'extrait du modèle UML utile au problème est proposé ci-aprè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') ; 27 Stéphane Crozat - UTC La gestion des transactions 3 INSERT INTO 'bleu') ; 4 INSERT INTO 'bleu') ; 5 INSERT INTO 'bleu') ; 6 INSERT INTO 'bleu') ; 7 INSERT INTO ) ; 8 INSERT INTO Membre (propriétaire, nom, couleur) VALUES ('Superchild','bras droit', Membre (propriétaire, nom, couleur) VALUES ('Superchild','bras gauche', Membre (propriétaire, nom, couleur) VALUES ('Superchild','jambe gauche', Membre (propriétaire, nom, couleur) VALUES ('Superchild','jambe droite', Membre (propriétaire, nom, couleur) VALUES ('Superchild','torse','rouge' 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. Question 2 Illustrer la solution proposée en corrigeant le code SQL de l'insertion de "Superchild". 2.9. Complément : Algorithme de reprise UNDO-REDO Introduction L'algorithme suivant permet d'assurer une reprise après panne qui annule et rejoue les transactions adéquates. 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 4 5 2. 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 8 9 3. 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) 12 13 4. TERMINER la reprise et redevenir disponible pour de nouvelles instructions 28 Stéphane Crozat - UTC La gestion des transactions 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 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. 3. 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. 29 Stéphane Crozat - UTC La gestion des transactions 3.1. Trois problèmes soulevés par la concurrence. Introduction Nous proposons ci-dessous trois problèmes posés par les accès concurrents des transactions aux données. 3.1.1. Perte de mise à jour Tableau 1 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. Exemple Tableau 2 Doucle crédit d'un compte bancaire C Dans cet exemple le compte bancaire vaut 1010 à la fin des deux transactions à la place de 1110. 30 Stéphane Crozat - UTC La gestion des transactions 3.1.2. Accès à des données non validées Tableau 3 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). Exemple Tableau 4 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 1010. 3.1.3. Lecture incohérente Tableau 5 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. 31 Stéphane Crozat - UTC La gestion des 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. Exemple Tableau 6 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 200. 3.2. 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 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). 32 Stéphane Crozat - UTC La gestion des transactions 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 1. Si O n'est pas verrouillé alors A peut poser un verrou S 2. Si O dispose déjà d'un ou plusieurs verrous S alors A peut poser un verrou S 3. 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 1. Si O n'est pas verrouillé alors A peut poser un verrou X 2. 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 Tableau 7 Matrice des règles de verrouillage Remarque : Promotion d'un verrou Une transaction qui dispose déjà, elle-mê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. 3.3. 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 3.4. Inter-blocage Définition : Inter-blocage L'inter-blocage 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'inter-blocage sont détectées par les SGBDSGBD- p.78 > 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 inter-blocage 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. 33 Stéphane Crozat - UTC La gestion des transactions La détection d'un tel cycle permet de choisir une victime, c'est à dire une des deux transactions qui sera annulée pour que l'autre puisse se terminer. Synonymes : Circuit de blocage 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'inter-blocage, 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'inter-blocage (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 inter-blocage (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. Certains SGBDSGBD- p.78 > se charge de relancer automatiquement les transactions ainsi annulées. * 3.5. Exercice : Mini-TP : 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 1 1. term1 Insérer une valeur : INSERT ... (COMMIT implicite) 2. term2 Vérifier que la valeur est visible : SELECT ... Question 2 1. 2. 3. 4. 5. 6. term1 term1 term1 term2 term1 term2 Commencer une transaction : BEGIN TRANSACTION; Insérer la valeur 2 dans la table : INSERT INTO... Vérifier que la valeur est bien dans la table : SELECT * FROM ... Vérifier que la valeur n'est pas visible : SELECT * FROM ... Valider la transaction : COMMIT; Vérifier que la valeur est visible : SELECT * FROM ... 34 Stéphane Crozat - UTC La gestion des transactions Question 3 1. 2. 3. 4. 5. 6. 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... 7. term1 Vérifier que les deux mises à jour ont bien été effectuées (a multiplié par 6) : SELECT... 3.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. 3.6.1. Perte de mise à jour Tableau 8 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'inter-blocage. 35 Stéphane Crozat - UTC La gestion des transactions 3.6.2. Accès à des données non validées Tableau 9 Problème de la lecture impropre du tuple T par la transaction A 3.6.3. Lecture incohérente Tableau 10 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. 3.7. Exercice Soit l'exécution concurrente des deux transactions ci-dessous (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. 36 Stéphane Crozat - UTC La gestion des transactions Tableau 11 Transactions concurrentes De combien le champ TABLE1.A a-t-il é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 inter-blocage, répondez 0. 3.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. 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 t0 Transaction TR2 BEGIN t1 BEGIN t2 UPDATE Film entrees=entrees+1 isan='123' SET WHERE t3 t4 UPDATE Film entrees=entrees+1 isan='123' SET WHERE t5 t6 COMMIT t7 t8 COMMIT Transaction parallèles TR1 et TR2 sous PostgreSQL 37 Stéphane Crozat - UTC La gestion des transactions 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. Exercice De combien les entrées du film 123 ont-t-elles été augmentées à t3 du point de vue de la transaction TR1 ? Exercice De combien les entrées du film 123 ont-t-elles été augmentées à t3 du point de vue de la transaction TR2 ? Exercice De combien les entrées du film 123 ont-t-elles été augmentées à t5 du point de vue de la transaction TR1 ? Exercice De combien les entrées du film 123 ont-t-elles été augmentées à t5 du point de vue de la transaction TR2 ? Exercice De combien les entrées du film 123 ont-t-elles été augmentées à t7 du point de vue de la transaction TR1 ? Exercice De combien les entrées du film 123 ont-t-elles été augmentées à t7 du point de vue de la transaction TR2 ? 3.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 : 1. A demande à poser un verrou S sur T 2. Si A obtient de poser le verrou alors A lit T 3. 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 : 1. A demande à poser un verrou X sur T 2. 38 Stéphane Crozat - UTC La gestion des transactions 2. Si A obtient de poser le verrou alors A écrit T 3. 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) : 1. A libère tous les verrous qu'elle avait posé 2. 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 FIFOFIFO- p.78 > sont généralement appliquées et donc les transactions sont empilées selon leur ordre de demande. * 4. 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. 5. Bibliographie commentée sur les transactions Complément : Synthèses Les transactionsw_developpez.com/hcesbronlavau- p.80 ¨ * 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 à OracleDelmal01- p.79 ¨ * 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 Evryw_int-evry.fr- p.80 ¨ http://www-inf.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 SQLMata03- p.79 ¨ * Un exemple d'exécution de transactions (pages 20-23) 39 Stéphane Crozat - UTC L'optimisation L'optimisation III Introduction à l'optimisation du schéma interne 40 Mécanismes d'optimisation des moteurs de requêtes 49 Synthèse : L'optimisation 51 Bibliographie commentée sur l'optimisation 51 La conception des SGBDR exige qu'une attention particulière soit portée à la modélisation conceptuelle, afin de parvenir à définir des modèles logiques relationnels cohérents et manipulables. De tels modèles relationnels, grâce au langage standard SQL, présentent la particularité d'être implémentables sur toute plate-forme technologique indépendamment de considérations physiques. Néanmoins l'on sait que dans la réalité, il est toujours nécessaire de prendre en considération les caractéristiques propres de chaque SGBDR, en particulier afin d'optimiser l'implémentation. Les optimisations concernent en particulier la question des performances, question centrale dans les applications de bases de données, qui, puisqu'elles manipulent des volumes de données importants, risquent de conduire à des temps de traitement de ces données trop longs par rapport aux besoins d'usage. Chaque SGBDR propose généralement des mécaniques propres pour optimiser les implémentations, et il est alors nécessaire d'acquérir les compétences particulières propres à ces systèmes pour en maîtriser les arcanes. Il existe néanmoins des principes généraux, que l'on retrouvera dans tous les systèmes, comme par exemple les index, les groupements ou les vues matérialisées. Nous nous proposerons d'aborder rapidement ces solutions pour en examiner les principes dans le cadre de ce cours. Nous aborderons également quelques techniques de conception, qui consistent à revenir sur la structure proposée par l'étape de modélisation logique, pour établir des modèles de données plus aptes à répondre correctement à des questions de performance. La dénormalisation ou le partitionnement en sont des exemples. 1. Introduction à l'optimisation du schéma interne Objectifs Assimiler la problématique de la performance en bases de données Connaître les grandes classes de solutions technologiques existantes aux problèmes de performance Connaître et savoir mobiliser les techniques d'optimiser les performances d'une BD de conception permettant 1.1. Schéma interne et performances des applications La passage au schéma interne (ou physique), i.e. l'implémentation du schéma logique dans un SGBDSGBD- p.78 > particulier, dépend de considérations pratiques liées aux performances des * 40 Stéphane Crozat - UTC L'optimisation applications. Les possibilités d'optimisation des schémas internes des BDBD- p.78 > dépendent essentiellement des fonctions offertes par chaque SGBD. * On peut néanmoins extraire certains principes d'optimisation des schémas internes suffisamment généraux pour être applicables dans la plupart des cas. Proposition de solutions Parmi les solutions d'optimisation existantes, on pourra citer : L'indexation La dénormalisation Le partitionnement vertical et horizontal Les vues concrètes Le regroupement (clustering) de tables ... Méthode : Démarche d'optimisation 1. Des problèmes de performance sont identifiés, 2. des solutions d'optimisation sont proposées, 3. les solutions sont évaluées pour vérifier leur impact et leur réponse au problème posé. 1.2. Évaluation des besoins de performance Éléments à surveiller Pour optimiser un schéma interne, il est d'abord nécessaire de repérer les aspects du schéma logique qui sont susceptibles de générer des problèmes de performance. On pourra citer à titre d'exemple les paramètres à surveiller suivants : Taille des tuples Nombre de tuples Fréquence d'exécution de requêtes Complexité des requêtes exécutées (nombre de jointures, etc.) Fréquence des mises à jour (variabilité des données) Accès concurrents Distribution dans la journée des accès Qualité de service particulière recherchée Paramétrabilité des exécutions etc. Évaluation des coûts Une fois les éléments de la BDBD- p.78 > à évaluer repérés, il faut mesurer si oui ou non ils risquent de poser un problème de performance. * L'évaluation des performances peut se faire : Théoriquement En calculant le coût d'une opération (en temps, ressources mémoires, etc.) en fonction de paramètres (volume de données, disparité des données, etc.). En général en BD le nombre de paramètres est très grand, et les calculs de coûts trop complexes pour répondre de façon précise aux questions posées. Empiriquement En réalisant des implémentations de parties de schéma et en les soumettant à des tests de charge, en faisant varier des paramètres. Ce modèle d'évaluation est plus réaliste que le calcul théorique. Il faut néanmoins faire attention à ce que les simplifications d'implémentation faites pour les tests soient sans influence sur ceux-ci. 41 Stéphane Crozat - UTC L'optimisation 1.3. Indexation Définition : Index Un index est une structure de données qui permet d'accélérer les recherches dans une table en associant à une clé d'index (la liste des attributs indexés) l'emplacement physique de l'enregistrement sur le disque. Les accès effectuées sur un index peuvent donc se faire sur des structures optimisées pour la recherche (liste triée, B-tree...) au lieu de se faire par parcours séquentiel et intégral des enregistrements. Exemple Consulter une vidéo montrant la construction http://www.youtube.com/embed/coRJrcIYbF4 d'un index B-tree sur : Méthode : Cas d'usage des index de type B-Tree Les index doivent être utilisés sur les tables qui sont fréquemment soumises à des recherches. Ils sont d'autant plus pertinents que les requêtes sélectionnent un petit nombre d'enregistrements (moins de 25% par exemple). Les index doivent être utilisés sur les attributs : souvent mobilisés dans une restriction (donc une jointure) très discriminés (c'est à dire pour lesquels peu d'enregistrements ont les mêmes valeurs) rarement modifiés Attention : Inconvénients des index Les index diminuent les performances en mise à jour (puisqu'il faut mettre à jour les index en même temps que les données). Les index ajoutent du volume à la base de données et leur volume peut devenir non négligeable. Syntaxe : Créer un index en SQL 1 CREATE INDEX nom_index ON nom_table (NomColonneClé1, NomColonneClé2, ...); Remarque : Index implicites La plupart des SGBDSGBD- p.78 > créent un index pour chaque clé (primaire ou candidate). En effet la vérification de la contrainte d'unicité à chaque mise à jour des données justifie à elle seule la présence de l'index. * Attention : Attributs indexés utilisés dans des fonctions Lorsque les attributs sont utilisés dans des restrictions ou des tris par l'intermédiaire de fonctions, l'index n'est généralement pas pris en compte. L'opération ne sera alors pas optimisée. Ainsi par exemple dans le code suivant, le restriction sur X ne sera pas optimisée même s'il existe un index sur X. 1 SELECT * 2 FROM T 3 WHERE ABS(X) > 100 Cette non prise en compte de l'index est logique dans la mesure où, on le voit sur l'exemple précédent, une fois l'attribut soumis à une fonction, le classement dans l'index n'a plus forcément de sens (l'ordre des X, n'est pas l'ordre des valeurs absolues de X). Lorsqu'un soucis d'optimisation se pose, on cherchera alors à sortir les attributs indexés des fonctions. Notons que certains SGBD, tels qu'Oracle à partir de la version 8i, offrent des instructions d'indexation sur les fonctions qui permettent une gestion de l'optimisation dans ce cas particulier SQL2 SQL3, applications à OracleDelmal01- p.79 ¨ . * 42 Stéphane Crozat - UTC L'optimisation 1.4. Exercice Soit les deux tables créées par les instructions suivantes : 1 CREATE TABLE T2 ( 2 E char(10) Primary Key); 3 4 CREATE TABLE T1 ( 5 A number(5) Primary Key, 6 B number(2) Not Null, 7 C char(10) References T2(E), 8 D char(5)); Soit une requête dont on cherche à optimiser les performances : 1 SELECT A 2 FROM T1, T2 3 WHERE C=E AND Abs(B)>50 4 ORDER BY D; Sachant que tous les attributs sont très discriminés (c'est à dire que les enregistrements contiennent souvent des valeurs différentes les uns par rapport aux autres) et que les deux tables contiennent un grand nombre d'enregistrements, quelles sont les instructions de création d'index qui vont permettre d'optimiser l'exécution de cette requête ? CREATE INDEX idxA ON T1(A); CREATE INDEX idxB ON T1(B); CREATE INDEX idxC ON T1(C); CREATE INDEX idxD ON T1(D); CREATE INDEX idxE ON T2(E); 1.5. Dénormalisation Rappel La normalisation est le processus qui permet d'optimiser un modèle logique afin de le rendre non redondant. Ce processus conduit à la fragmentation des données dans plusieurs tables. Définition : Dénormalisation Processus consistant à regrouper plusieurs tables liées par des références, en une seule table, en réalisant statiquement les opérations de jointure adéquates. L'objectif de la dénormalisation est d'améliorer les performances de la BDBD- p.78 > en recherche sur les tables considérées, en implémentant les jointures plutôt qu'en les calculant. * Remarque : Dénormalisation et redondance La dénormalisation est par définition facteur de redondance. A ce titre elle doit être utilisée à bon escient et des moyens doivent être mis en œuvre pour contrôler la redondance créée. Méthode : Quand utiliser la dénormalisation ? Un schéma doit être dénormalisé lorsque les performances de certaines recherches sont insuffisantes et que cette insuffisance à pour cause des jointures. Attention : Inconvénients de la dénormalisation La dénormalisation peut également avoir un effet néfaste sur les performances : En mise à jour Les données redondantes devant être dupliquées plusieurs fois. En contrôle supplémentaire 43 Stéphane Crozat - UTC L'optimisation Les moyens de contrôle ajoutés (triggers, niveaux applicatifs, etc.) peuvent être très coûteux. En recherche ciblée Certaines recherches portant avant normalisation sur une "petite" table et portant après sur une "grande" table peuvent être moins performantes après qu'avant. Fondamental : Redondance et bases de données La redondance volontaire est autorisée dans une base de données à trois conditions : 1. avoir une bonne raison d'introduire de la redondance (améliorer des performances dans le cas de la dénormalisation) 2. documenter la redondance en explicitant les DF responsables de la non 3NF 3. contrôler la redondance par des mécanismes logiciels (triggers par exemple) 1.6. Les trois principes à respecter pour introduire de la redondance dans une base de données Fondamental La redondance volontaire est autorisée dans une base de données à condition de respecter trois principes : 1. il faut avoir une bonne raison d'introduire de la redondance (améliorer des performances dans le cas de la dénormalisation) 2. il faut documenter la redondance en explicitant les DFDF- p.78 > responsables de l'absence de 3NF 3. il faut contrôler la redondance par des mécanismes logiciels qui vont assurer que la redondance n'introduit pas d'incohérence (triggers par exemple) * 1.7. Exercice Soit les deux tables créées par les instructions suivantes : 1 CREATE TABLE T2 ( 2 C char(10) Primary Key, 3 E char(10)); 4 5 CREATE TABLE T1 ( 6 A char(10) Primary Key, 7 B char(10), 8 C char(10) References T2(C), 9 D char(10)); Parmi les instructions suivantes qui viendraient remplacer les deux créations précédentes, lesquelles implémenteraient une dénormalisation ? CREATE TABLE T3 ( B char(10) Primary Key, D char(10)); CREATE TABLE T2 ( C char(10) Primary Key, E char(10)); CREATE TABLE T1 ( A char(10) Primary Key, B char(10) References T3(B), C char(10) References T2(C)); 44 Stéphane Crozat - UTC L'optimisation CREATE TABLE T1 ( A char(10) Primary Key, B char(10), C char(10) Unique Not Null, D char(10), E char(10)); CREATE TABLE T1 ( A char(10) Primary Key, B char(10), C char(10), D char(10), E char(10)); CREATE TABLE T5 ( E char(10) Primary Key); CREATE TABLE T4 ( D char(10) Primary Key); CREATE TABLE T3 ( B char(10) Primary Key); CREATE TABLE T2 ( C char(10) Primary Key, E char(10) References T5(E)); CREATE TABLE T1 ( A char(10) Primary Key, B char(10) References T3(B), C char(10) References T2(C), D char(10) References T4(D)); 1.8. Partitionnement de table Définition : Partitionnement de table Le partitionnement d'une table consiste à découper cette table afin qu'elle soit moins volumineuse, permettant ainsi d'optimiser certains traitements sur cette table. On distingue : Le partitionnement vertical, qui permet de découper une table en plusieurs tables, chacune ne possédant qu'une partie des attributs de la table initiale. Le partitionnement horizontal, qui permet de découper une table en plusieurs tables, chacune ne possédant qu'une partie des enregistrements de la table initiale. Définition : Partitionnement vertical Le partitionnement vertical est une technique consistant à implémenter des projections d'une table T sur des tables T1, T2, etc. en répétant la clé de T dans chaque Ti pour pouvoir recomposer la table initiale par jointure sur la clé (Bases de données : objet et relationnelGardarin99- p.79 ¨ ). * Remarque Ce découpage équivaut à considérer l'entité à diviser comme un ensemble d'entités reliées par des 45 Stéphane Crozat - UTC L'optimisation associations 1:1. Méthode : Cas d'usage du partitionnement vertical Un tel découpage permet d'isoler des attributs peu utilisés d'autres très utilisés, et ainsi améliore les performances lorsque l'on travaille avec les attributs très utilisés (la table étant plus petite). Cette technique diminue les performances des opérations portant sur des attributs ayant été répartis sur des tables différentes (une opération de jointure étant à présent requise). Le partitionnement vertical est bien entendu sans intérêt sur les tables comportant peu d'attributs. Définition : Partitionnement horizontal Technique consistant à diviser une table T selon des critères de restriction en plusieurs tables T1, T2... et de telle façon que tous les tuples de T soit conservés. La table T est alors recomposable par union sur les Ti (Bases de données : objet et relationnelGardarin99- p.79 ¨ ). * Méthode : Cas d'usage Un tel découpage permet d'isoler des enregistrements peu utilisés d'autres très utilisés, et ainsi améliore les performances lorsque l'on travaille avec les enregistrements très utilisés (la table étant plus petite). C'est le cas typique de l'archivage. Un autre critère d'usage est le fait que les enregistrements soient toujours utilisés selon un partitionnement donné (par exemple le mois de l'année). Cette technique diminue les performances des opérations portant sur des enregistrements ayant été répartis sur des tables différentes (une opération d'union étant à présent requise). Le partitionnement horizontal est bien entendu sans intérêt sur les tables comportant peu d'enregistrements. 1.9. Exercice Soit la table suivante contenant des listes de références produits : 1 CREATE TABLE Tref ( 2 ref1 char(100) Primary Key, 3 ref2 char(100) Unique Not Null, 4 ref3 char(100) Unique Not Null, 5 ref4 char(100) Unique Not Null, 6 ref5 char(100) Unique Not Null, 7 ref6 char(100) Unique Not Null, 8 ref7 char(100) Unique Not Null); On cherche à optimiser la requête suivante ("_" et "%" sont des jokers qui signifient respectivement "1 caractère quelconque" et "0 à N caractères quelconques") : 1 SELECT ref1 2 FROM Tref 3 WHERE (ref2 like 'REF42%' or ref2 like 'REF__7%' or ref2 like 'REF_78%'); Quelles sont les opérations de partitionnement qui permettront d'optimiser cette requête de façon maximale (indépendamment des conséquences pour d'éventuelles autres requêtes) ? Un partitionnement horizontal Un partitionnement vertical 1.10. Vues concrètes Un moyen de traiter le problème des requêtes dont les temps de calcul sont très longs et les fréquences de mise à jour faible est l'utilisation de vues concrètes. Définition : Vue concrète Une vue concrète est un stockage statique (dans une table) d'un résultat de requête. 46 Stéphane Crozat - UTC L'optimisation Un accès à une vue concrète permet donc d'éviter de recalculer la requête et est donc aussi rapide qu'un accès à une table isolée. Il suppose par contre que les données n'ont pas été modifiées (ou que leur modification est sans conséquence) entre le moment où la vue a été calculée et le moment où elle est consultée. Une vue concrète est généralement recalculée régulièrement soit en fonction d'un événement particulier (une mise à jour par exemple), soit en fonction d'un moment de la journée ou elle n'est pas consultée et où les ressources de calcul sont disponibles (typiquement la nuit). Synonymes : Vue matérialisée Complément : Voir aussi Vue matérialisée sous Oracle - p.74 * 1.11. Exercice : Film concret Soit le schéma relationnel suivant : 1 Film (#isan:char(33), titre:varchar(25), entrees:integer, nomReal=>Realisateur(nom), prenomReal=>Realisateur(prenom)) 2 Realisateur (#nom:varchar(25), #prenom:varchar(25), ddn:date) Soit la requête suivante portant sur ce schéma implémenté sous PostgreSQL : 1 SELECT f.titre AS film, r.ddn AS real 2 FROM Film f, Realisateur r 3 WHERE f.nomReal=r.nom AND f.prenomReal=r.prenom Question Proposer une optimisation de cette requête sous la forme de la vue matérialisée vTopFilms. 1.12. Exercice : Super-lents [10 minutes] L'entreprise GARVEL propose des figurines de super-héros à acheter en ligne sur un site Internet adossé à sa base de données. Son catalogue a atteint cette année le million de modèles. Depuis quelques temps, et la récente forte augmentation des modèles au catalogue, les performances des consultations ont beaucoup chuté, entraînant des temps d'accès lents (plusieurs secondes) et une baisse des actes d'achat. La requête la plus utilisée par l'application Web sert à lister tous les super-héros avec toutes leurs caractéristiques, avec leurs véhicules et leurs repaires (et également toutes leurs caractéristiques) et à la trier par ordre de prix. Modèle UML Figurines GARVEL 47 Stéphane Crozat - UTC L'optimisation Soyez concis et précis dans vos réponses ; La bonne mobilisation des concepts du domaine et la clarté de la rédaction seront appréciées. Question 1 Expliquer pourquoi cette requête peut poser des problèmes de performance, lorsque la base comprend de nombreux enregistrements. Question 2 Proposer et justifier une première solution d'optimisation à mettre en œuvre qui sera utile dans tous les cas et n'aura que peu d'effets indésirables. Puis, expliquer pourquoi le passage en relationnel-objet de la base de données, combiné à la solution précédente, peut améliorer considérablement les performances. Question 3 Proposer deux solutions alternatives qui, si l'on reste en relationnel, permettraient d'améliorer considérablement les performances. Vous en poserez les avantages, inconvénients et les mesures à prendre pour contenir ces inconvénients. 1.13. Complément : Groupement de tables Définition : Groupement de table Un groupement ou cluster est une structure physique utilisée pour stocker des tables sur lesquelles doivent être effectuées de nombreuses requêtes comprenant des opérations de jointure. Dans un groupement les enregistrements de plusieurs tables ayant une même valeur de champs servant à une jointure (clé du groupement) sont stockées dans un même bloc physique de la mémoire permanente. Cette technique optimise donc les opérations de jointure, en permettant de remonter les tuples joints par un seul accès disque. Définition : Clé du groupement Ensemble d'attributs précisant la jointure que le groupement doit optimiser. Syntaxe : Syntaxe sous Oracle Il faut d'abord définir un groupement, ainsi que les colonnes (avec leur domaine), qui constituent sa clé. On peut ainsi ensuite, lors de la création d'une table préciser que certaines de ses colonnes appartiennent au groupement. 1 CREATE CLUSTER nom_cluster (NomColonneClé1 type, NomColonneClé2 type, ...); 2 3 CREATE TABLE nom_table (...) 4 CLUSTER nom_cluster (Colonne1, Colonne2, ...); Remarque Le clustering diminue les performances des requêtes portant sur chaque table prise de façon isolée, puisque les enregistrements de chaque table sont stockés de façon éclatée. Remarque : Groupement et dénormalisation Le groupement est une alternative à la dénormalisation, qui permet d'optimiser les jointures sans créer de redondance. 48 Stéphane Crozat - UTC L'optimisation 2. Mécanismes d'optimisation des moteurs de requêtes Objectifs Comprendre les principes de fonctionnement du moteur d'optimisation interne aux SGBD 2.1. Exercice : Calcul du coût d'une requête Soit deux relations t1(a:char(8),b:integer) et t2(b:integer) de respectivement 100 et 10 lignes. Soit la requête SELECT * FROM t1 INNER JOIN t2 ON t1.b=t2.b WHERE t2.b=1. Soit n1 le nombre de tuples tels que b=1 dans t1 ; n1 [0..100] Soit n2 le nombre de tuples tels que b=1 dans t2 ; n2 [0..10] Soit n3 le nombre de tuples tels que t1.b=t2.b ; : n3 [0..1000] Question 1 Il existe plusieurs façons de traduire cette requête en algèbre relationnel, proposer quelques exemples. Question 2 Calculer le nombre d'instructions de chaque exemple d'expression relationnelle : en considérant que les restrictions sont effectuées par un parcours intégral dans des listes non triées (comme si c'était effectué avec des boucles de type FOR) ; en considérant que chaque opération est effectuée séparément. Effectuer les calculs pour trois valeurs de n1,n2 et n3 (une valeur minimum, une valeur maximum et une valeur intermédiaire). Donner un intervalle [min..max] indépendant de n1, n2 et n3. Question 3 Conclure en indiquant quelle opération nécessite le moins d'instructions. 2.2. Principe de l'optimisation de requêtes L'exécution d'une requête SQL suit les étapes suivantes : 1. Analyse syntaxique : Vérification de la correction syntaxique et traduction en opérations algébriques 2. Contrôle : Vérification des droits d'accès 3. Optimisation : Génération de plans d'exécution et choix du meilleur 4. Exécution : Compilation et exécution du plan choisi Définition : Plan d'exécution L'analyse de la requête permet de produire un arbre d'opérations à exécuter. Or il est possible de transformer cet arbre pour en obtenir d'autres équivalents, qui proposent des moyens différents pour arriver au même résultat, on parle de différents plans d'exécution. Définition : Optimisation de la requête L'optimisation de la requête est une opération informatique visant à réécrire l'arbre d'exécution de la requête en vue de choisir le plan d'exécution le plus performant. 49 Stéphane Crozat - UTC L'optimisation 2.3. Techniques pour l'optimisation de requêtes Restructuration algébrique Il existe des propriétés permettant de modifier l'ordre des opérateurs algébriques, afin d'obtenir des gains de performance par exemple : Le groupage des restrictions : Il permet d'effectuer plusieurs restrictions en un seul parcours de la table, au lieu d'un par restriction Restriction (Restriction (t,x=a), x=b) <=> Restriction (t,x=a ET x=b) La commutativité des restrictions et Jointures : Elle permet d'appliquer les restrictions avant les jointures L'associativité des jointures : Elle permet de changer l'ordre des jointures, afin d'utiliser des algorithmes plus performants dans certains cas ... Heuristiques d'optimisation Le moteur d'optimisation de la base de données va poser des règles de réécriture pour produire des arbres d'exécutions et choisir les moins coûteux. Il va typiquement appliquer d'abord les opérations réductrices (restrictions et projections). informations statistiques (modèle de coût) Une des actions du moteur est d'ordonner les jointures (et les opérations ensemblistes) afin de : traiter le moins de tuples possibles ; mobiliser les index existants au maximum ; utiliser les algorithmes les plus performants. Pour cela le moteur d'optimisation a besoin de connaître le contenu de la BD : nombre de tuples dans les tables, présence ou non d'index, ... Le moteur de la BD met à sa disposition des informations statistiques répondant à ces besoins. 2.4. Collecte de statistiques pour le moteur d'optimisation Le moteur d'optimisation d'une BD a besoin de collecter des informations sur les tables qu'il a à manipuler afin de choisir les meilleurs plans d'exécution, sur la taille des tables typiquement. Il est nécessaire de commander au moteur de collecter ces statistiques lorsque des changements de contenu importants ont été effectués dans la BD. Syntaxe : PostgreSQL : Analyse d'une table 1 ANALYSE <table> ; Syntaxe : PostgreSQL : Analyse de toute la base 1 ANALYSE; Syntaxe : PostgreSQL : Récupération des espaces inutilisés et analyse de toute la base 1 VACUUM ANALYZE ; Complément : Exemple de données collectées nombre de lignes volume des données 50 Stéphane Crozat - UTC L'optimisation valeurs moyennes, minimales, maximales nombre de valeurs distinctes (indice de dispersion) nombre d'occurrences des valeurs les plus fréquentes (notamment pour les colonnes pourvues d'index...) http://sqlpro.developpez.com/cours/sqlaz/fondements/#L2.1 2.5. Jointures et optimisation de requêtes Algorithmes Il existe plusieurs algorithmes pour réaliser une jointure : Jointures par boucles imbriquées (nested loop) : chaque tuple de la première table est comparé à chaque tuple de la seconde table. Jointure par tri-fusion (sort-merge) : les deux tables sont d'abord triées sur l'attribut de jointure, puis elles sont fusionnées. Jointure par hachage (hash join) : les deux tables sont hachées, puis jointes par fragment. 3. Synthèse : L'optimisation Optimisation Modification du schéma interne d'une BD pour en améliorer les performances. Techniques au niveau physique Indexation Regroupement physique Vue concrète Techniques de modélisation Dénormalisation Partitionnement Horizontal Vertical 4. Bibliographie commentée sur l'optimisation Complément : Synthèses SQL2 SQL3, applications à OracleDelmal01- p.79 ¨ * Une bonne description des index (page 79) et clusters (page 81) par l'image. Une description intéressante d'une fonction (sous Oracle 8i) qui permet d'indexer des fonctions, ce qui répond à un problème important d'optimisation (page 84). Une description des vues matérialisées, leur implémentation sous Oracle, des exemples d'usage dans le domaine du datawarehouse. Bases de Données Relationnelles et Systèmes de Gestion de Bases de Données Relationnels, le Langage SQLw_supelec.fr/~yb - p.80 ¨ * Des informations générales sur les index et sur les clusters. 51 Stéphane Crozat - UTC Au delà des bases de données relationnelles Au delà des bases de données relationnelles IV Introduction aux datawarhouses 52 Introduction à XML 56 Introduction aux bases de données XML 59 Brève introduction aux bases de données NoSQL 62 1. Introduction aux datawarhouses Objectifs Comprendre ce qu'est et à quoi sert un datawarehouse. Comprendre les différences entre un datawarehouse et une base de données transactionnelle. 1.1. Présentation du décisionnel Définition Le système d'information décisionnel est un ensemble de données organisées de façon spécifiques, facilement accessibles et appropriées à la prise de décision [...]. La finalité d'un système décisionnel est le pilotage d'entreprise. Les systèmes de gestion sont dédiés aux métiers de l'entreprise [...]. Les systèmes décisionnels sont dédiés au management de l'entreprise [...]. (Goglin, 2001, pp21-22)- p.79 ¨ * Synonymes : informatique décisionnelle, business intelligence, BIBI- p.78 > * 52 Stéphane Crozat - UTC Au delà des bases de données relationnelles 1.2. Présentation du data warehousing Définition : Définition historique de Inmon A data warehouse is a subject-oriented, integrated, nonvolatile, and time-variant collection of data in support of management's decisions. The data warehouse contains granular corporate data. (Inmon, 2002, p31)- p.79 ¨ * Définition Un data warehouse (DWDW- p.78 > ) est une base de données construite par copie et réorganisation de multiples sources (dont principalement le système transactionnel de l'entreprise), afin de servir de source de données à des applications décisionnelles : * il agrège de nombreuses données de l'entreprise (intégration) ; il mémorise les données dans le temps (historisation) ; il les organise pour faciliter les requêtes de prise de décision (optimisation). (Goglin, 2001, p27)(Goglin, 2001)- p.79 ¨ * Synonymes : entrepôt de données, base de données décisionnelle Fondamental L'objectif du data warehouse est de permettre des requêtes sur de grands ensembles des données, la plupart du temps sous forme d'agrégats (GROUP BY) afin d'en obtenir une vision synthétique (propre à la prise de décision). Remarque Le data warehouse dédié au décisionnel est séparé du système transactionnel dédié à la gestion quotidienne. Complément : Voir aussi Data warehouse et data mart - p.66 * 1.3. Différence entre un DW et un système transactionnel BD transactionnelle Une base données classique est destinée à assumer des transactions en temps réel : Ajout, mise à jour suppression de données Questions sur des données identifiées ou questions statistiques Datawarehouse Un DWDW- p.78 > est uniquement destiné à l'exécution de questions statistiques sur des données statiques (ou faiblement dynamiques). * 53 Stéphane Crozat - UTC Au delà des bases de données relationnelles Un changement d'approche, extrait de (Inmon, 2002, p15) 1.4. Implémentation du DW avec un SGBDR Fondamental Les deux problématiques fondamentales des DWDW- p.78 > sont l'optimisation et la simplification : comment rester performant et lisible avec de très gros volumes de données et des requêtes portant sur de nombreuses tables (impliquant beaucoup de jointures) ? * On utilise massivement : Les vues concrètes : Un data warehouse procède par copie depuis le ou les systèmes transactionnels La dénormalisation : Un data warehouse est hautement redondant Fondamental Le caractère statique du data warehouse efface les inconvénients de ces techniques lorsqu'elles sont mobilisées dans des systèmes transactionnels. Rappel Dénormalisation - p.67 * Vues concrètes - p.75 * 1.5. Présentation de la modélisation en étoile Définition : Le modèle en étoile Le modèle en étoile est une représentation fortement dénormalisée qui assure un haut niveau de performance des requêtes même sur de gros volumes de données. 54 Stéphane Crozat - UTC Au delà des bases de données relationnelles Exemple Exemple de modèle dimensionnel en étoile Complément : Modèle en flocon Le modèle en flocon est aussi un modèle dénormalisé, mais un peu moins que le modèle en étoile : il conserve un certain niveau de décomposition pour chaque dimension prise isolément. Complément : Voir aussi Modélisation en flocon - p.73 * 1.6. L'ETL Définition : ETL L'ETL (Extraction Transformation Loading) est le processus de copie des données depuis les tables des systèmes transactionnels vers les tables du modèle en étoile du data warehouse. Exemple Exemple de modèle dimensionnel en étoile Remarque Les tables du modèle dimensionnel peuvent être vues comme des vues concrètes sur le systèmes transactionnel, à la nuance que des transformations (correction d'erreur, extrapolation...) peuvent avoir été apportées dans le processus ETL. 1.7. SGBD orientés décisionnel Il est possible d'utiliser une base relationnelle classique pour implémenter un entrepôt de données modélisé en étoile (c'est même aujourd'hui encore la forme la plus largement mobilisée). 55 Stéphane Crozat - UTC Au delà des bases de données relationnelles Il existe également des technologies dédiées (qui s'appuient généralement in fine sur une base relationnelle). Les principes de modélisation dimensionnels sont indépendants de la technologie choisie pour l'implémentation. Définition : Bases de données massivement parallèles SGBD capable de faire exécuter une requête par plusieurs machines en parallèle, afin d'en accélérer le traitement. Exemple : Teradata SGBD OS dédié (Unix) Machines dédiées Complément Entrepôts de données : guide pratique de modélisation dimensionnelle(Kimbal, Ross, 2003)- p.79 ¨ , Voir p.14. * 2. Introduction à XML 2.1. Définition du XML Définition : XML L'eXtensible Markup Language XMLw_w3c.org/XML- p.80 ¨ est un méta-langage permettant de définir des langages à balises. * Il standardisé comme une recommandation par le W3CW3C- p.78 > depuis 1998. * Exemple LaTeX et HTML sont des langages à balises (mais ce ne sont pas des langages XML) XHTML est un langage XML Fondamental En tant que méta-langage XML sert à définir des formats informatiques, c'est à dire des façons de représenter de l'information. Les bonnes caractéristiques d'XML - non-ambiguïté, lisibilité, passivité - en font un très bon candidat pour de très nombreux usages, il est donc utilisé dans des secteurs très variés de l'informatique. On distingue généralement deux grandes catégories d'utilisation : les langages orientés données et les langages orientés documents. Complément : Versions de XML La version historique de XML est la version 1.0, qui reste aujourd'hui la plus largement utilisée. Il existe également une version 1.1 de XML, qui propose des différences mineures et nécessaires uniquement dans des contextes particuliers. Cette nouvelle version a été nécessaire pour des raisons de compatibilité des outils existants. Les évolutions principales de XML 1.1 sont de nouveaux caractères permis pour les noms d'éléments (pour suivre l'évolution d'Unicode depuis 1998), de nouvelles conventions pour les caractères de fin de ligne (pour la compatibilité avec des ordinateurs main frame) et de nouveaux caractères de contrôle dans le contenu. Complément : Voir aussi XML : Un langage à balise - p.75 * XML : un méta-langage - p.76 * 56 Stéphane Crozat - UTC Au delà des bases de données relationnelles Langages XML orientés données - p.72 * Langages XML orientés documents - p.71 * Caractéristiques recherchées pour un format XML - p.66 * 2.2. Exemple : Un document XML Exemple : Un mail 1 <?xml version='1.0' encoding='iso-8859-1'?> 2 <mail> 3 <de>[email protected]</de> 4 <a>[email protected]</a> 5 <objet>Demande d'information</objet> 6 <date>01-03-2001</date> 7 <corps> 8 <paragraphe>Bonjour Fabrice,</paragraphe> 9 <paragraphe>Peux tu m'expliquer ce qu'est le langage XML ?</paragraphe> 10 <paragraphe>Il me faudrait en effet ton avis éclairé sur le sujet.</paragraphe> 11 <paragraphe>J'attends ta réponse, à bientôt</paragraphe> 12 </corps> 13 </mail> 2.3. Document bien formé Définition Un document est dit bien formé lorsqu'il respecte les règles syntaxiques du XMLXML- p.78 > . * Fondamental XMLXML- p.78 > ne pose pas de sémantique à priori mais uniquement des règles syntaxiques. * Syntaxe Les règles syntaxiques à respecter sont : Il n'existe qu'un seul élément père par document, cet élément contenant tous les autres. Il est également appelé racine. Tout élément fils est inclus complétement dans son père (pas d'éléments croisés). Attention XML ne définit pas le comportement ni la manière dont doit être traité un document, mais uniquement un format. 2.4. Balise Définition : Balise Les balises sont les composants fondamentaux permettant l'écriture de documents XMLXML- p.78 > . * Elles se distinguent du contenu en utilisant les caractères <, > et /. Elles n'ont pas de présentation ou de signification définie par le langage mais elles auront un sens pour les applications et/ou le lecteur. Syntaxe Il existe trois types de balises : balise d'ouverture : <nom_balise> balise de fermeture : </nom_balise> balise vide : <nom_balise/> 57 Stéphane Crozat - UTC Au delà des bases de données relationnelles Exemple : Exemple de balise XML 1 <adresse>12, rue de Paris</adresse> 2.5. Notion de document valide Définition : Schéma Un schéma est une description de la structure que doit respecter un document lui faisant référence, c'est à dire qu'il établit la liste des éléments XML autorisés (avec leurs attributs), ainsi que l'agencement possible de ces éléments. On parle aussi de grammaire, au sens où le schéma définit l'enchaînement autorisé des balises et vient en complément de la syntaxe XML (qui elle est indépendante d'un schéma particulier). Définition : Document valide Un document XMLXML- p.78 > bien formé est dit valide pour un schéma donné s'il respecte les règles structurelles imposées par ce schéma. * Ce contrôle de la structure permet : De s'assurer l'homogénéité structurelle des documents de même type. Le traitement automatique d'un ensemble de documents de même type (mise en forme, stockage, extraction d'informations...). La création de formats standard et leur respect. Exemple : Exemples de langages de schéma Il existe plusieurs langages de définition schéma, mais les trois principaux sont : Document Type Définition (W3C) : Un langage hérité de SGML qui fait partie du standard XML W3C XML Schema (W3C) : Une alternative aux DTD destiné à moderniser et compléter ce langage historique Relax NG (OASIS, ISO) : Une autre alternative, compromis entre W3C XML Schema et DTD 2.6. Document Type Definition Le formalisme de définition de schéma DTD est le premier qui a été introduit dès la première version du standard XML. Il est en fait intégré au standard W3C de XML. Il est directement hérité de la norme SGML. Les DTDs utilisent un langage spécifique (non XML) pour définir les règles structurelles. Un fichier de DTD peut contenir principalement deux types de déclarations : des déclarations d'éléments, indiquent les éléments pouvant être inclus dans un document et l'organisation du contenu de chaque élément (éléments fils ou texte). des déclarations d'attributs, définissent les attributs pouvant être associés à un élément ainsi que leur type. Exemple : Exemple de DTD 1 <!ELEMENT document (paragraphe+)> 2 <!ATTLIST document type CDATA #REQUIRED> 3 <!ELEMENT paragraphe (#PCDATA)> Exemple : Exemple de document XML valide 1 <?xml version='1.0' encoding='iso-8859-1'?> 2 <!DOCTYPE document SYSTEM "document.dtd"> 58 Stéphane Crozat - UTC Au delà des bases de données relationnelles 3 <document type='memo'> 4 <paragraphe>Xxxxxxxxx</paragraphe> 5 <paragraphe>Xxxxxxxxx</paragraphe> 6 <paragraphe>Xxxxxxxxx</paragraphe> 7 </document> 8 3. Introduction aux bases de données XML 3.1. XML comme format d'échange XML est un excellent candidat à l'échange de données entre bases de données Il est plus explicite que CSV (balises) Il y a une correspondance possible entre schéma XML et schéma de base de données ( mapping) Il permet d'exporter des données relationnel-objet (arborescence) Il est plus verbeux, mais en général ce n'est pas un problème (sauf optimisation des transferts) 3.2. Stocker du XML en BD SGBDR ou RO 1. Mapping XML-Relationnel (en 1NF) Chaque élément XML est extrait et stocké dans un attribut Fonctionne pour les schémas simples, engendre des schémas très complexes et très fragmentés sinon, et la chute des performances 2. En BLOB Les contenus XML sont stockés en BLOB (ou CLOB) Des attributs dérivés de description peuvent être automatiquement extraits Les BD n'est plus en 1NF, mais des fonctions de parsing fournies par le SGBD XML peuvent redonner accès à l'intérieur du contenu XML Redondance entre les attributs dérivés et le BLOB, mais les attributs peuvent être recalculés à chaque mise à jour du contenu XML (ou implémentés comme des méthodes en RO) Bases XML natives Basées sur un modèle logique de document XML et non plus un niveau logique relationnel Stockage physique spécifique (fichier XML, DOM persistant, ...) Gestionnaire offrant une logique transactionnelle orientée document XML Langage d'interrogation propre : XPath, XSL-XSLT, XQuery Plutôt pour les documents (volumineux) que les données Exemple : eXists Base de données native XML Open Source http://exist.sourceforge.net/ 59 Stéphane Crozat - UTC Au delà des bases de données relationnelles Exemple : Requête XQuery The MONDIAL Database - http://www.dbis.informatik.uni-goettingen.de/Mondial/mondial.xml 1 let $country := /mondial/country[name = 'France'] 2 for $province in $country/province 3 order by $province/name 4 return $province/name 60 Stéphane Crozat - UTC Au delà des bases de données relationnelles http://demo.exist-db.org/exist/sandbox/ Complément http://peccatte.karefil.com/software/RBourret/xmlBD.htm 61 Stéphane Crozat - UTC Au delà des bases de données relationnelles 3.3. Introduction à XPath Définition : Expression XPath XPath est un langage d'expressions permettant de pointer sur n'importe quel élément d'un arbre XML depuis n'importe quel autre élément de l'arbre. Une expression XPath peut-être absolue (sa résolution est indépendante d'un contexte ou nœud courant : elle commence dans ce cas par /. Une expression XPath peut-être relative (sa résolution est dépendante d'un contexte ou nœud courant : elle ne commence dans ce cas pas par /, elle peut commencer par ./ (syntaxe développée). Fondamental Une expression XPath renvoie un node-set, ou ensemble de nœuds, c'est à dire un sous-arbre de l'arbre du document une chaîne de caractères un booléen un réel Exemple : Exemples d'expressions XPath 1 /document/entete/identification/titre 2 /document/@modele 3 corps//contenu 4 contenu/* 5 contenu/remarque[1] 6 ../paragraphe 7 @type Complément : Types de nœuds XPath root nodes element nodes text nodes attribute nodes namespace nodes processing instruction nodes comment nodes http://www.w3.org/TR/xpath/#data-model Complément Pour une introduction à XPath : Brillant07Brillant07- p.79 ¨ pp.123-129 * 4. Brève introduction aux bases de données NoSQL Définition Le NoSQL regroupe de nombreuses bases de données, récentes pour la plupart, qui se caractérisent par une logique de représentation de données non relationnelle et qui n'offrent donc pas une interface de requêtes en SQL. Attention NoSQL signifie Not Only SQL et non pas No SQL, il s'agit de compléments aux SGBDR pour des besoins spécifiques et non de solutions de remplacement. 62 Stéphane Crozat - UTC Au delà des bases de données relationnelles Exemple BD BD BD BD orientée orientée orientée orientée clé-valeur graphe colonne document (BD XML) Complément http://blog.xebia.fr/2010/04/21/nosql-europe-tour-dhorizon-des-bases-de-donnees-nosql/ 63 Stéphane Crozat - UTC Ouvrage de référence conseillé Ouvrage de référence conseillé V SQL2 SQL3, applications à OracleDelmal01- p.79 ¨ * Cet ouvrage aborde tous les thèmes du cours de façon claire et illustrée, en dehors de la phase de modélisation. 64 Stéphane Crozat - UTC Ressources annexes Contenus annexes > Architecture des chaînes éditoriales XML Architecture classique Graphique 1 Architecture classique d'une chaîne éditoriale XML L'approche classique pour réaliser une chaîne éditoriale XML est la suivante : 1. Formalisation du schéma documentaire, avec un langage de modélisation de schéma XML (XML Schema, Relax NG, etc.) 2. Utilisation d'un éditeur XML standard et stylage de cet éditeur (il existe de très nombreux éditeurs XML, plus ou moins graphiques, qui se paramètrent automatiquement lorsqu'on leur fournit un schéma : Oxygen, XMetal, Epic Arbortext, etc.). 3. Utilisation de serveurs de fichiers XML pour la gestion centralisée des contenus (pour les projets les plus importants surtout). 4. Réalisation de moteurs de transformation avec les technologies XSL-XSLT, combinées avec des langages de rendu ( XSL-FOXSL-FO- p.77 § pour le papier, XHTML pour l'écran, etc.) * L'ensemble est en général intégré avec un langage applicatif tiers (Java, PHP, etc.). > Balises et poignées de calcul L'ingénierie documentaire met à profit deux thèses complémentaires : le contenu est numérisé dans sa forme signifiante : il est manipulable par la machine mais indépendamment du sa signification qui lui reste inaccessible ; le contenu est enrichi par des balises qui sont connues syntaxiquement et sémantiquement par la machine ; elle sait quoi en faire. Fondamental Le principe du balisage consiste à enrichir un contenu numérisé (dans sa forme sémiotique), sans l'altérer, pour lui ajouter des poignées qui vont être manipulables par l'ordinateur (logiquement). 65 Stéphane Crozat - UTC Contenus annexes Remarque Le contenu est donc interprétable par l'homme et la machine, chacun via ce qui lui est destiné : l'humain interprète le contenu signifiant numérisé ; la machine interprète les balises ; Exemple : XML XML est une illustration de ce principe, puisque l'on va coupler une information sémiotique (texte, image, etc.) destinée à l'interprétation humaine, avec un ensemble de balises qui permettent de décrire formellement une structure documentaire qui sera alors manipulable par le calcul. > Caractéristiques recherchées pour un format XML Fondamental : Non ambiguïté Les règles syntaxiques strictes d'XML rendent son interprétation informatique univoque. Fondamental : Lisibilité Un format XML a pour objectif d'être lisible par un être humain, afin de plus facilement en appréhender le langage. Fondamental : Passivité Un format XML est passif, il dépend de programmes informatiques qui le transforment. > Data warehouse et data mart Un data warehouse et un data mart se distinguent par le spectre qu'il recouvre : Le data warehouse recouvre l'ensemble des données et problématiques d'analyse visées par l'entreprise. Le data mart recouvre une partie des données et problématiques liées à un métier ou un sujet d'analyse en particulier Un data mart est fréquemment un sous-ensemble du data warehouse de l'entreprise, obtenu par extraction et agrégation des données de celui-ci. Graphique 2 Datawarehouse et datamarts 66 Stéphane Crozat - UTC Contenus annexes Pourquoi des data marts ? Les data marts sont destinés à pré-agréger des données disponibles de façon plus détaillée dans les data warehouse, afin à traiter plus facilement certaines questions spécifiques, critiques, etc. Exemple : Ticket de caisse Si un data warehouse enregistre un ensemble de ventes d'articles avec un grain très fin, un data mart peut faciliter une analyse dite de ticket de caisse (co-occurrence de ventes de produits par exemple) en adoptant un grain plus grossier (le ticket plutôt que l'article). Complément : Ticket de caisse L a l e c t u r e d e Entrepôts de données : guide pratique de modélisation dimensionnelle(Kimbal, Ross, 2003)- p.79 ¨ est recommandée pour la modélisation dimensionnelle des tickets de caisse (en particulier pages 31-60 sur la grande distribution). * > Définition de XSL-XSLT Définition : XSL-XSLT XSL-XSLT est une partie du standard W3C XSL qui a trait à la transformation des documents XML (l'autre partie étant XSL-FO). XSL-XSLT est un langage de programmation déclaratif écrit en XML (un programme XSL-XSLT est un document XML). XSL-XSLT est langage de manipulation de document XML (fondé sur XPath et sur le modèle arborescent de représentation des documents XML) XSl-XSLT est utilisé pour transformer un document XML source dans un autre format, typiquement HTML, mais aussi tout autre format codé sur des caractères dont la syntaxe est connue. XSL-XSLT est aussi utilisé pour faire des changements de schéma XML (export d'un XML vers un autre XML structuré différemment) par exemple pour échanger des données selon un standard. Remarque : XSL-XSLT, XSL-FO, XSLT, XSL, FO On parle souvent (par simplification) de XSL ou de XSLT pour désigner XSL-XSLT et de FO pour désigner XSL-FO. XSL utilisé seul désigne donc par convention XSL-XST (et non XSL-FO). > Dénormalisation Rappel La normalisation est le processus qui permet d'optimiser un modèle logique afin de le rendre non redondant. Ce processus conduit à la fragmentation des données dans plusieurs tables. Définition : Dénormalisation Processus consistant à regrouper plusieurs tables liées par des références, en une seule table, en réalisant statiquement les opérations de jointure adéquates. L'objectif de la dénormalisation est d'améliorer les performances de la BDBD- p.78 > en recherche sur les tables considérées, en implémentant les jointures plutôt qu'en les calculant. * Remarque : Dénormalisation et redondance La dénormalisation est par définition facteur de redondance. A ce titre elle doit être utilisée à bon escient et des moyens doivent être mis en œuvre pour contrôler la redondance créée. 67 Stéphane Crozat - UTC Contenus annexes Méthode : Quand utiliser la dénormalisation ? Un schéma doit être dénormalisé lorsque les performances de certaines recherches sont insuffisantes et que cette insuffisance à pour cause des jointures. Attention : Inconvénients de la dénormalisation La dénormalisation peut également avoir un effet néfaste sur les performances : En mise à jour Les données redondantes devant être dupliquées plusieurs fois. En contrôle supplémentaire Les moyens de contrôle ajoutés (triggers, niveaux applicatifs, etc.) peuvent être très coûteux. En recherche ciblée Certaines recherches portant avant normalisation sur une "petite" table et portant après sur une "grande" table peuvent être moins performantes après qu'avant. Fondamental : Redondance et bases de données La redondance volontaire est autorisée dans une base de données à trois conditions : 1. avoir une bonne raison d'introduire de la redondance (améliorer des performances dans le cas de la dénormalisation) 2. documenter la redondance en explicitant les DF responsables de la non 3NF 3. contrôler la redondance par des mécanismes logiciels (triggers par exemple) > Documents structurés et documents formatés Définition : Document formaté On appelle document formaté un document dont le fichier informatique source décrit la façon de le mettre en forme. C'est la façon la plus courante de traiter avec les documents informatiques, telle qu'elle est mise en œuvre dans les traitements de texte ou sur le Web avec HTML. Un document formaté nécessite un logiciel capable d'en interpréter le format pour permettre de le lire. XML est un excellent candidat à la sérialisationSérialisation- p.77 § de documents formatés. * Exemple : Document formaté (format OpenDocument : extrait simplifié ) 1 <document-content> 2 <automatic-styles> 3 <style name="P1" family="paragraph"><text-properties font-name="Times New Roman" fo:font-size="12pt"/></style> 4 <style name="P2" family="paragraph"><text-properties font-name="Times New Roman" fo:font-size="16pt" fo:font-weight="bold"/></style> 5 <style name="P3" family="paragraph"><paragraph-properties fo:text-align="center"/><text-properties font-name="Times New Roman" fo:font-size="18pt" fo:font-weight="bold" /></style> 6 <style name="P4" family="paragraph"><text-properties font-name="Times New Roman" fo:font-size="12pt" fo:font-style="italic"/></style><style name="T1" family="text"><text-properties font-name="Verdana"/></style> 7 </automatic-styles> 8 <body> 9 <text> 10 <p style-name="P2">As We May Think</p> 11 <p style-name="P1"><span style-name="T1">By Vannevar Bush</span></p> 12 <p style-name="P4">As Director of the Office of Scientific Research and Development, Dr. Vannevar Bush ...</p> 13 <p style-name="P1">This has not been a scientist's war ...</p> 14 <p style-name="P3">1</p> 15 <p style-name="P1">Of what lasting benefit has been man's use of science ...</p> 68 Stéphane Crozat - UTC Contenus annexes 16 <p style-name="P3">2</p> 17 <p style-name="P1">A record if it is to be useful to science 18 </text> 19 </body> 20 </document-content> ...</p> Visualisation dans OpenOffice.org Writer de l'extrait de l'article "As We May Think" Définition : Notion de documents structurés On appelle document structuré un document dont la structure logique est décrite plutôt que la mise en forme physique (Structured documentsAndré89- p.79 ¨ , p.7). * Après SGML qui avait été inventé pour cela, XML est aujourd'hui le candidat quasi-unique pour la réalisation de documents structurés. Exemple : Document structuré (format DocBook, légèrement simplifiée) 1 <article xmlns="http://docbook.org/ns/docbook"> 2 <info> 3 <title>As we may think</title> 4 <author><personname>Vannevar Bush</personname></author> 5 </info> 6 <epigraph><para>As Director of the Office of Scientific Research and Development, Dr. Vannevar Bush ...</para></epigraph> 7 <para>This has not been a scientist's war ...</para> 8 <sect1> 9 <para>Of what lasting benefit has been man's use of science ...</para> 10 </sect1> 11 <sect1> 12 <para>A record if it is to be useful to science ...</para> 13 </sect1> 14 </article> Définition : Transformation des documents structurés Un document structuré n'est pas destiné à être directement utilisé pour la lecture humaine, il doit être d'abord transformé dans un document formaté pour être utilisé (visualisé, imprimé, ...). 69 Stéphane Crozat - UTC Contenus annexes Processus de transformation d'un document structuré en document formaté Remarque : Chaîne XML complète La technologie XML peut en fait être utilisée tout au long de la chaîne : Langage XML orienté document structuré en amont (DocBook, DITA, TEI, langage local, ...) Langage XML de programmation pour la transformation (XSL-XSLT) Langage XML orienté document formaté pour l'aval (OpenDocument, XHTML, ...) Complément : Voir aussi La structuration logique - p.72 * Exemple de structuration logique - p.70 * Architecture des chaînes éditoriales XML - p.65 * Un langage pour publier les documents XML - p.74 * Définition de XSL-XSLT - p.67 * Complément : Bibliographie Technologie de la GED(Dupoirier, 1995)- p.79 ¨ : Structure logique et structure physique (pp58-61) * > Exemple de structuration logique Exemple : Un exercice structuré logiquement Soit la structuration logique d'un exercice : 1 2 3 4 5 6 Exercice avec Enonce = Question Indice = Solution = {Enonce, Question, Indice, Solution} Soit un triangle rectangle disposant d'un angle de 30 degrés. = Donner la valeur des autres angles du triangle. La somme des angles d'un triangle est égale à 180 degrés. = 90 et 60 degrés. Il est possible à partir de cette représentation de calculer différentes présentations. Pour l'écran on peut générer une présentation HTML, en laissant la solution en hyperlien cliquable. Pour le papier on peut générer une présentation PDF, en affichant la solution sur une page séparée de l'énoncé. Pour un usage multimédia on pourra générer une présentation SMIL, avec affichage de l'énoncé, lecture de la question, et affichage de la solution après un temps de pause. Notons que si l'on avait choisi une des représentations physiques, plutôt que la représentation logique, il n'aurait pas été possible de générer les autres représentations. 70 Stéphane Crozat - UTC Contenus annexes Exemple : Un exercice mis en forme Soit la mise en forme en HTML du même exercice : 1 2 3 4 5 6 7 8 <HTML> <BODY> Soit un triangle rectangle disposant d'un angle de 30 degrés. </BR> <B> Donner la valeur des autres angles du triangle. </B> </BR> <A HREF="ex001i01.html"> Vous avez besoin d'aide ? </A> </HR> <A HREF="ex001s01.html"> Vérifier votre réponse ! </A> </BODY> </HTML> On voit que dans ce format la structure logique n'apparaît plus explicitement et qu'il n'est plus possible d'identifier l'énoncé, la question et la solution sans comprendre le contenu. Fondamental L'exemple montre que l'on peut calculer la mise en forme à partir de la structure logique, mais non l'inverse. > Langages XML orientés documents Définition Ils permettent de représenter informatiquement des documents numériques. Les formats de documents faisant appel à des représentations fortement arborescentes, XML est un candidat idéal pour cet usage. En fait SGML, l'ancêtre de XML, a été inventé pour l'informatique documentaire. Aujourd'hui la très grande majorité des formats de représentation de document sont en XML. Définition : Langages XML orienté documents formatés Ils définissent des formats de mise en forme de document (structure physique), en général pour un support donné. Exemple : Langages XML orientés documents formatés XHTML XSL-FO SMIL OpenDocument OOXML ... Définition : Langages XML orientés documents structurés Ils définissent des formats de structuration de document (structure logique), en général pour un métier donné, plus ou moins précis selon la généralité du langage. Exemple : Langages XML orientés documents structurés DocBook TEI DITA ... Exemple : Format local orienté document structuré 1 <?xml version="1.0" encoding="UTF-8"?> 2 <document type="Lorem ipsum"> 3 <paragraphe>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque sit amet 4 libero ac mauris egestas venenatis nec vitae sapien.</paragraphe> 5 <paragraphe>Donec a lectus sed augue pellentesque accumsan eu ac justo. Etiam est urna, sagittis 71 Stéphane Crozat - UTC Contenus annexes 6 ac cursus nec, placerat quis velit.</paragraphe> 7 </document> Complément : Voir aussi Documents structurés et documents formatés - p.68 * > Langages XML orientés données Définition Ils permettent d'enregistrer et de transporter des données informatiques structurées (comme par exemple des données gérées par des bases de données) selon des formats ouvert (c'est à dire dont on connaît la syntaxe) et facile à manipuler (les structures arborescentes XML étant plus riches que des fichiers à plat par exemple). Les langages XML orientées données servent surtout à l'échange ou la sérialisationSérialisation - p.77 § des données des programmes informatiques. * Remarque L'utilisation d'XML est en fait ici assez accessoire, d'autres formalismes s'y substituent sans difficulté, souvent moins explicites pour la manipulation humaine et souvent plus performant pour la manipulation informatique : CSV, JSON, ... (voir par exemple : http://www.xul.fr/ajax-format-json.html pour une comparaison JSON / XML). Remarque : Format verbeux XML est en général plus verbeux que ses alternatives (il contient plus de caractères), c'est pourquoi il est plus explicite pour un humain (ce qui n'est pas toujours utile), et moins performant informatiquement (ce qui n'est pas toujours un problème). Exemple : Formats XML orientés données standards MathML, ChemML, ... ATOM, RSS Dublin Core RDF, OWL SVG ... Exemple : Formats XML orientés données locaux XML est utilisé pour de très nombreux langages orientés données locaux, en fait chaque fois qu'un format XML est défini pour les besoins spécifique d'un programme. 1 <myVector> 2 <x>5</x> 3 <y>19</y> 4 </myVector> Complément : Langages XML de programmation Le formalisme XML est également utilisé pour définir des langages de programmation, à l'instar du C ou du Java. Les langages de programmation écrits en XML sont généralement à vocation déclarative et adressent le plus souvent des traitements eux mêmes liés à XML. XSL-XSLT est un exemple de langage de programmation écrit en XML. On peut également citer par exemple le langage de script ANT ( http://ant.apache.org/) ou XUL pour la réalisation d'IHM (http://www.xul.fr/) 72 Stéphane Crozat - UTC Contenus annexes > La structuration logique Un document peut être décrit comme une collection d'objets comportant des objets de plus haut niveau composés d'objets plus primitifs. Les relations entre ces objets représentent les relations logiques entre les composants du document. Par exemple [...] un livre est divisé en chapitres, chaque chapitre en sections, sous-sections, paragraphes, etc. Une telle organisation documentaire est appelée représentation de document structuré . (traduit depuis la préface de Structured documents- p.79 ¨ ) * Définition : Structuration logique On appelle structuration logique d'un contenu une inscription explicitant la structure de ce contenu en fonction de son organisation et des attributs intrinsèques qui le caractérisent et non en fonction de propriétés de présentation sur un support. Définition : Document abstrait Un document décrit par sa structure logique est appelé document abstrait, on parle aussi de document structuré. Définition : Structuration physique On appelle structuration physique ou mise en forme d'un contenu une inscription décrivant la façon dont ce contenu doit être présenté sur un support donné. Définition : Document formaté Un document décrit par sa structure physique est appelé document formaté, c'est en général également ce dont on parle quand on parle simplement de document. Remarque Il est possible de calculer une ou plusieurs structurations physiques pour une même structuration logique. Il est possible de calculer d'autant plus de structurations physiques que la structuration logique est indépendante de ses supports de présentation. Remarque La structuration logique est associée au fond du contenu, tandis que la structuration physique est associée à sa forme sur un support. Complément : Voir aussi Langages XML orienté documents - p.71 * > Modélisation en flocon Définition Un modèle en flocon est un modèle pour lequel chaque dimension est représentée avec plusieurs tables. Il est donc plus normalisé (moins redondant) qu'un modèle en étoile. 73 Stéphane Crozat - UTC Contenus annexes Exemple de dimension représentée en flocon (Kimball, Ross, 2008, p.55) Attention Les représentation en flocon sont (Kimball, Ross, 2008, p.56)(Kimball, Ross, 2008)- p.79 ¨ : déconseillées en général * Le modèle en flocon est plus complexe et son appréhension par l'utilisateur difficile Les performance en requête sont diminuées par les jointures Le gain en espace disque est faible (les dimensions sont peu volumineuses relativement aux faits) Méthode La normalisation partielle est préconisée lorsqu'il y a des répétitions très nombreuses sur un grand nombre de colonnes (Kimball, Ross, 2008, p.153)(Kimball, Ross, 2008)- p.79 ¨ . * Exemple de cas pertinent de représentation en flocon d'une dimension (Kimball, Ross, 2008, p.153) > Un langage pour publier les documents XML XML lorsqu'il est utilisé pour définir des formats documentaire métier est un format de représentation de l'information, et non un format de publication (de présentation) de cette information : donc un tel fichier XML n'est pas utilisable tel que par un lecteur. XML ne peut donc être utilisé pour des langages abstrait que si l'on est capable de transformer les documents sources en document publiés lisibles grâce à un format de présentation : HTML par exemple dans le cas de publication Web, ou PDF pour l'impression. 74 Stéphane Crozat - UTC Contenus annexes > Vue matérialisée sous Oracle Introduction Oracle 9i propose une extension au LDD SQL pour créer explicitement des vues matérialisées plutôt que la gestion manuelle classique consistant à créer une table et à l'alimenter manuellement avec une requête de type INSERT. Rappel Une vue matérialisée est un stockage statique (dans une table) d'un résultat de requête. Il permet donc d'anticiper des requêtes complexes en pré-calculant tout ou partie du résultat. Vues concrètes - p.75 * Syntaxe : Déclaration de vue matérialisée 1 CREATE MATERIALIZED VIEW nom_vue 2 [PARTITION BY ...] 3 BUILD IMMEDIATE -- quand la construire (alt. : DEFERED) 4 REFRESH FORCE -- mode de rafraîchissement (alt. : COMPLETE, FAST) 5 ON DEMAND -- quand la rafraîchir (alt. : COMMIT) 6 ENABLE QUERY REWRITE -- utilisable pour l'optimisation automatique de requêtes (alt. : DISABLE) 7 AS 8 SELECT ... Syntaxe : Rafraîchissement manuel de la vue Si le rafraîchissement de la vue peut être programmé, il est néanmoins parfois nécessaire de procéder à un rafraîchissement manuel. 1 EXECUTE dbms_mview.refresh('nom_vue'); Optimisation des requêtes La déclaration d'une vue matérialisée dans Oracle, permettra à l'optimiseur de l'utiliser pour effectuer la requête correspondante plutôt que d'interroger les tables sources. Attention Oracle ne pourra pas toujours inférer automatiquement que des vues matérialisées sont utilisables à la place des tables originales. Il est donc nécessaire dans ce cas de réécrire soi-même les requêtes concernées. En pratique c'est souvent le cas si les vues sont complexes. Raffraîchissement de la vue matérialisée La déclaration d'une vue matérialisée sous Oracle 9i permet également de planifier automatiquement les modalités de rafraîchissement de la vue, plutôt que de devoir gérer un rafraîchissement uniquement manuel. Remarque Une vue matérialisée peut être indexée ou partitionnée comme toute table Oracle. > Vues concrètes 75 Stéphane Crozat - UTC Contenus annexes > XML : un langage à balise Définition : Langage à balises Une balise est un descripteur ajouté au contenu en vue d'un traitement informatique. Un langage à balises est un langage permettant d'associer à un contenu (généralement du texte) des balises explicites (par exemple pour rendre compte de la structure du texte). Exemple : Balises Lambda 1 <lambda> 2 <body> 3 <p>This is an example</p> 4 </body> 5 </lambda> Ici le texte est "This is an example", il est balisé afin d'ajouter les informations suivantes : c'est est un paragraphe (balise p) du corps (balise body) d'un document Lambda (balise lambda). Complément : Voir aussi Balises et poignées de calcul - p.65 * > XML : un méta-langage Définition : Méta-langage Un méta-langage est un langage permettant de définir d'autres langages, les langages ainsi définis permettent à leur tour la description d'informations respectant ces langages. Exemple : Langage Lambda Si l'on désire définir informatiquement un langage Lambda, en disant qu'il peut contenir un élément de type body qui lui même contient des éléments de type p, il faut spécifier les contraintes de ce langage grâce à un méta-langage permettant donc de définir : Le vocabulaire : lambda, body, p La grammaire : lambda contient exactement un body qui contient un ou plusieurs p XML en tant que méta-langage ne contient pas les mots du langage Lambda, en revanche il dispose des mécaniques permettant de les définir. Définition : Notion de schéma La définition d'un langage XML particulier se fait grâce à un schéma qui permet de lister les mots du langage (vocabulaire) et de définir leur utilisation (grammaire). On parle également de format. Exemple : Schéma Lambda 1 <!ELEMENT lambda (body) > 2 <!ELEMENT body (p+) > 3 <!ELEMENT p (#PCDATA) > Ce code exprime formellement (avec la syntaxe DTD) le langage, ou format, Lambda. 76 Stéphane Crozat - UTC Questions de synthèse Glossaire API Une API est une définition d'un ensemble de fonctions ou méthodes (en programmation objet) dont l'appel paramétré permet de piloter une application. Une API permet donc d'utiliser un librairie informatique sans avoir besoin d'en connaître le fonctionnement interne. Client Un client est un programme informatique qui a pour fonction d'envoyer des requêtes à un autre programme informatique, appelé serveur, d'attendre le résultat de cette requête et de traiter le résultats de la requête. Notons qu'un programme peut-être client vis à vis d'un programme et serveur vis à vis d'un autre. On ne prend pas ici le terme client dans son acception matérielle, qui signifie alors un ordinateur qui a pour fonction d'héberger des programmes clients. Impedance mismatch Le terme d'impedance mismatch renvoie au décalage qui peut exister entre le niveau d'abstraction de deux langages qui ont à travailler sur des structures de données communes, par exemple un langage applicatif objet et un langage de données relationnel. L' impedance mismatch a des conséquences négatives en terme de complexification de l'implémentation et en terme de performance, puisqu'il faut constamment passer d'une structure de données à l'autre. Sérialisation Processus consistant à enregistrer des données en mémoire vive (par exemple des objets) sous une forme permettant leur persistance, typiquement sur une mémoire secondaire. Serveur Un serveur est un programme informatique qui a pour fonction de recevoir des requêtes d'un autre programme, appelé client, de traiter ces requêtes et de renvoyer en retour une réponse. Notons qu'un programme peut-être serveur vis à vis d'un programme et client vis à vis d'un autre. On ne prend pas ici le terme serveur dans son acception matérielle, qui signifie alors un ordinateur qui a pour fonction d'héberger des programmes serveurs. XSL-FO XSL-FO (FO pour Formatting Objects) est la seconde partie du standard W3C « Extensible Stylesheet Language Family ». Il propose un langage XML de mise en forme de documents imprimables. Exemple d'extrait de code FO : <fo:block font-family="Times" font-size="12pt">Ceci est un paragraphe en police Times de taille 12pt</fo:block>. 77 Stéphane Crozat - UTC Abréviations Abréviations 1NF : First Normal Form 3NF : Third Normal Form ACID : Atomicity, Consistency, Isolation, Durability API : Application Program Interface BD : Base de Données BI : Business Intelligence DF : Dépendance Fonctionnelle DW : Data Warehouse E-A : Entité-Association FIFO : First In First Out MCD : Modèle Conceptuel de Données MLD : Modèle Logique de Données OID : Object Identifier POO : Programmation Orientée Objet SGBD : Système de Gestion de Bases de Données SGBDOO : Système de Gestion de Bases de Données Orientées Objets SGBDR : Système de Gestion de Bases de Données Relationnelles SGBDRO : Système de Gestion de Bases de Données Relationnelles-Objets SQL : Structured Query Language UML : Unified Modeling Language VBA : Visual Basic for Application W3C : World Wide Web Consortium XML : eXtensible Markup Language 78 Stéphane Crozat - UTC Bibliographie Bibliographie Goglin J.-F. (2001, 1998). La construction du datawarehouse : du datamart au dataweb. Hermes, 2ème édition. Inmon W.-H. (2002, 1990). Building the data warehouse. Wiley Publishing, 3rd edition. Gérard Dupoirier, Technologie de la GED : Techniques et management des documents électroniques, Hermes, 1995. Kimball R., Ross M. (2003). Entrepôts de données : guide pratique de modélisation dimensionnelle. Vuibert. Kimball R., Ross M. (2008, 2002). The Data Warehouse Toolkit: The Complete Guide to Dimensional Modeling. Wiley Publishing, second edition. Jacques André, Richard Furuta, Vincent Quint, Structured documents, Cambridge University Press, 1989. Alexandre Brillant, XML : Cours et exercices, Eyrolles, 2007 [ISBN 978-2212126914] Delmal Pierre. SQL2 SQL3, applications à Oracle. De Boeck Université, 2001. Dubois Paul, Hinz Stefan, Pedersen Carsten. MySQL : Guide officiel. ISBN 2-7440-1782-5. Paris : CampuPress, 2004. 702 p. Ford Andrew. Apache précis et concis. ISBN 2-84177-11. France : O'REILLY, 2000. 125 p. Précis et concis. Gardarin Georges. Bases de données : objet et relationnel. Eyrolles, 1999. Lerdof Rasmus. PHP précis et concis. ISBN 2-84177-249-7. France : O'REILLY, 2002. Mata-Toledo Ramon A., Cushman Pauline K.. Programmation SQL. Ediscience, 2003. Thibaud Cyril. MySQL 4 : Installation, mise en oeuvre et programmation. Editions ENI, 2003. Collection Ressources Informatiques. Wong Clinton, HTTP précis et concis, O'REILLY, 2000 [ISBN 2-84177-1]. 79 Stéphane Crozat - UTC Webographie Webographie Cesbron-Lavau Henry, Les transactions, http://www.developpez.com/hcesbronlavau/Transactions.htm, 2002. Defude Bruno, Tutoriel de bases de données relationnelles de l'INT Evry, http://www-inf.int-evry.fr/COURS/BD/, consulté en 2009. Roegel Denis, Oracle : SQL, http://www.loria.fr/~roegel/cours/iut/oracle-sql.pdf, 1999. Roegel Denis, Le langage procédural PL/SQL, http://www.loria.fr/~roegel/cours/iut/oracle-plsql.pdf, 1999. Hubiche Maxence, Comprendre les jointures dans Access, http://mhubiche.developpez.com/Access/tutoJointures/, consulté en 2009. Stanford University, Notes on the Oracle DBMS, http://www-db.stanford.edu/~ullman/fcdb/oracle.html, consulté en 2004. Bourda Yolaine, Bases de Données Relationnelles et Systèmes de Gestion de Bases de Données Relationnels, le Langage SQL, http://wwwsi.supelec.fr/~yb/poly_bd/, consulté en 2009. University of Alberta, Computing Science 291/391 : Laboratory Manual, http://ugweb.cs.ualberta.ca/~c391/manual/title.html, 1995. XML, http://www.w3.org/XML. 80 Stéphane Crozat - UTC