Post on 04-Apr-2015
G. Gardarin
BD XML1. Introduction2. XML : Modèle de données3. Langages de requêtes4. Aperçu des produits5. 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
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
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
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
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
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
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
VI.9 G. Gardarin
Diagramme XML Spy
XML et BD
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
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
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 ???
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
VI.14 G. Gardarin
Objectifs (Requirements W3C)
Langages de requêtes
Types XML Schema
Puissance de SQL
Structured'arbres
Recherche d'information
Langagefonctionnel
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
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
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
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
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
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
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
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
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
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
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
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
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
VI.28 G. Gardarin
Xylème
Application : Les archives du MondeModèle interne
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
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
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
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
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
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
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