35
G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

Embed Size (px)

Citation preview

Page 1: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

G. Gardarin

BD XML1. Introduction2. XML : Modèle de données3. Langages de requêtes4. Aperçu des produits5. Conclusion

Page 2: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.2 G. Gardarin

1. Introduction

Générations de BD• Réseau et hiérarchique 70 - 80• Relationnel 80 - 90• Objet-Relationnel 90 - …

Web et BD• un rendez-vous manqué• couplage faible par serveur d'applications• le Web est une vaste BD distribuée• la structuration est faible• plutôt orienté documentaire ...

Introduction

Page 3: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.3 G. Gardarin

XML s'impose

Standard d’échange de données universel Intégration des données et méta-données Les BD ne peuvent rester indifférentes :

• nécessité de stocker les documents XML variés• nécessité de pouvoir interroger ces documents• évolution ou révolution ?

Quel modèle de données ?Quel langage d'interrogation ?SGBD étendus ou natifs ?Quelle intégration avec l'existant ?

Introduction

Page 4: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.4 G. Gardarin

Limites de SQL

Mauvais support de l'imbrication• GROUP BY limités• Généralement dans les éditeurs de rapports

SQL3 trop complexe• Requêtes imbriquées difficiles• Méthodes en qualification coûteuse• Identifiants pas très claires

Peu adapté à XML• Vision tabulaire statique• Manipulation par des fonctions (SQL/XML)

SQL à 30 ans !• Inventé en 1970 pour la gestion• XQuery le successeur ?

Introduction

Page 5: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.5 G. Gardarin

2. XML : Modèle de données

XQuery Data ModelModèle des schémas et de XPathUn document est un arbre à nœud étiquetéChaque nœud possède une identitéSérialisé en texte, souvent représenté

graphiquementUne forêt est une collection de documents

de même schémaUne source de données est soit un

document, soit une forêt

XML et BD

Page 6: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.6 G. Gardarin

Exemple de documents<?xml version="1.0"?>

<Restaurants region="Normandie" version="2.0">

<Restaurant type="francais" categorie="***">

<Nom>Le Grand Hôtel</Nom><Adresse><Rue>Promenade M. Proust

</Rue><Ville>Cabourg</Ville>

</Adresse><Manager>Dupont</Manager>

<Menu>Plat du jour</Menu></Restaurant>

<Restaurant type="francais" categorie="**">

<Nom>L'Absinthe</Nom><Adresse>

<No>10</No><Rue>quai

Quarantaine </Rue>

<Ville>Honfleur</Ville></Adresse>

<Téléphone>0231893900 </Téléphone>

<Manager>Dupont</Manager>

<Manager>Durand</Manager>

<Menu Prix="12"> Fruits de Mer </Menu>

</Restaurant>

</Restaurants>

XML et BD

Page 7: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.7 G. Gardarin

Caractéristiques du modèle

Schémas flexibles et irréguliers• 0, 1, N occurrences d'éléments

Données auto-descriptives• Éléments balisés et attributs nommés

Modèle de document hiérarchique avec hyperliens • Arbres avec possibilités de références M-N

Éléments atomiques ou complexes• Composition par agrégation

Types de données riches• Entier, réel, texte, url, date, ... et types

composés

XML et BD

Page 8: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.8 G. Gardarin

Le modèle des schémas

Déclaration des éléments et attributs • Typage similaire à l'objet

Spécification de types simples• Grande variété de types

Génération de types complexes• Séquence (Sequence)• Choix (Choice)• Tas (All)

XML et BD

Page 9: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.9 G. Gardarin

Diagramme XML Spy

XML et BD

Page 10: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.10 G. Gardarin

Exemple de schéma<xsd:element name="commande" type="CommandeType"/> <xsd:element name="commentaire" type="xsd:string"/> <xsd:complexType name="CommandeType">

<xsd:element name="livraison" type="Adresse"/> <xsd:element name="facturation" type="Adresse"/> <xsd:element ref="commentaire" minOccurs="0"/> <xsd:element name="produit" type="produit"/> <xsd:attribute name="comDate" type="xsd:date"/>

</xsd:complexType> <xsd:complexType name="Adresse">

<xsd:element name="nom" type="xsd:string"/> <xsd:element name="rue" type="xsd:string"/> <xsd:element name="ville" type="xsd:string"/> <xsd:element name="region" type="xsd:string"/> <xsd:element name="code" type="xsd:decimal"/> <xsd:attribute name="pays" type="xsd:NMTOKEN" fixed="France"/>

</xsd:complexType>

XML et BD

Page 11: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.11 G. Gardarin

Le schéma est optionnel !

Possibilité de stocker des documents sans schéma• Le SGBD génère un schéma (arbre couvrant

sans feuilles)• Maintenu lors des mises à jour (compteur

d'utilité)• Schéma de base pour l'interrogation

Facilite la conception• Dégager des collections de documents

apparentés• Le SGBD conçoit pour vous !

XML et BD

Page 12: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.12 G. Gardarin

3. Langage de requêtes

Langages de requêtes

MODELE LANGAGE REQUETES

Hiérarchique DML DL1

Réseau DML CODASYL

Relationnel SQL: SELECT …

Objet OQL

XML ???

Page 13: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.13 G. Gardarin

Qu'est-ce-que XQuery ?

XQuery est le langage de requêtes pour XML défini et standardisé par le W3C• Proposé par IBM, AT&T, Microsoft, Data Direct, …

XQuery s’impose comme le langage de requêtes:• Pour les bases de données XML natives• Pour les documents XML textuels (XQuery Text)• Pour l’intégration de données (BD virtuelles)

Interroger les bases relationnelles en XQuery• Pour l’intégration et la publication de données en

XML• Compétition avec les extensions de SQL (SQL/XML)

Langages de requêtes

Page 14: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.14 G. Gardarin

Objectifs (Requirements W3C)

Langages de requêtes

Types XML Schema

Puissance de SQL

Structured'arbres

Recherche d'information

Langagefonctionnel

Page 15: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.15 G. Gardarin

XPath = un sous-ensemble

Syntaxe pour la navigation en arbre• La navigation est définie par des chemins• Utilisé par d'autres standards: XSLT, XLink, ...

Les chemins sont composés d'étapes• / racine ou séparateur entre étapes• * joker pour n'importe quel nom• @ désigne un attribut• // joker pour n'importe quel sous chemin

[ ] permet la spécification d'un filtre (prédicat) sur les nœuds courants (peut contenir des chemins)• [n] sélectionne le N-ème élément d'une

séquenceLangages de requêtes

Page 16: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.16 G. Gardarin

Exemples XPath

Noms de tous les restaurants :• collection(“Restaurants”)/Restaurant/Nom/text()• collection(“Restaurants”)/Restaurant/Nom

Expression régulière • Menu de tous les restaurants• collection(“Restaurants”)//Menu

Accès via prédicat à attribut• Nom des menus du restaurant "Le Romantique"• collection(“Restaurants”)/Restaurant

[Nom/text()="Le Romantique"]/Menu/@Nom

Langages de requêtes

Page 17: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.17 G. Gardarin

Expression FLWR

Forme de requête élémentaire• for $<var> in <forest> [, $<var> in <forest>]

+ //itération• let $<var> := <subtree> // assignation• where <condition> // élagage• return <result> // construction

Les forêts sont soit des collections, soit sélectionnées par des XPath • source document ou collection

Le résultat est une forêt • un ou plusieurs arbres

Langages de requêtes

Page 18: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.18 G. Gardarin

Selection

Lister les noms et téléphones des restaurants de Cabourg<result><titre>Liste des restaurants de Cabourg</titre>{for $R in document("Guide")/Restaurantwhere $R//Ville= "Cabourg"return <Restaurant>

<Nom>{$R/Nom}</Nom> <Tel>{$R/Téléphone}</Tel>

</Restaurant>} </result>

Langages de requêtes

Page 19: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.19 G. Gardarin

Jointure

Lister le nom des Restaurants avec téléphone dans la rue de l'Hôtel Lutecia:for $R in collection("Guide")/Restaurant,

$H in document(Répertoire)/Hotelwhere $H//Rue = $R//Rue

AND $H//Nom= "Le Lutecia"return <Result>

<Nom>{$R/Nom}</Nom> <Tel>{$R/Téléphone}</Tel>

</Result>

Langages de requêtes

Page 20: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.20 G. Gardarin

Agrégat

Combien de restaurants y-a-t-il dans les guides ?

<result><entete>Nombre total de

restaurants</entete>{let $R := collection(“Guide”)/Restaurant return

<NombreRestaurant > {count ($R)} </NombreRestaurant>}</result>

Langages de requêtes

Page 21: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.21 G. Gardarin

Manipulation de chaînes

Trouver les livres dans lequel le nom d'un élément se termine par "or" et le même élément contient la chaîne "Suciu" quelque part. Pour chaque tel livre, retourner le titre et l'élément qualifiant.for $b in doument("document")//book let $e := $b/*[contains(string(.), "Suciu") and ends-with(local-name(.),

"or")] where exists($e) return <book> { $b/title } { $e } </book>

Langages de requêtes

Page 22: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.22 G. Gardarin

Fonctionnalités XQuery Text

Recherche sur mot-clés

Recherche de phrase Support des mots de

liaison Recherche sur préfix,

suffix, infix Normalisation des

mots, accents, capitales, …

Recherche par proximité (unité = mots)

Spécification de l'ordre des mots

Combinaison logique avec AND, OR , NOT

Recherche par similarité

Tri des résultats par pertinence

Langages de requêtes

Page 23: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.23 G. Gardarin

Bilan XQuery Véritable langage de

programmation pour XML Très puissant

• Sélection• Jointure• Imbrication• Restructuration• Agrégation• Tri• Recherche plein texte• Calculs• Contrôles

Sur des forêts dont les arbres sont des documents

Questions ?

Langages de requêtes

Page 24: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.24 G. Gardarin

4. Modèle interne et produits

Systèmes natifs• Technique spécialisée de stockage et

recherche• Indexation des arbres XML• Gèrent seulement du XML• Langage de requêtes XQuery

Extensions objet-relationnel• De plus en plus intégré aux grands SGBD• Deux techniques:

colonne « objet XML » mapping 1 document N tables

• Langage de requêtes hybride SQL étendu avec fonctionnalités XQuery

Modèle interne

Page 25: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.25 G. Gardarin

4.1 SGBD Natif XML

SGBD conçu pour XML, stockant les

documents entiers sans les décomposer en éléments,

utilisant de techniques d'indexation d'arbres spécifiques.

Forêtsd'arbres

Stockage XML

Recherche XML

XQuery XMLXML

Index

Noyau SGBDConcurrence, Fiabilité

Modèle interne

Page 26: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.26 G. Gardarin

Techniques clés

Stockage d’arbres Index de structure (arbres) Index de contenu (mots clés)Algèbre XMLOptimisation XQueryPassage à l’échelleGestion de versions

Page 27: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.27 G. Gardarin

Principaux produits

De multiples produits• Software A.G. Tamino http://www.softwareag.

com/• X-Hive/Db http://www.x-hive.com/• Coherity http://www.coherity.

com/• IXIA soft http://www.

ixiasoft.com/• XML Global http://www.xmlglobal.com/• NeoCore http://www.neocore.com/• Exist (Open source) http://exist.sourceforge

.net/index.html

Modèle interne

Page 28: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.28 G. Gardarin

Xylème

Application : Les archives du MondeModèle interne

Page 29: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.29 G. Gardarin

4.2 Extensions du relationnel

Composant logiciel intégré à un SGBD(objet-relationnel)

assurant: le stockage et

l'interrogation de documents XML

en transformant le XML en tables

et les tables en XML

SQL

SGBD

Tablesde lignes

Stockage XML

Recherche XML

SQL/XML XMLXML

Index

Modèle interne

Page 30: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.30 G. Gardarin

SQL/XML

Intégration de fonctionnalités XQuery à SQL Support à la SQL3

• Type de donnée natif XML Type (colonnes XML)• Fonctions d’extraction XPath• Fonctions de construction de XML (pont relationnel)• Insertion et Maj de XML en colonne(s)

Exemple de requêteSELECT XMLElement("Emp", XMLForest ( e.hire, e.dept AS "department") )AS "result“FROM EMPLOYEE eWHERE ExtractValue(e.XMLemp, /emp/@id) > 200;

Intégré à Oracle et DB2

Page 31: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.31 G. Gardarin

Oracle XML/DB

Stockage et publication• Mapping de XML plat sur une table• Mapping de XML imbriqué en tables imbriquées• Stockage de XML en colonne (XML Type)• Commandes PutXml et GetXml

Interrogation• Support de SQL/XML• Servlet XSQL

document XML avec requêtes SQL/XML transformation du résultat des requêtes en XML

Modèle interne

Page 32: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.32 G. Gardarin

Microsoft

SQL Server 2005• Modèle Relationnel • Modèle XML

Stockage de XML• Stockage natif comme

"XML data type"• Mapping de XML en

tables défini par assistants exécuté par

procédures stockées

• Stockage en Large OBject

varchar et varbinary

Interrogation en XML• XQuery et XML DML

Proposé pour interroger et mettre à jour les données XML (XML data type)

Possibilité de définir des vues XML et de les interroger

• SELECT … FOR XML Retourne du XML à partir

de requêtes et permet de définir le format du XML retourné.

• OpenXML Manipulation de

documents XML comme des tables avec T-SQL et des procédures stockées.

Modèle interne

Page 33: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.33 G. Gardarin

XQuare Bridge (Open Source) Extraction XML

• via XQuery traduite en SQL

Stockage XML en base• Mapping via schema• Accélérateur XTree

(Repository) Portable

• Oracle, SQLServer, PostGres, …

Version industrielle• www.datadirect.com

SGBD

Extractor Mapper

JDBC

BDrelationnelle

Scripts XQuery

API XML/DBC

Règles de MappingAPI SAX2

SGBDR

Modèle interne

Page 34: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.34 G. Gardarin

Natif versus XOR DBMS

Points forts XOR• pas de nouveau SGBD• possibilité de

normaliser les données• possibilité de stocker

comme valeur d’attribut• une certaine portabilité

multi-SGBD• performance pour accès

grain fin

Points forts Natif• un nouveau SGBD fait

pour XML• jamais de mapping à

définir et maintenir• intégrité du document• recherche plein texte• performance pour accès

gros grain

Modèle interne

Page 35: G. Gardarin BD XML 1. Introduction 2. XML : Modèle de données 3. Langages de requêtes 4. Aperçu des produits 5. Conclusion

VI.35 G. Gardarin

5. CONCLUSION

XML peut-il changer les bases de données ?• Recherche en BD semi-structurées importante• Besoin de schémas permissifs (XML Schéma)• Langage de requêtes standardisé (XQuery)

Intégration douce à l'objet/relationnel• Transformation et stockage en tables• Gestion du graphe des documents• Support des textes libres

XML et les BD s'imposent:• Archivage des messages échangés• Systèmes répartis (Web Services via requêtes)• B2B (protocoles de e-commerce)

Conclusion