700 likes | 846 Views
Traitement de requêtes XML et applications distribuées. Ioana Manolescu INRIA Futurs - LRI, projet Gemo. Plan. Bases de donn é es distribu é es Bases de donn é es et requ ê tes XML Application XML distribu é e: ActiveXML Distribution et r é plication Gestion de ressources s é mantiques
E N D
Traitement de requêtes XML et applications distribuées Ioana Manolescu INRIA Futurs - LRI, projet Gemo
Plan • Bases de données distribuées • Bases de données et requêtes XML • Application XML distribuée: ActiveXML • Distribution et réplication • Gestion de ressources sémantiques • Optimisation
item auteur titre #CDATA #CDATA #CDATA editeur click XML: un exemple <item>Une introduction aux <title>Légendes du Graal</titre> par <auteur>P.Boulenger</auteur> aux éditions <éditeur>Dunod</éditeur> pour juste 5.55 Euros ! <click>…</click> </item>
a b b c d c c c c d 3 1 2 1 2 3 Propriétés des documents XML ayant un impact sur le stockage (1) • Hétérogénéité • XML permet: des éléments optionnels (?), des répétitions (+, *), des choix (|) • Identité • Deux élements à contenu identique sont différents En comparaison, dans une table relationelle, impossible de discerner entre deux tuples à contenu identiques a/b/c[1] <> a/b/c[2] a/b[count(c)>2]//c
item auteur titre #CDATA #CDATA #CDATA editeur click Propriétés des documents XML ayant un impact sur le stockage (2) • Presence de "mixed content" • "Données dans les éléments" • "Données en dehors des éléments" <item>Une introduction aux <title>Légendes du Graal</titre> par <auteur>P.Boulenger</auteur> aux éditions <éditeur>Dunod</éditeur> pour juste 5.55 Euros ! <click>…</click> </item>
item auteur titre #CDATA #CDATA #CDATA editeur auteur click item editeur click titre #CDATA #CDATA #CDATA Propriétés des documents XML ayant un impact sur le stockage (3) • Ordre des éléments <item>Une introduction aux <title>Légendes du Graal</titre> par <auteur>P.Boulenger</auteur> aux éditions <éditeur>Dunod</éditeur> pour juste 5.55 Euros ! <click>…</click> </item> <item><auteur>P.Boulenger</auteur><click>…</click> <éditeur>Dunod</éditeur><titre>Légendes du Graal</titre>par pour juste 5.55 Euros ! Une introduction aux</item>
departement personne personne responsable "Dupont" employe "Dupont" adresse adresse rue no ville rue no ville Paris 2 Paris 35 Lafayette Bd Opera Propriétés des documents XML ayant un impact sur le stockage (4) • Importance de la structure • Codée implicitement • Souvent l'interrogation navigue la structure
Propriétés des documents XML ayant un impact sur le stockage (5) • Présence d'un schéma • S'il existe, il peut être utilisé pour systématiser le stockage département personne personne responsable "Dupont" employe "Dupont" adresse adresse rue no ville rue no ville Paris 2 Paris 35 Lafayette Bd Opera
departement nom: "Dupont" nom: "Dupont" personne personne Fonction: responsable Fonction: employe adresse adresse ville rue no rue no ville Paris 2 35 Paris Lafayette Bd Opera Interrogation de documents XML: XPath • Langage de chemin dans le document • /département • /département/personne/@nom • /département/personne[/@nom="Dupont"]/adresse • //personne[/@nom="Dupont"]/ancestor-or-self::* • //personne[/@nom="Dupont"]/previous-sibling::* • //personne//ville/text()
ancestor preceding-sibling following-sibling self descendent Puissance de l'interrogation par XPath • Partition du document selon les axes Xpath • Conditions existentielles //département[person/address/ville="Paris"]//person; • Quelques fonctions d'aggrégation • Min, max, count
Limitations de XPath • Impossible d'exprimer une corrélation entre des données situées sur des chemins différents • Pas de jointure • Ne peut retourner que "des noeuds éxistants" • Pas de re-formulation, combinaison de plusieurs documents • "Langage d'adressage" non pas "langage de requêtes" • Requête: sélection, corrélation, reconstruction
departement nom: "Dupont" nom: "Dupont" personne personne Fonction: responsable Fonction: employe adresse adresse ville rue no rue no ville Paris 2 35 Paris Lafayette Bd Opera Requêtes XQuery • for $x in document("d.xml")//personnewhere$x/@fonction/text()="employe"return$x/@name;
departement nom: "Dupont" nom: "Dupont" personne personne Fonction: responsable Fonction: employe adresse adresse ville rue no rue no ville Paris 2 35 Paris Lafayette Bd Opera Requêtes XQuery • <tousLesDuponts> for $x in document("d.xml")//employe where $x/@name/text()="Dupont" return <fonction> $x/@fonction/text() </fonction></tousLesDuponts>
departement nom: "Dupont" nom: "Dupont" personne personne Fonction: responsable Fonction: employe adresse adresse ville rue no rue no ville Paris 2 35 Paris Lafayette Bd Opera Requêtes XQuery • for $x in document("d.xml")//personne, $y in document("d.xml")//personnewhere $x/@name/text()=$y/@name/text() and $x/@fonction/text()!= $y/@fonction/text()return $x, $y;
Puissance de l'interogation par XQuery • XPath • Jointures • Restructurations arbitraires ("nouveau XML") • Imbrication arbitraire • Possibilité d'ignorer l'ordre des données en entrée (mot-clé UNORDERED) • Typage, sémantique formelle • Extensibilité : fonctions XQuery • Y compris fonctions récursives... • Très puissant, mais plus optimisable que XSL-T
Systèmes à stockage persistent Systèmes sans stockage Bases de données XML supportant XQuery Stockage natif Streaming Stockage non-natif Compilation de code
Bases de données XML supportant XQuery • Stockage natif (construit) pour XML • Natix, Xyleme, Timber, OrientX, Sedna, Jungle, GeX,... • Stockage non-natif (basé sur le relationnel) • IBM, Oracle, MS, LegoDB, Rainbow, XQuark ... • Systèmes "streaming" • Enosys, BEA • Systèmes "compilation de code" • Galax, Kawa, XDuce, CDuce, QizX,...
Chargement dans le SGBDR Recomposition du document • Traitement de requêtes • Traduction de XQuery vers SQL • Exécution de la requête SQL • Construction du résultat XML Stockage non-natif Document XML • SGBDR (ou R-O) • Persistence • Indexation • Fiabilité • Transactions
Stockage non-natif • Intérêt: • Réutiliser l'existant (un SGBD est coûteux, difficile à construire, installer, configurer) • Problèmes à résoudre: • Choix du schéma relationnel de stockage • Les documents peuvent avoir un schéma XML • Chargement automatique de documents XML • Traduction des requêtes XML en requêtes SQL • Construction du résultat XML
Stockage natif • Objectifs • Regroupement des objets fréquemment utilisés simultanément (localité de l'accès) • Primitives d'accès efficace (e.g. //person) • Primitives d'évaluation efficace (e.g. //person//name) • Techniques • Etiquetage des noeuds crucial • Usage de structures d'indexation génériques de niveau plus bas (B-trees, R-trees...)
Bases de données XML: ce qui reste à faire • Bonne diffusion des connaissances sur le standard XQuery • La spécification est assez complexe • Ce n'est pas une excuse • Langage: mises à jour, interrogation textuelle • Mise en oeuvre (natif): • algèbre standardisée (ou début de consensus...) • modèle d'exécution • techniques générales et validées d'optimisation
Nouveaux problèmes ? • XML s'adapte bien à tous les scénarios distribués • Bases de données XML distribuées = Bases de données XMLdistribuées ? Bases de données XMLdistribuées ?
Avantages de XML pour la gestion distribuée de données • HTML --> XML, Word --> XML: volume ! • Rapports annuels INRIA en XML ! • Nombreux standards facilitent l'interopérabilité entre plusieurs sites • XPath, XQuery, XSL • Dialectes XML spécifiques à des applications • Services Web: APIs de communication basées sur XML • Standards: SOAP pour l'acheminement de messages WSDL pour les signatures XML BPEL4WS pour l'orchestration ... • Une application: ActiveXML
Une application de gestion de données XML distribuées: ActiveXML • Projet développé a l'INRIA Futurs, projet Gemo • 09/2001 -- présent • Equipe: Serge Abiteboul Bernd Amann Jérome Baumgarten Omar Benjelloun Angela Bonifati Bogdan Căutiş Grégory Cobéna Cosmin Cremarenco Frédéric DangNgoc Florin Drăgan Ioana Manolescu Tova Milo Benjamin Nguyen Antonella Poggi Nicoleta Preda Gabriela Ruberg Nicolaas Ruberg ....
Principe de AXML • Active XML : XML contenant des appels à des services Web • Paramètres : XML • Résultats : XML, insérés dans le document lorsque l'appel de service retourne • Documents XML/HTML contenant des appels à des composantes actives / services : • Tous les langages de script dans HTML • Macromedia MX (DreamWeaver) • .NET etc.
XML avec des appels de services <directory> <dept name="Toy“> <sc>toy.xyz.com/GetToyPersonel()</sc> </dept> <dept name=“DVD“> <sc>dvd2000.com/GetDVDPersonnel()</sc> </dept> </directory> Appels de services • Appels vers n'importe quel service enveloppé en SOAP : • e-bay.net, google.com, amazon.com, etc. • services AXML (requêtes XML)
Example: document AXML après l'évaluation de l'appel de service <directory> <dept name="Toy“> <person pname=“Smith”> <phone>01…</phone> <pda> <sc>toy.xyz.com/GetPDA(../../@pname)</sc> </pda> </person> <sc>toy.xyz.com/GetToyPersonel()</sc> </dept> <dept name=“DVD“> <sc>dvd2000.com/GetDVDPersonnel()</sc> </dept> </directory> Résultat Appel
Requêtes sur des documents AXML : XQuery, XPath • Services AXML : définis comme des requêtes XQuery sur les documents AXML let service Get-Toy-Personnel( ) be for $a in document("toy.xyz.com/members.axml")/member, $b in $a//name, $c in $a//phone, $d in $a//pda return <person pname={ $b/text() }> { $c } { $d } </person>
Architecture globale pour Active XML AXML peer S2 AXML peer S1 query SOAP XQuery processor Evaluator AXML AXML peer S3 AXML read update SOAP wrapper read update consults SOAP service descriptions SOAP service XML AXML document store AXML SOAP client service call service result
Problèmes de gestion de données distribuées avec ActiveXML • Distribution et réplication de documents AXML[ABC+03] • Indexation XML en P2P: couplage de AXML avec un réseau DHT[AMP04,AMP05] • Optimisation de calculs AXML intensionnels[RRM04]
Réplication et distribution des documents Active XML • Problème de gestion de données distribuées • Contexte : architecture peer-to-peer • Motivation : gestion efficace et flexible pour • Données (A)XML • Services portables (pouvant être installés ailleurs que dans leurs peer d'origine): Java, XQuery • Solution : • Langage déclaratif pour réplication (distribution) • Traitement de requêtes XML • Réplication dynamique
allCNN weather sports world US forecast archive … … n Africa Europe Asia weather … forecast archive France Europe … … … … Distribution et réplication des documents XML
allCNN weather sports world US forecast archive … … n Africa Europe Asia weather … forecast archive France Europe … … … … Distribution et réplication des documents XML
Europe Europe … … id1 id1 France France France … … … Distribution et réplication manuelle des données XML • Directive de réplication : • Une requête XQuery sur doc chez pi • Le résultat de la requête est copié chez pj • Conservant l'identité des noeuds copiés ou non • Conservant les liens fils-père et père-fils ou non devient
Europe Europe … … France France … … Distribution et réplication manuelle des données XML • Directive de réplication : • Une requête XQuery sur doc chez pi • Le résultat de la requête est copié chez pj • Conservant l'identité des noeuds copiés ou non • Conservant les liens fils-père et père-fils ou non id1 devient id1 France …
Europe … France … Distribution et réplication manuelle des données XML • Directive de réplication : • Une requête XQuery sur doc chez pi • Le résultat de la requête est copié chez pj • Conservant l'identité des noeuds copiés ou non • Conservant les liens fils-père et père-fils ou non • Si pidécide d'effacer lés données => distribution Europe … devient France …
Europe Europe Europe fusion => id1 … id1 id1 … France France France France … … … Réplication et distribution, détails • Chaque peer garde les liens sortants dans un résumé des points de sortie • Il existe une copie "master" de chaque document • Et elle est connectée • Conceptuellement : La fusion basée sur des identifiants de tous les fragments d'un document donne le document même
Interrogation de documents XML avec réplication et distribution • La requête peut spécifier la localisation des données interrogées (~version) • {Doc("cnn.com")/world/Europe/France}@p1 {/Economie}@p2 • Plusieurs variantes possibles • @local • @localORAny • @masterORlocalORAny • Si au moins une ambiguïté est possible, il faut choisir la version à utiliser
id1 France … Europe … France … Quelle version utiliser ? • Requête sur pi: {Doc("cnn.com/root.xml")/world/Europe/France}@any cnn • Le traitement ne peut commencer que : • D'une racine ("cnn.com/root.XML") • D'un noeud de pi • Le reste n'est pas connu / pas accessible de pi • L'évaluation traverse plusieurs peers • Chaque peer : • Détermine ce qu'il peut traiter de la requête (utilisant les points de sortie) • Choisit le peer suivant world id1
id1 France … Europe … France … Choix du peer suivant • Analyse "what-if" récursive initiée chez pi • Ensemble de peers candidats • Chaque candidat pourrait à son tour déléguer une partie du travail à un autre • Pi ne connaît pas ce choix (ne "voit" pas plus loin que le peer suivant). • Pi demande un "devis" à chaque peer candidat • Un devis = un plan d'exécution réparti • Identification des peers qui exécuteront chaque pas cnn world id1
id1 France … Europe … France … Modèle de coût et choix des peers suivants • Paramètres objectifs pour chaque requête x peer : CPU, I/O, réseau, batterie, … cnn • Chaque peer => ensemble de poids subjectifs pour chaque paramètre de coût • P.ex.: "en dehors de .inria.fr, coût 0" • Chaque peer demande aux candidats les coûts objectifs… • Et choisit le devis minimisant son coût subjectif (ou refuse de coopérer) • Ceci peut arriver à plusieurs niveaux • Résultat = meilleur consensus négociable parmi les peers accessibles à pi world id1
Choix du peer suivant, variantes • Aucune analyse des coûts • Heuristiques (locales !) • De manière non-deterministe • Choix sous-optimaux • Limiter l'ensemble de candidats • Au plus n à chaque pas
P5 P2 P3 P1 P10 P6 P8 P7 P4 P9 Scénario de communication pour le traitement d'une requête • Analyse des coûts
P5 P2 P3 P1 P10 P6 P8 P7 P4 Scénario de communication pour le traitement d'une requête • Analyse des coûts P9,P10 P8,P3 P3 P9
P5 P2 P3 P1 P10 P6 P8 P7 P4 Scénario de communication pour le traitement d'une requête • Analyse des coûts P7,P9,P10 P6,P8,P3 P8,P3 P3 P9
P5 P2 P3 P1 P10 P6 P8 P7 P4 Scénario de communication pour le traitement d'une requête • Analyse des coûts P5,P6,P8,P3 P9
P5 P2 P3 P1 P10 P6 P8 P7 P4 P9 Scénario de communication pour le traitement d'une requête • Exécution P5,P6,P8,P3