XQuery - PowerPoint PPT Presentation

About This Presentation
Title:

XQuery

Description:

n cessit de stocker les documents XML. n cessit de pouvoir interroger ces documents ... Mots-cl s. Sur des for ts dont les arbres sont des documents ... – PowerPoint PPT presentation

Number of Views:238
Avg rating:3.0/5.0
Slides: 23
Provided by: franoisbo
Category:

less

Transcript and Presenter's Notes

Title: XQuery


1
XQuery
  • 1. Introduction
  • 2. Modèle de données
  • 3. XQuery par l'exemple
  • 5. Conclusion

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 ...

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 ?

4
Insuffisances des modèles classiques
  • Modèle Relationnel
  • Schéma fixe le plus complet possible
  • Force une structure tabulaire
  • Intégration objet difficile
  • Modèle Objet
  • Plus souple mais fortement typé
  • Nécessite un schéma
  • Définition de type union possible
  • Mise en œuvre difficile

5
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
  • SQL à 30 ans !
  • Inventé en 1970 pour la gestion
  • XQuery le successeur ?

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

7
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)
  • ...

8
Exemple de documents
  • ltRestaurant type"francais"
  • categorie ""gt
  • ltNomgtLa Licornelt/Nomgt
  • ltAdressegtltRuegtDes Moineslt/Ruegt
  • ltVillegtParislt/Villegt
  • lt/Adressegt
  • ltTéléphonegt0148253278lt/Téléphonegt
  • ltTéléphonegt0614105407lt/Téléphonegt
  • ltFaxgt0133445500lt/Faxgt
  • ltManagergtDupuislt/Managergt
  • ltCommentsgtBla Blalt/Commentsgt
  • lt/Restaurantgt
  • ltBar type "anglais"gt
  • ltNomgtRose and Crownlt/Nomgt
  • lt/Bargt
  • ltBargt
  • lt/Bargt
  • lt/Guidegt
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltGuide Version "2.0"gt
  • ltRestaurant type"francais" categorie""gt
  • ltNomgtLe Moulinlt/Nomgt
  • ltAdressegt ltRuegtdes Vigneslt/Ruegt
  • ltVillegtMouginslt/Villegt
  • lt/Adressegt
  • ltMenu Nom"Mer" Prix"15"gt
  • ltEntréegtMouleslt/Entréegt
  • ltPlatgtPoisson frais lt/Platgt
  • ltDessertgtlt/Dessertgt
  • lt/Menugt
  • ltMenugt lt/Menugt
  • ltManagergtDenise Fabrelt/Managergt
  • lt/Restaurantgt

9
La puissance de XQuery
XQUERY
Questions tabulaires
Recherche d'information
Structure d'arbres
10
Expressions de chemins (XPath)
11
Exemple 1 XPath
  • (Q1) Noms de tous les restaurants
  • collection(Restaurants)/Restaurant/Nom/text()
  • collection(Restaurants)/Restaurant/Nom

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

13
Exemple 4 Sélection
  • Lister le nom des restaurants de Cabourg
  • collection(Restaurants)/Restaurant
  • Adresse/Ville Cabourg" /Nom
  • ltresultatgt
  • FOR R IN collection("Restaurants")/Restaurant
  • WHERE R/Adresse/Ville Cabourg
  • RETURN R/Nom
  • lt/resultatgt

Langages de requêtes
14
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

15
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)/Restaura
    nt
  • WHERE r//Ville c
  • RETURN r
  • ltRestaurantsgt

16
Exemple 7 Imbrication
  • 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)/Restau
    rant
  • WHERE r/_at_categorie ""
  • RETURN r/Adresse/Ville/text()
  • RETURN h/Adresse

17
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

18
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 avg(collection(Restaurants)//
    Restaurant r//Menu/_at_Prix)
  • RETURN
  • ltresultatgt
  • r/Nom
  • ltavgPrixgtalt/avgPrixgt
  • lt/resultatgt

19
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

20
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 r/Comments CONTAINS (Excellent, Good)
  • AND r/Adresse/Ville Paris
  • RETURN r/Nom
  • SORTBY (r/Nom DESCENDING)

21
Exemple 12 XML actif (AXP)
  • 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

22
Bilan XQuery
  • Véritable L4G XML
  • Très puissant
  • Restriction
  • Projection
  • Jointure
  • Imbrication
  • Restructuration
  • Agrégation
  • Tri
  • Quantificateurs
  • Mots-clés
  • Sur des forêts dont les arbres sont des documents
Write a Comment
User Comments (0)
About PowerShow.com