XML et les BD - PowerPoint PPT Presentation

About This Presentation
Title:

XML et les BD

Description:

CondCond ::= Expr Op Constant | Expr Op Expr | 'contains(' Expr , Text ' ... 'Expr ::= '$'VarName/XPath. ReturnClause ::= 'return' XMLElement ... – PowerPoint PPT presentation

Number of Views:154
Avg rating:3.0/5.0
Slides: 90
Provided by: gardarin
Category:
Tags: xml | expr | les

less

Transcript and Presenter's Notes

Title: XML et les BD


1
XML et les BD
  • 1. Introduction
  • 2. Modèle de données
  • 3. Langage de requêtes
  • 4. Produits
  • 5. Conclusion
  • 6. Exécution/Optimisation de Requêtes

2
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
3
XML s'impose
  • Intégration des données et méta-données
  • Standard déchange de données universel
  • Les BD ne peuvent rester indifférentes
  • nécessité de stocker les documents XML
  • nécessité de pouvoir interroger ces documents
  • évolution ou révolution ?
  • Quel modèle de données ?
  • Quel langage d'interrogation ?
  • Quelle intégration avec l'existant ?

Introduction
4
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
  • Références pas très claires
  • Peu adapté à XML
  • Vision tabulaire
  • Manipulation par des fonctions (SQL/XML)?
  • SQL à 30 ans !
  • Inventé en 1970 pour la gestion
  • XQuery le successeur ?

Introduction
5
Exemple de documents
  • lt?xml version"1.0"?gt
  • ltRestaurants region"Normandie" version"2.0"gt
  • ltRestaurant type"francais" categorie""gt
  • ltNomgtLe Grand Hôtellt/ Nomgt
  • ltAdressegt ltRuegtPromenade M. Proust
    lt/Ruegt ltVillegtCabourglt/Villegt
  • lt/Adressegt
  • ltManagergtDupontlt/Managergt
  • ltMenugtPlat du jourlt/Menugt
  • lt/Restaurantgt
  • ltRestaurant type"francais" categorie""gt
  • ltNomgtL'Absinthelt/Nomgt
  • ltAdressegt ltNogt10lt/Nogt ltRuegtquai Quarantaine
    lt/Ruegt ltVillegtHonfleurlt/Villegt
  • lt/Adressegt
    ltTéléphonegt0231893900 lt/Téléphonegt
  • ltManagergtDupontlt/Managergt
  • ltManagergtDurandlt/Managergt
  • ltMenu Prix"12"gt Fruits de Mer lt/Menugt
  • lt/Restaurantgt
  • lt/Restaurantsgt

Introduction
6
2. Modèle de données
  • Schémas flexibles et irréguliers
  • Optionnels, avec ou sans DTD
  • Données auto-descriptives
  • Balises et attributs
  • Modèle de type hypertexte
  • Support des références
  • Éléments atomiques ou complexes
  • Composition par agrégation
  • Types de données variés et extensibles
  • Textes, numériques, , types utilisateur

Modèle semi-structuré
7
Le modèle de données
  • XQuery Data Model
  • Modèle des schémas et de XPath 2
  • Un document est un arbre à nœud étiqueté
  • Chaque nœud possède une identité
  • Exprimé en XML, souvent représenté graphiquement
  • Une forêt est une collection de documents de même
    schéma
  • Une source de données est soit un document, soit
    une forêt

Modèle semi-structuré
8
Diagramme XML Spy
Modèle semi-structuré
9
Et les documents sans schéma ?
  • 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 !
  • Solution
  • Forêt fermée versus forêt ouverte
  • Construction et gestion dynamique des schémas
  • Notion de "document guide" ou DTD généralisée
  • Schéma faible avec typage string
  • Possibilité dinférer des types à partir des
    valeurs

Modèle semi-structuré
10
Bilan Modèle de données
  • Un standard riche
  • schémas standardisés depuis 3 mai 2001
  • Représentation graphique ad-hoc
  • Génération automatique en cas d'absence
  • Faut-il un autre modèle que les schémas ?
  • Doit couvrir les schémas
  • Doit couvrir les DTD
  • Doit couvrir l'absence de schéma et DTD
  • Syntaxe plus simple

Modèle semi-structuré
11
3. Langage de requêtes
Langages de requêtes
12
Quest ce que XQuery ?
  • XQuery est le langage de requêtes pour XML défini
    et standardisé par le W3C
  • XQuery simpose comme le langage de requêtes
  • Pour les bases de données XML natives
  • Pour les documents XML textuels (XQuery Text)?
  • Pour lintégration de données (bases de données
    virtuelles)?
  • Le besoin dinterroger les bases relationnelles
    en XQuery existe
  • Pour lintégration et la publication de données
  • Compétition avec les extensions de SQL (SQL/XML)?

Langages de requêtes
13
Objectifs
Types XML Schema XPath 2
Puissance de SQL
Recherche d'information
Structure d'arbres
Langage fonctionnel
Langages de requêtes
14
La base
  • Proposé par IBM , MS, ATT, Data Direct, ...
  • Langage fonctionnel type CAML
  • Forme de requête élémentaire
  • FOR ltvargt in ltforestgt , ltvargt in ltforestgt
    //itération
  • LET ltvargt ltsubtreegt // assignation
  • WHERE ltconditiongt // élagage
  • RETURN ltresultgt // construction
  • Les forêts sont sélectionnées par des Xpath
    (document ou collection)?
  • Le résultat est une forêt (un ou plusieurs
    arbres)?

Langages de requêtes
15
Exemple 1 XPath
  • (Q1) Noms de tous les restaurants
  • collection(Restaurants)/Restaurant/Nom/text()?
  • collection(Restaurants)/Restaurant/Nom

Langages de requêtes
16
Exemple 2 et 3 XPath
  • Expression régulière
  • Menu de tous les restaurants
  • collection(Restaurants)//Menu
  • Accès via indice à attribut
  • Donnez le nom des menus du premier restaurant
  • collection(Restaurants)/Restaurant1/Menu/_at_Nom

Langages de requêtes
17
Exemple 4 Sélection
  • Lister le nom des restaurants de Cabourg
  • collection(Restaurants)/Restaurant
  • Adresse/Ville Cabourg" /Nom
  • ltresultatgt
  • for R in collection("Restaurants")/Restauran
    t
  • where R/Adresse/Ville Cabourg
  • return R/Nom
  • lt/resultatgt

Langages de requêtes
18
Exemple 5 Jointure
  • Lister le nom des Restaurants avec téléphone dans
    la rue de l'Hôtel Lutecia
  • for R in collection("Restaurants")/Restaurant,
  • H in collection("Hotels")/Hotel
  • where H//Rue R//Rue
  • and H//Nom "Le Lutecia"
  • return
  • ltResultgt
  • R/Nom
  • R/Téléphone
  • lt/Resultgt

Langages de requêtes
19
Exemple 6 Restructuration d'arbre
  • Construire une liste de restaurants par Ville
  • for c in distinct(collection(Restaurants)/Resta
    urant//Ville)?
  • return
  • ltVillegtclt/Villegt
  • ltRestaurantsgt
  • for r in collection(Restaurants)/Restaur
    ant
  • where r//Ville c
  • return r
  • ltRestaurantsgt

Langages de requêtes
20
Exemple 7 Imbrication en Where
  • Adresses des hotels dans des villes ayant des
    restaurants trois étoiles
  • for h in collection(Hotels)/Hotel
  • where h/Adresse/Ville in
  • for r in collection(Restaurants)/Restaur
    ant
  • where r/_at_categorie ""
  • return r/Adresse/Ville/text()
  • return h/Adresse

Langages de requêtes
21
Syntaxe Simplifiée (XLive)?
  • // Réduite à FWR
  • XQuery ForClause WhereClause ReturnClause
  • ForClause for VarDef ,VarDef
  • VarDef VarName in collection (
    QuotedText )/XPath
  • WhereClause where CplexCond
  • CplexCond Cond Cond AND CplexCond Cond OR
    Cplex
  • CondCond Expr Op Constant Expr Op Expr
    contains( Expr , Text )
  • Op ! lt lt gt gt
  • Expr VarName/XPath
  • ReturnClause return XMLElement
  • XMLElement lttaggtXMLElementlt/taggt
    XPath XQuery
  • VarName Any variable
  • nameTag XML label
  • QuotedText Any text between quotes "
  • Constant Quoted text or number
  • XPath XPath expression restricted to child
    and descendant directions

Langages de requêtes
22
Exemple 8 Agrégat simple
  • Combien de restaurants y-a-t-il en collection ?
  • let R collection(Restaurants)/Restaurant
  • return
  • ltNombreRestaurant gt count (R)
    lt/NombreRestaurantgt

Langages de requêtes
23
Exemple 9 Agrégat partitionné
  • Lister le nom de chaque restaurant avec le prix
    moyens des menus proposés
  • for r in collection(Restaurants)//Restaurant
  • let a collection(Restaurants)//
  • Restaurant r//Menu/_at_Prix
  • return
  • ltresultatgt
  • r/Nom
  • ltavgPrixgtAVG(a)lt/avgPrixgt
  • lt/resultatgt

Langages de requêtes
24
Exemple 10 recherche textuelle
  • Lister les bons restaurants de Paris
  • for r in collection(Restaurants)//Restaurant
  • where (contains (r/Comments, Bon)
  • or contains (r/Comments, Excellent))
  • and r/Adresse/Ville Paris
  • return r/Nom

Langages de requêtes
25
Exemple 11 Ordre et désordre
  • Lister les bons restaurants de Paris par ordre
    alphabétique
  • for r in unordered(collection(Restaurants)//Res
    taurant)?
  • where (contains(r/Comments, "Excellent)
  • or contains(r/Comments, "Good))?
  • and r/Adresse/Ville Paris
  • return r/Nom
  • orderby (r/Nom descending)

Langages de requêtes
26
Exemple 12 Multi-requêtes
  • Construire un document avec en-tête, titre, liste
    restaurants peu chers, titre, liste restaurants
    chers 
  • ltXML_documentgt
  • ltVery_Expensive_Restaurantsgt
  • ltTitlegtList of very expensive restaurantslt/Titlegt
  • for r in collection("Restaurants)//Restaurant
  • where every p in r/Menu/_at_Prix satisfies
    (pgt100)?
  • return r
  • lt/Very_Expensive_Restaurantsgt
  • ltVery_Inexpensive_Restaurantsgt
  • ltTitlegtList of very inexpensive
    restaurantslt/Titlegt
  • for r in collection(Restaurants)//Restaurant
  • where some p in r/Menu/_at_Prix satisfies (plt10)?
  • return r
  • ltDategtdate()lt/Dategt
  • lt/Very_Inexpensive_Restaurantsgt
  • lt/XML_documentgt

Langages de requêtes
27
Exemple 13 String
  • 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 document("document")//book
  • let e b/contains(string(.), "Suciu")
  • and ends-with(local-name(.
    ), "or")
  • where exists(e)
  • return ltbookgt b/title e lt/bookgt

Langages de requêtes
28
Fonctionnalités XQuery Text
  • Recherche sur mot-clés
  • Recherche de phrase
  • Support des mots de laiaison
  • Recherche sur préfix, suffix, infix
  • Normalisation des mots, accents, capitales,
  • Recherche par proximité (unité mots)?
  • Spécification de l'ordre des mots
  • Combinaison logic avec AND, OR , NOT
  • Recherche par similarité
  • Tri des résultats par pertinence

Langages de requêtes
29
Bilan XQuery
  • Véritable langage de programmation
  • Très puissant
  • Sélection
  • Jointure
  • Imbrication
  • Restructuration
  • Agrégation
  • Tri
  • Plein texte
  • Sur des forêts dont les arbres sont des documents
  • Questions ?

Langages de requêtes
30
4. Aperçu des produits
  • Systèmes natifs
  • Technique spécialisée de stockage et recherche
  • Extension des techniques documentaires à
    l'élément
  • SGBD relationnels étendus
  • Séparation des éléments et du graphe
  • Mapping en tables
  • SGBD objet adapté
  • Utilisation d'une structuration objet (DOM)?
  • Un produit Excelon (Object Store)?
  • Racheter par Progress Software

SGBDX
31
4.1 SGBD Natif XML
  • SGBD
  • conçu pour XML,
  • stockant les documents en entiers sans les
    décomposer en éléments,
  • utilisant de techniques d'indexation d'arbres
    spécifiques.

Requête
XML
XML
Recherche XML
Stockage XML
Noyau SGBD Concurrence, Fiabilité
Forêts d'arbres
Index
SGBDX
32
Indexation Plein Texte
  • Utilisation d'un thésaurus au chargement
  • ensemble de termes reliés
  • liste des mots importants
  • synonymes et préférés
  • spécialisations, traductions
  • Standards ISO 2788 et ANSI Z39.19
  • Stémisation (racine) ou lémisation (préféré)?
  • Listes inverses
  • fichiers de mots significatifs
  • pour chaque mot, adresse document
    (élémentoffset)?

SGBDX
33
Principaux produits
  • De multiples start-up
  • 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/
  • Xyleme http//www.xyleme.com/
  • Exist http//exist.sourceforge.net/
  • Intégration comme type spécialisé à SGBD OR
  • DB2 XML Extender, Oracle XML DB, SQL Server 2005

SGBDX
34
Xyleme
  • Entrepôt XML efficace
  • Architecture distribuée
  • Cluster de PCs
  • Communication avec Corba
  • Développé sur Linux en C
  • Support du langage de requêtes XyQL
  • OQL étendu avec des expressions de chemins
  • Recherche plein texte en éléments efficace

SGBDX
35
Xyleme Functionnalities
SGBDX
36
Xyleme Natix Repository
  • Objectifs
  • Minimiser les I/O pour accès directe et balayage
  • Accès direct efficace via index et identifiant
  • Compression des données sans pénaliser les accès
  • Stockage efficace darbre
  • Pages de taille fixe classique
  • Enregistrements de taille variable à lintérieur
  • Equilibrage des arbres par éclatement de pages

SGBDX
37
Xyleme Architecture Physique
XyQuery
Global Query Manager
Local Query Manager Loader/Indexer
Local Query Manager Loader/Indexer
Repository Context
XyIndex
Repository Context
XyIndex
xyIndex
xyIndex
SGBDX
38
Xyleme Exemple de Requêtes
  • Extension de OQL avec XPath
  • Orientation recherche textuelle
  • Select boss/Name, boss/Phone
  • From comp in BusinessDomain,
  • boss in comp//Manager
  • Where comp/Product contains Xyleme

SGBDX
39
Xyleme Indexation
  • Liste inversée standard
  • mot ? documents contenant ce mot
  • Index Xyleme
  • mot ? éléments contenant ce mot (document
    élément identifier)
  • La plupart des requêtes sur mots-clés sont
    traitées en index, sans accès aux documents
  • Possibilité denrichir la requête via un
    thésaurus avant la recherche en index

SGBDX
40
4.2 Mapping SGBDR
  • Composant logiciel au-dessus d'un SGBDR assurant
  • le stockage et l'interrogation de documents XML
  • en transformant le XML en tables
  • et les tables en XML

XQuery
XML
XML
Recherche XML
Stockage XML
SQL
SGBD
Tables de lignes
Index
SGBDX
41
Exemple de Mapping
Restaurant(R, Nom, Tel) Adresse(R,N, Rue,
Ville) Manager(R, Nom)?
SGBDX
42
SQL/XML
  • Intégration de fonctionnalités XQuery à SQL
  • Support à la SQL3
  • Type de donnée natif XML Type (colonnes XML)?
  • Fonctions dextraction XPath
  • Fonctions de construction de XML (pont
    relationnel)?
  • Insertion et Maj de XML en colonne(s)?
  • Exemple de requête
  • SELECT XMLElement("Emp",
  • XMLForest ( e.hire, e.dept AS "department")
    )AS "result
  • FROM EMPLOYEE e
  • WHERE ExtractValue(e.XMLemp, /emp/_at_id) gt 200
  • Intégré à Oracle et DB2

SGBDX
43
Fonctions SQL/XML
SGBDX
44
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

SGBDX
45
Microsoft SQL Server 2005
  • Stockage de XML
  • Stockage natif comme "XMLtype"
  • 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
  • Possibilité de définir des vues XML et de les
    interroger
  • SELECT FOR XML
  • Retourne du XML à partir de requêtes SQL et
    permet de définir le format du XML retourné
  • OpenXML
  • Manipulation de documents XML comme des tables
    avec des procédures stockées

SQL
SQL Server
RowSet
SGBDX
46
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

Règles de Mapping
Scripts XQuery
Extractor
Mapper
API SAX2
API XML/DBC
JDBC
SGBDR
SGBD
BD relationnelle
SGBDX
47
Natif versus XORDBMS
  • Points forts XOR
  • pas de nouveau SGBD
  • possibilité de normaliser les données
  • possibilité de stocker comme valeur dattribut
  • 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

SGBDX
48
5. Conclusion
  • XML peut-il changer les bases de données ?
  • Recherche en BD semi-structurées
  • Besoin de schémas faibles (XML Schéma)?
  • Langage de requêtes standardisé (XQuery)?
  • L'effet du Web ...
  • Intégration douce à l'Objet/relationnel
  • Transformation en tables
  • Gestion du graphe
  • Support des textes libres niveau élément

49
Résumé
  • XML fournit un cadre uniforme pour
  • échanger des données structurées (DTD, schéma)?
  • échanger des données semi-structurées (graphes)?
  • interroger des documents (XQuery)?
  • intégrer des sources de données hétérogènes
    (table, multimédia)?
  • Beaucoup de travaux sont en cours
  • Gestion efficace au sein d'Oracle, de DB2, etc.
  • Construction de middlewares pull/push fondés sur
    XQuery
  • Construction de SGBD pur XML (Xylème, etc.)?

50
Implémentation XQuery
  • Introduction
  • Algèbre XML
  • Génération des plans

51
1. Introduction
  • Des techniques en évolution
  • Beaucoup de recherche sur XML DB
  • Extension des techniques relationnelles
  • Algèbre XML
  • Réécriture de requêtes en arbre algébrique
  • Transformation et optimisation des arbres
  • Prise en compte des index de structure et contenu

52
Techniques de base
XQuery
Parser
Analyse de la requête
Normalisation
Mise en forme normale
Transformation
Transformation et simplification
Génération
Génération d'un plan d'exécution
Run Time Machine
Query Plan
Optimizer
Optimisation
Machine d'exécution de l'algèbre
53
2. Algèbres pour XML
  • De multiples algèbres
  • Jagadish H.V., Lakshmanan L.V.S., Srivastava D.,
    Thompson K. TAX A Tree Algebra for XML, Proc.
    DBPL Conf., Roma Italy, 2001.
  • Fernandez M., Simeon J., Wadler P.. An Algebra
    for XML Query, In Foundations of Software
    Technology and Theoretical Computer Science, New
    Delhi, 2000.
  • Zaniolo C. The Representation and Deductive
    Retrieval of Complex Objects, Proc 11th VLDB,
    Stockholm, 1985.
  • Galanis L., Viglas E., DeWitt D.J., Naughton
    J.F., Maier D. Following the Paths of XML an
    Algebraic Framework for XML Query Evaluation,
    2001
  • Tuyet-Tram Dang-Ngoc and Georges Gardarin
    Federating heterogeneous data sources with xml,
    IKS 2003

54
XAlgèbre
  • Proposée et implémentée pour un médiateur
  • XQuare
  • XLive à lUVSQ
  • Besoin dune algèbre adaptée à XQuery
  • XTuples, représentation de données
    semi-structurées
  • XOpérateurs, une extension des opérateurs
    relationnels, manipulant les XTuples.

55
XTuples
  • Pourquoi ce besoin de nouvelle représentation?
  • Valeurs nulles
  • Attributs multivalués
  • Extensions
  • Nécessité dune représentation adaptée aux
    données semi-structurées.

56
XTuples représentation
  • Un XTuple est composé de
  • un ensemble darbre A
  • un ensemble de références R sur les nœuds des
    arbres A.
  • Ces références sont appelées XAttributs.
  • Les opérations relationnelles se font sur R.
  • Les parcours et recomposition se font sur A.
  • Un ensemble de XTuples du même type forment une
    XRelation

57
Les XOpérateurs
  • Opérateurs étendus du relationnel adapté aux
    données semi-structurées.
  • Ils opèrent sur les XRelations (composées de
    XTuples)?
  • Semi-pipeline
  • XJoinHash
  • XJoinMultiHash
  • XIntersection
  • Full-pipeline
  • XConstruct
  • XRestrict
  • XProject
  • Xunion
  • XProduct
  • XJoinSimple
  • XSource

Non-bloquant
  • XMin
  • XMax
  • XOrderBy

Bloquant
Puis jointure XTuple par XTuple
Hashage de la relation 1
58
Construction et Projection
  • XSource
  • construction XAttribut
  • construction forêt
  • ordre de la source
  • non-bloquant
  • XProjection
  • destruction de colonnes
  • destruction de (sous-) arbres
  • ordre préservé
  • non-bloquant

a
b
c
XSource
ltSAX/gt
b
c
a
b
c
XProjection
59
Filtrage
  • XRestriction
  • destruction de lignes complètes
  • ordre préservé
  • non bloquant

a
b
c
a
b
c
XRestriction
60
Union
  • XUnion
  • ordre préservé en mode bloquant, non préservé
    sinon
  • bloquant ou non suivant paramétrage

XUnion
a
b
c
a
b
c
61
Jointure
  • XJointure
  • Jointure des tables et juxtaposition d'arbres
  • ordre préservé en mode bloquant, non préservé
    sinon
  • bloquant ou non suivant paramétrage
  • XFusion
  • Concaténation d'arbres

a
b
c
XJointure
d
e
a
b
c
d
e
f
62
Algèbre XML Imbrication
  • Opérations dimbrication nécessaire pour calculer
    les éléments multi-valués
  • Exemple
  • for r in //restaurant
  • Let m r//menu
  • Return (r/name, r/region, count(m))?
  • Solution introduire les opérateurs Nest/Unest
  • r.Project(/name, /region,
    //menu) ?r1
  • r1.Nest(/name,/region,
    //menu)?
  • En plus court et plus puissant
  • r.Project((/name), /region,
    //menus)?
  • Aussi utile pour les quantifiers (quel que soit
    every)?

63
Algèbre XML Valeurs nulles
  • Nul en XML à deux aspects
  • Élément vide ltregion /gt
  • Elément absent
  • XQuery recherche les prédicats vrai (non nuls)?
  • Elément en condition obligatoire
  • XQuery permet les éléments vides en résultat
  • Correspond à une valeur optionnelle
  • Doit être pris en compte par lalgèbre
  • Les restrictions peuvent éliminer les nuls
  • Les jointures sont des (left/right) outer join si
    le résultat nest pas soumis à condition

64
Annotation des attributs
  • Les attributs des XRelations sont associés à un
    XPath
  • r/nom, r/region, r/offer/menus/menu
  • Chaque attribut peut être annoté style DTD
  • A0 optional, A1 mandatory
  • A nested optional, A nested mandatory
  • Les attributes peuvent être la base dun groupe
    dimbrication
  • (A, B)?
  • Exemple
  • (r/nom1),r/region0, r/offer/menus/menu

65
XAlgebra Vue densemble
  • Datasource.XSource (Path seq, atomic XQuery) ?
    XRelation
  • Transform a source in an XRelation of attributes
    Path sequence
  • XRelation.XRestrict (unary Constraint) ?XRelation
  • select Xtuples satisfying conditions on attribute
    values
  • XRelation.XProject (Path seq) ?XRelation
  • Remove attributes that are not in path sequence
  • XRelation.XJoin (XRelation, binary Constraint) ?
    XRelation
  • join of two XRelations on attribute values
  • XRelation.XFusion (Path seq) ? XRelation
  • Remove attributes and merge each XTuple trees in
    one of given schema
  • XRelation.XReconstruct (Path seq) ? XML
  • Extract XML documents of given schema from the
    XRelation

66
Implémentation des algorithmes
  • XSélection
  • Par accès à index
  • Intérêt d'indexer tous les mots
  • Intersection et union des adresses selon critères
  • Filtrage final pour vérifier
  • XJointure
  • Par accès aux index
  • Par produit cartésien
  • Par tri-fusion
  • Par hachage
  • Intérêt du pipline

67
3. Techniques de Représentation
  • Notion de modèle darbre (Tree Pattern)?
  • Jagadish VLDB 2002
  • Principe des modèles darbres généralisés (GTP)?
  • Utilisation des GTP pour XQuery
  • Optimisation performances
  • Variante TGV (N. Travers)?

68
TPQ (Tree Pattern Query)?
  • TPQ arbre modélisant une requête.
  • Il est destiné à être  mappé  sur
    larborescence du document XML cible

a
ancêtre
e
Arbre T1
c
b
Arbre T2
f
d
parent
g
69
GTP (Generalized Tree Pattern)
  • Le GTP ajoute au TPQ des arcs en pointillés
    symbolisant des relations optionnelles
  • GTP G(T,F) T arbre Fformule
  • Chaque nœud de larbre T est labellisé par une
    variable et possède un numéro de groupe.
  • F est une formule booléenne vérifiant les
    prédicats applicables aux nœuds.
  • Un ensemble de nœuds forment un groupe sils sont
    reliés entre eux par des liens non optionnels.

70
GTP - Exemple
FOR p IN document(auction.xml)//person, l IN
p/profile WHERE l/age gt 25 AND p//state !
MI RETURN ltresultgt p//watches/watch
l/interest lt/resultgt
p.tag person s.tag state l.tag
profile i.tag interest w.tag watches
t.tag watch g.tag age g.content gt 25
s.content ! MI
Relation optionnelle
Numéro de groupe (par convention le groupe 0
inclut lélément root)?
71
Pattern Match
  • Un  Pattern Match  de larbre G dans une
    collection darbres C est un sous-arbre h partiel
  • h G ? C tel que
  • h contient au moins le groupe 0 de G.
  • h préserve la structure relationnel de G.
  • h vérifie la formule booléenne F de G.

72
Pattern match Exemple
On mappe le GTP sur larborescence XML
p
(0)?
XML
1
s
(0)?
l
w
people
(1)?
(0)?
g
t
i
(2)?
11
person
2
(0)?
(1)?
person
GTP
9
6
3
15
12
address
watches
profile
address
profile
8
7
5
4
10
13
14
17
16
state
watch
age
watch
state
age
interest
city
city
s1
30
s2
28
Résultat H1 p-gt2, s-gt4, l-gt9, g-gt10,
w-gt6, t-gt7
73
GTP Universel
  • Il permet de modéliser les requêtes contenant le
    quantificateur  EVERY  dans la clause  WHERE 
  • Un GTP universel est un GTP G(T, F) tel que
    plusieurs arcs soient étiquetés EVERY
  • Un arc peut être étiqueté EVERY seulement sil
    pointe sur un nœud atteignable par des arcs non
    optionnels depuis le nœud racine

74
GTP Universel Exemple
FOR o IN document(auction.xml)? WHERE EVERY b
in o/bidder SATISFIES b/increasegt100 RETURN
ltresultgt o lt/resultgt
F_L pc(o, b) b.tag bidder F_R pc(b,
i) i.tag increase i.content gt100
b F_L ? i (F_R)?
75
GTP Requête imbriquée
FOR p IN document(auction.xml)//person LET a
FOR t IN document(auction.xml)//closed_auct
ion WHERE p/_at_id t/buyer/_at_person RETURN
ltitemgt FOR t2
IN document(auction.xml)//europe/item
WHERE t/itemref/_at_item
t2/_at_id RETURN
t2/name lt/itemgt WHERE
p//age gt 25 RETURN ltperson name
p/name/text()gt a lt/persongt
? Récupère le nom et les items achetés en europe,
par toutes les personnes agées de plus de 25 ans.
76
GTP Requête imbriquée (2)?
p.tag person g.tag age n1.tag
n2.tagname b.tag buyer t.tag
closed_auction i.tag itemref t2.tag
item g.content gt 25 Join Condition p.idb.
person i.itemt2.id
77
Transformation XQuery en GTP
  • XQuery FLWR
  • Une expression FLWR
  • ForClause FOR fv1 IN E1, , fvn IN En.
  • (LetClause LET lv1 E1, , lvn En.)?
  • WhereClause WHERE (E1, , En).
  • ReturnClause RETURN E1 En.
  • Ei FLWR (Requêtes imbriquées) XPATH.

78
Algorithme de transformation
  • Il prend en entrée une expression FLWR et renvoie
    un GTP
  • Il parse au fur et à mesure la requête XQuery en
    utilisant la récursivité afin de gérer les
    expressions FLWR imbriquées dans une clause FOR
    par exemple
  • Le parsing dune expression Xpath entraîne la
    création dun nouveau nœud dans le GTP résultat

79
4. Plan dévaluation
  • La principale motivation derrière les GTP est de
    fournir une base pour une exécution efficace.
  • Pour cela
  • Supprimer les correspondances répétées pour des
    TPQ similaires.
  • Retarder la matérialisation des nœuds autant que
    possible.

80
Algèbre physique
  • Index Scan ISp(S)
  • Sort chaque nœud satisfaisant le prédicat p en
    utilisant un index pour les arbres S dentrée.
  • Filter Fp(S)
  • Sort seulement les arbres satisfaisant le
    prédicat p des arbres S. Lordre est préservé.
  • Sort Sb(S)
  • Trie la séquence dentrée des arbres S sur la
    base de tri b.
  • Value Join Jp(S1,S2)
  • une comparaison des deux séquences d'arbres
    d'entrées, par le prédicat de jointure p. L'ordre
    de la séquence de sortie est basé sur l'ordre de
    séquence d'entrée gauche de S1.

81
Algèbre physique (2)?
  • Structural Join SJr(S1, S2)
  • Les séquences d'arbres S1 et S2 doivent être
    triées en fonction du noeud id. Lopérateur joins
    S1 et S2 basés sur la relation r entre eux (pc ou
    ad)pour chaque paire. La sortie est triée sur S1
    ou S2 si besoin.
  • Group By Gb(S)
  • l'entrée S est triée sur le group by basé sur le
    prédicat b.
  • Merge M(S1,,Sn)
  • Les Sj doivent avoir la même cardinalité k. Pour
    chaque 1ik, joindre l'arbre i avec chaque
    entrée sous une racine artificielle, et produire
    l'arbre. L'ordre est préservé.

82
Traduire le GTP en plan physique
  • Utilisation d'un algorithme spécifique pour
    générer le plan physique à partir du GTP
  • Obtention d'un plan du type

F filter IS tag index scan SSJ structural
semi-join SJ strcutural join OSJ outer
structural join S sort M merge
M
G
G
person, profile
person, profile
S
S
person, profile
person, profile
OSJ
SJ
profile/interest
watches/watch
S
83
Optimisation grâce aux schémas
  • Principe
  • les informations contenues dans le schéma XML
    (.xsd) vont permettrent doptimiser les GTP et
    les plans dexécution physique en résultant

84
Élimination des nœuds  internes 
  • a//b//c ? a//c

a
a
b
c
c
Seulement si le schéma spécifie que tout chemin
de a à c passe par un élément b
85
Deux nœud pour le même élément XML
  • FOR b IN //book
  • WHERE b/title Germinal
  • RETURN ltxgt b/title b/year lt/xgt

b
b
t2
t
y
t
y
Seulement si le schéma spécifie que tout livre ne
possède quun titre !
86
Éliminer les nœuds inutiles
  • FOR a IN ./ab
  • RETURN a/c

a
a
c
b
c
Seulement si le schéma spécifie que tout élément
a possède au moins un sous-élément b !
87
Eliminer un GROUP BY du plan physique
  • RETURN a/sous-element
  • Une clause FOR nécessite un GROUP BY du
    résultat
  • Mais si le schéma spécifie que le sous-élément
    est unique alors ce GROUP BY devient inutile

88
Performances des GTP
  • La méthode dexécution faisant appel aux GTP
    surpasse en rapidité les méthodes de parcours
    classique de larborescence pour lexécution de
    tous les types de requêtes
  • Les auteurs ont effectués ces tests dans
    lenvironement suivant TIMBER native XML
    database, PIII 866MHz, Ms Windows 2000, index sur
    les principaux éléments

89
5. Conclusion
  • Les GTP semblent être actuellement la méthode la
    plus efficace pour XQuery
  • Mode opératoire en 3 étapes

Requête XQuery
Plan physique
GTP
Optimisation par schéma
Résultat
Write a Comment
User Comments (0)
About PowerShow.com