Post on 17-Jan-2016
description
Traitement de requêtes XML et applications distribuéesIoana 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
I. Bases de données et requêtes XML
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>
item
titre auteur#CDATA #CDATA #CDATAediteur
click
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
3
a
b
2 31 12
b
c d c c c dc
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
titre auteur#CDATA #CDATA #CDATAediteur
click
<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>
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>
item
titre auteur#CDATA #CDATA #CDATAediteur
click
item
click editeurauteur titre#CDATA#CDATA
#CDATA
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
departement
personne
adresseresponsable
Paris2
"Dupont"
rue
Lafayette
no ville
personne
adresseemploye
Paris35
"Dupont"
rue
Bd Opera
no ville
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
adresseresponsable
Paris2
"Dupont"
rue
Lafayette
no ville
personne
adresseemploye
Paris35
"Dupont"
rue
Bd Opera
no ville
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()
departement
personne
adresseFonction:
responsable
Paris2
nom:"Dupont"
rue
Lafayette
no ville
personne
adresseFonction:employe
Paris35
nom:"Dupont"
rue
Bd Opera
no ville
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
preceding-sibling
ancestor
following-siblingself
descendent
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
Requêtes XQuery
for $x in document("d.xml")//personnewhere $x/@fonction/text()="employe"return $x/@name;
departement
personne
adresseFonction:
responsable
Paris2
nom:"Dupont"
rue
Lafayette
no ville
personne
adresseFonction:employe
Paris35
nom:"Dupont"
rue
Bd Opera
no ville
Requêtes XQuery <tousLesDuponts>
for $x in document("d.xml")//employewhere $x/@name/text()="Dupont"return <fonction> $x/@fonction/text()
</fonction></tousLesDuponts>
departement
personne
adresseFonction:
responsable
Paris2
nom:"Dupont"
rue
Lafayette
no ville
personne
adresseFonction:employe
Paris35
nom:"Dupont"
rue
Bd Opera
no ville
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;
departement
personne
adresseFonction:
responsable
Paris2
nom:"Dupont"
rue
Lafayette
no ville
personne
adresseFonction:employe
Paris35
nom:"Dupont"
rue
Bd Opera
no ville
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
Bases de données XML supportant XQuery
Systèmes à stockage persistent Systèmes sans stockage
Stockage natif
Stockage non-natif
Streaming
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,...
Stockage non-natif
SGBDR (ou R-O)• Persistence• Indexation• Fiabilité• Transactions
Document XML
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
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
II Bases de données + distribution + XML ?
Nouveaux problèmes ?
XML s'adapte bien à tous les scénarios distribués Bases de données XML distribuées =
Bases de données XML distribuées ?
Bases de données XML
distribué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 AmannJérome BaumgartenOmar BenjellounAngela BonifatiBogdan CăutişGrégory CobénaCosmin CremarencoFrédéric DangNgoc
Florin DrăganIoana ManolescuTova MiloBenjamin NguyenAntonella PoggiNicoleta PredaGabriela RubergNicolaas 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
XQueryprocessor Evaluator
query
servicedescriptions
readupdate read
updateconsults SOAP
wrapper
SOAP
SOAP
AXML peer S3
SOAPservice
SOAP client
AXML peer S1
service call service result
AXML document store
AXML peer S2
AXML
XML
AXML
AXML
Problèmes de gestion de données distribuées avec ActiveXML1. Distribution et réplication de documents AXML
[ABC+03]
2. Indexation XML en P2P: couplage de AXML avec un réseau DHT[AMP04,AMP05]
3. Optimisation de calculs AXML intensionnels[RRM04]
II.1. Réplication et distribution de documents ActiveXML
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 :
1. Langage déclaratif pour réplication (distribution)
2. Traitement de requêtes XML
3. Réplication dynamique
Distribution et réplication des documents XML
allCNN
sports US world
…
weather
forecast archive …
Africa
…Asia
…Europe
…
nEurope
…weather
forecast archive France
…
Distribution et réplication des documents XML
allCNN
sports US world
…
weather
forecast archive …
Africa
…Asia
…Europe
…
nEurope
…weather
forecast archive 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
Europe
…France
…
devient
Europe
…France
…
France
…
id1 id1
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
Europe
…France
…
devient
Europe
…France
…
France
…
id1 id1
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 pi décide d'effacer lés données => distribution
Europe
…France
…
devient
Europe
…France
…
Réplication et distribution, détails
Chaque peer garde les liens sortants dans un résumé des points de sortie
Europe
…France
…
France
…
id1 id1
Europe
France fusion =>Europe
…France
…
id1
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
Quelle version utiliser ? Requête sur pi : {Doc("cnn.com/root.xml")/world/Europe/France}@any
Europe
…France
…
id1
France
…
id1
cnn
world
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
Choix du peer suivant
Analyse "what-if" récursive initiée chez pi
Europe
…France
…
id1
France
…
id1
cnn
world
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
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, …
Europe
…France
…
id1
France
…
id1
cnn
world
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
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
Scénario de communication pour le traitement d'une requête1. Analyse des coûts
P2
P1
P3
P4
P7
P5
P9P10
P6
P8
Scénario de communication pour le traitement d'une requête1. Analyse des coûts
P2
P1
P3
P4
P7
P5
P9P10
P6
P8P9,P10P8,P3
P3
Scénario de communication pour le traitement d'une requête1. Analyse des coûts
P2
P1
P3
P4
P7
P5
P9P10
P6
P8P8,P3 P3
P7,P9,P10P6,P8,P3
Scénario de communication pour le traitement d'une requête1. Analyse des coûts
P2
P1
P3
P4
P7
P5
P9P10
P6
P8
P5,P6,P8,P3
Scénario de communication pour le traitement d'une requête2. Exécution
P2
P1
P3
P4
P7
P5
P9P10
P6
P8
P5,P6,P8,P3
Réplication de documents AXML Que faire si le fragment XML à répliquer contient un
appel de service ? Ne pas le prendre (l'ignorer)
Europe
…France
…
devient
Europe
…France
…
France
…
id1 id1
météo.fr/getForecast() météo.fr/getForecast()
Réplication de documents AXML Que faire si le fragment XML à répliquer contient un
appel de service ? Mettre un lien vers le résultat sur le peer d'origine
Europe
…France
…
devient
Europe
…France
…
France
…
id1 id1
météo.fr/getForecast() météo.fr/getForecast()
Réplication de documents AXML Que faire si le fragment XML à répliquer contient un
appel de service ? Le prendre
Europe
…France
…
devient
Europe
…France
…
France
…
id1 id1
météo.fr/getForecast() météo.fr/getForecast()
Réplication de documents AXML Que faire si le fragment XML à répliquer contient un
appel de service ? Si service XQuery : prendre la définition de service aussi
Europe
…France
…
devient
Europe
…France
…
France
…
id1 id1
météo.fr/getForecast() météo.fr/getForecast()
localGetForecast()
Réplication de documents AXML Que faire si le fragment XML à répliquer contient un
appel de service ? Si service XQuery : prendre la définition de service aussi,
et les données nécessaires
Europe
…France
…
devient
Europe
…France
…
France
…
id1 id1
météo.fr/getForecast() météo.fr/getForecast()
localGetForecast()
Réplication dynamique (automatique) de documents AXML Chaque peer enregistre un coût global subjectif pour les
requêtes et appels de services fait sur ce peer
En prenant des copies locales de données et/ou des services nécessaires, le peer peut améliorer le coût global subjectif Limitations : espace ; bande passante
Algorithme récursif greedy de recherche Recommande des choix de réplication Transparent pour l'utilisateur
II.2. Indexation XML en P2P: couplage AXML et DHT
Ajouter un catalogue global à AXML Requête: "//personne" Sémantique:
tous les éléments XML <personne>, de tous les documents, de tous les peers.
Plus généralement, "Tree Pattern Queries" Solution:
Utiliser des services DHT comme des Web services Calculer des clés DHT à partir des documents XML A l'aide d'AXML, distribuer l'index sur la DHT Exploiter l'index pour répondre à des requêtes
Autres facettes: connaissances sémantiques; langage d'interrogation moins précis (XML-IR)
Catalogue global pour ActiveXML
Peer p1
Peer p4
Peer p2
Active XML Active XML
Active XMLPeer p5
Active XML
departement
personnenom:
"Durand" personnenom:
"Dupont"
doc1.xml
tag:personne | p1,doc1
tag:departement | p1,doc1
val:Dupont | p1,doc1
val:Durand | p1,doc1
//personne//nom ?
Peer p3
nom ?
personne?
getData
Active XML
tag:nom | p1, doc1
Indexation de connaissances sémantiques en P2P Tag:nom, val:Durand Concept:database Concept:XMLDatabase isA concept:database Concept:architecture partOf concept:database Tag:DBBook relatedTo concept:database
Graphe déterminé par les relations entre ressources Requêtes = navigation sur graphe
Indexation sur DHT des noeuds et arrêtes du graphe
Intérêt de ActiveXML pour la gestion de données sur DHT Indexation intesionelle
Au lieu d'indexer (key, val1, val2, ..., val3)indexer(key, appelDeService)où l'activation de l'appel de service fournit les valeurs
Compromis Taille de l'index Temps de traitement de requêtes
Choix des ensembles (key, vali) à "compresser" Automatique / user-defined / workload / sémantique...
II.3. Optimisation de calculs intensionnels
Calculs intensionnels
Un paramètre d'un appel de service peut être un appel de service altavista.com/translate(<from>Tchek</from>,
<to>Francais</to>, crystalGlasses.cz/getCatalog())
Matérialiser un document AXML: effectuer tous les appels de services, dans le bon ordre
Plusieurs stratégies possibles
vamos.futurs.inria.fr altavista.com crystalGlasses.cz
Calculs intensionnels
Un paramètre d'un appel de service peut être un appel de service altavista.com/translate(<from>Tchek</from>,
<to>Francais</to>, crystalGlasses.cz/getCatalog())
Matérialiser un document AXML: effectuer tous les appels de services, dans le bon ordre
Plusieurs stratégies possibles
vamos.futurs.inria.fr altavista.com crystalGlasses.cz
Calculs intensionnels
Un paramètre d'un appel de service peut être un appel de service ANY/translate(<from>Tchek</from>,
<to>Francais</to>, crystalGlasses.cz/getCatalog())
Matérialiser un document AXML: effectuer tous les appels de services, dans le bon ordre
Plusieurs stratégies possibles
vamos.futurs.inria.fr googleTranslate.com crystalGlasses.cz
Calculs intensionnels
Un paramètre d'un appel de service peut être un appel de service ANY/translate(<from>Tchek</from>,
<to>Francais</to>, crystalGlasses.cz/getCatalog())
Matérialiser un document AXML: effectuer tous les appels de services, dans le bon ordre
Plusieurs stratégies possibles
vamos.futurs.inria.fr googleTranslate.com crystalGlasses.cz
Optimisation des calculs intensionnels Espace de recherche
Choix du peer qui fournit un service appellé Choix du peer qui invoque un service Heuristiques
Modèle de coût Execution de services, transferts, ...
Stratégie de recherche 1 peer coordinateur; greedy décision distribuée: travail en cours
Sommaire
Travaux importants sur la gestion de données distribuées
Travaux existants (et à faire) pour la gestion de données XML
La combinaison des deux est possible Application intéressante: ActiveXML
Modèle de données orienté sur les arbres Modèle d'exécution distribué
Beaucoup de croisements intéressants à faire Besoin de plus de résultats XML
Quelques références (très peu !) Stockage et traitement de requêtes XML
I.Manolescu: "XML query processing: storage and query model interplay", tutorial EDBT 2004 Summer School
Active XML: www.purl.org/axml Applications AXML décrites ici:
[ABC+03] S.Abiteboul, A.Bonifati, G.Cobena, I.Manolescu and T.Milo. "Dynamic XML Documents with Distribution and Replication", SIGMOD 2003[AMP04] S.Abiteboul, I.Manolescu and N.Preda. "Constructing and querying P2P warehouses of XML resources", Semantic Web and Databases Workshop 2004[AMP05] S.Abiteboul, I.Manolescu and N.Preda."Peer-to-peer warehousing of XML resources", ICDE 2005 (demo)[RRM04] N.Ruberg, G.Ruberg and I.Manolescu. "Towards cost-based optimization of data-intensive Web service computations", SBBD 2004
Merci