Lri, projet gemo

Transcription

Lri, projet gemo
Ioana Manolescu
INRIA Futurs - LRI, projet Gemo
n
n
n
Contexte: bases de donnees XML
Traitement de requêtes sur des bases de
donnees XML (quelques notions...)
Quelques applications:
q
q
q
n
Active XML (modèle de base)
Optimisation de calculs distribues ActiveXML
Gestion de masses de donnees XML en P2P
Conclusion
n
n
n
n
Grands volumes de donnees
Stockage persistent, résistant aux pannes, assurant
l'integrite et la cohérence des donnees
Accès en lecture et écriture
Access aux donnees = requête
q
q
q
Requêtes exprimées dans un langage déclaratif
Requêtes compilées dans des programmes d'acces aux
donnees (plan d'execution)
Compilation = optimisation de requêtes
n
Examiner l'espace des plans d'execution pour
une requête donnees (souvent un sous-espace)
n
Estimer les performances de chaque plan
d'execution: estimation de coût
n
Choisir le plan le moins coûteux
SGBD
Utilisateur
Catalogue de
donnees
Analyseur
Statistiques
sur les donnees
Optimiseur
Plan d'exécution
Execution
Données
Modèle de coût
Stratégies de recherche
n
"Think big"
q
q
q
q
n
L'optimisation de requêtes n'est pas de l'optimisation du
code
q
q
n
Grands volumes de donnees
Grand nombre de sources de donnees
Grande complexité / heterogeneite de donnees
Traitement complexes,
"Code" (lg. de requêtes) très spécialise
L'optimisation tient compte des donnees
Centre d'interet un peu différent de "global computing /
middleware":
q
manipulations efficaces de grands volumes de donnees
n
Exploiter (interroger, mettre à jour) des données
réparties sur plusieurs sites
S3
S1
S4
n
Exploiter (interroger, mettre à jour) des données
réparties sur plusieurs sites
S2
S3
S1
S5
S4
n
Connaissances nécessaires pour l'interrogation de
données distribuées :
S2
S3
S1
¢
Catalogue
(quelles données ?)
¢
Localisation
(où sont les données ?)
¢
Capacités de calcul
(qui peut contribuer à
traiter la requête ?)
Coûts d'exécution
(quelles performances ?)
Décision sur l'exécution
(qui traite la requête ?
comment ?)
¢
S5
S4
¢
1.
Hétérogénéité des données
(1a) Modèle, nature, schéma
2.
Hétérogénéité des sites
(2a) Capacités de traitement de requêtes
3.
Partage de l'information sur :
(3a) Les données qui se trouvent dans le système, et
leur localisation (configuration de données)
(3b) Les capacités de calcul de chaque site, et les
coûts associés
4.
Prise de décisions sur :
(4a) La distribution du travail entre les sites
(4b) L'exécution d'un fragment de travail alloué à un site
(4c) Les changements de configuration (réplication, distribution)
! "#
n
n
(1), (2) : sites et données homogènes
(3a) Catalogue et configuration :
q
q
Chaque site connaît sa configuration locale
Pour utiliser sur S1 des données de S2, il faut établir
(manuellement) un lien de données
n
n
n
La configuration de S1 est élargie par l'"importation" des
données
Partage de l'information ponctuel, unidirectionnel
(3b) Capacités de calcul identiques ; coûts ??
q
Optimisation dans Oracle 8 à base de coût ou de règles ;
usage de hash join une heuristique …
! "#
n
(4) Prise de décision sur :
(4a) Distribution du travail pour l'exécution d'une
requête : le serveur qui la reçoit
(4b) Exécution d'un fragment de travail alloué : le
serveur auquel elle est déléguée (SQL)
(4c) Changements de configuration : l'administrateur
du SGBD (manuel)
! "
Utilisateur
Site S1
Catalogue local +
liens
Statistiques
locales
Site S2
Optimiseur
Analyseur
Optimiseur
Plan d'exécution
distribué
Execution
Données
Négociation
de la
distribution
du
travail
Execution
Données
Site S3
Optimiseur
Execution
Données
! "
SQL
Utilisateur
Site S1
Catalogue local +
liens
Site S2
Optimiseur
Analyseur
Execution
Statistiques
locales
Optimiseur
Plan d'exécution
distribué
SQL
Données
Site S3
Execution
Optimiseur
Données
Execution
Données
$
#
n
n
(1) Données hétérogènes
q SGBD : R, R-O, XML, …
q Fichiers : SGML, tabulaire, texte…
q LDAP ; mail ; Excel ; …
(2) Sites hétérogènes
q
q
Certains possèdent uniquement des données et des
adaptateurs pour les données
n Capacités de traitement de requêtes souvent limitées
D'autres sites possèdent des médiateurs
% !& !
'
$
Adaptateur A1 (source web)
Médiator
Utilisateur
Execution
Analyseur
Optimiseur
Plan d'exécution
distribué
Adaptateur A2 (fichiers)
Execution
Execution
Adaptateur A3 (programme)
Données
Execution
% !& !
)
#
n
(
Adaptateur A1
Ex. LeSelect
Médiateur M1
Adaptateur A3
Médiateur M3
Adaptateur A4
SGBD
Médiateur M2
Adaptateur A2
% !& ! &
)
#
n
!&
(
Ex. Disco, Tsimmis
Médiateur M1
Médiateur M3
Adaptateur A4
SGBD
Médiateur M2
Adaptateur A2
Adaptateur A3
Adaptateur A1
*
'
! '
+#
n
Chaque médiateur détient le catalogue des données des
adaptateurs reliés
q
n
Un seul médiateur, catalogue global
q
n
Disco, Tsimmis, Garlic, LeSelect
Information Manifold
Plusieurs médiateurs, service de catalogue distribué et
de localisation
q
Mariposa, ObjectGlobe
*
!
,
n
Les médiateurs ont souvent des capacités de traitement
plus riches que celles des adaptateurs
q
n
Surtout si adaptateurs au-dessus de sources de type fichier
(pas d'operations complexes)
En règle générale, un médiateur connait les capacités de
traitement de ses adaptateurs
q
q
n
+#
D'avance (Tsimmis, Disco)
En demandant lors de chaque exécution (Garlic, LeSelect)
Un médiateur peut ne pas vouloir traiter une requête
q
Si on ne lui paie pas assez (Mariposa, modèle économique)
-
!.
+#
n
Souvent, à capacités de traitement égales, on prefère
déleguer le travail aux adaptateurs
q
q
n
Il est très difficile de caractériser les coûts associés aux
adaptateurs
q
n
On considère qu'un adaptateur "en sait plus"
Réduction des coûts de transfert
Solutions les plus avancées : Disco, Garlic
En général, un médiateur connaît les coûts
q
q
De ses adaptateurs, d'avance
Des médiateurs et adaptateurs impliqués dans l'exécution
d'une requête, lors de l'exécution
!
$ !
/#
n
Le médiateur ayant reçu la requête décide de la répartition du
travail
q En choisissant celle qui minimise sa fonction de coût
q Apres avoir négocié avec les autres médiateurs et
adaptateurs
n
n
n
n
Les paramètres de la fonction de coût
La rémunération (Mariposa)
Certains participants choisissent comment exécuter leur
travail: LeSelect, Disco
Certains participants s'engagent, lors de l'optimisation, à une
exécution précise : Garlic
!
n
! '
/#
Réplication généralement ignorée
q
n
!&
,
Ne peut être prise en compte sans un service de catalogue
global
Exception remarquable : Mariposa
q
q
q
Exécuter une requête rapporte de l'"argent" au médiateur
Pour améliorer ses gains, un médiateur décide d'acheter des
données à un autre (copie locale), afin de répondre à des
requêtes sur ces données
Mécanisme auto-reglé de migration de données là où elles
sont nécessaires
( (
n
Systèmes structurés
q
q
n
Organisés dans une structure de données distribuées et
symétrique (p.ex. distributed hash table)
Certaines primitives de recherche de données
Systèmes non-structurés
q
q
q
q
Absence de catalogue global (données, peers)
Notion de voisinage ("ceux que je connais"), indirection
style IP
Réseau de "connaissances" adaptatif, auto-configurable
Réplication dynamique de données
0
( (
(
n
!
1ere étape : propagation de la question (time-to-live)
q
Identification des peers susceptibles de répondre
P5
P6
P2
P3
P1
P8
P7
P4
P9
P10
0
( (
!
n
2e étape : choix des sites à interroger, collection des
résultats
P5
P2,
P3, P3,
P9
P8, P9
P6
P2
P3
P1
P8
P7
P4
P9
P10
1
$
( (
n
(3a) Modèle de données: fichiers, relationnel, XML
arrive...
q
n
Uniforme pour le moment.
(2a,3b) Traitement de requêtes encore assez réduit
q
q
Dépend beaucoup de la structure du système
Nous allons voir des applications
!
( (
n
(4a) Distribution du travail : celui qui reçoit la requête
q
Connaissances acquises pour décider : limitées au voisinage
n
(4a) Manière d'exécuter un travail précis : chaque site
n
(4b) Changements de configuration :
q
q
Automatiques (cache des données utiles)
n Requêtes ignorent toujours la localisation de la réponse, donc le
cache local est toujours identifié
Manuel
2-3
<item>Une introduction aux
<title>Legendes du Graal</titre> par
<auteur>P.Boulenger</auteur> aux editions
<editeur>Dunod</editeur> pour juste 5.55 Euros !
<click>…</click>
</item>
item
#CDATA
titre
auteur
#CDATA
editeur
#CDATA
click
!
!4
!
n
Hétérogénéité
q
n
2-3
5#
XML permet: des éléments optionnels (?), des répétitions (+, *),
des choix (|)
Identité
q
Deux élements à contenu identique sont différents
a
c
b
b
a/b/c[1] <> a/b/c[2]
c
d c c c d
a/b[count(c)>2]//c
1 2 3
1 2 3
En comparaison, dans une table relationelle, impossible de discerner
entre deux tuples à contenu identiques
!
!
n
!4
2-3
6#
Presence de "mixed content"
q
q
"Données dans les élements"
"Données en dehors des élements"
<item>Une introduction aux
<title>Legendes du Graal</titre> par
<auteur>P.Boulenger</auteur> aux editions
<editeur>Dunod</editeur> pour juste 5.55 Euros !
<click>…</click>
</item>
item
#CDATA
titre
auteur
#CDATA
editeur
#CDATA
click
!
!4
!
n
2-3
+#
Ordre des éléments
<item>Une introduction aux <title>Legendes du Graal</titre> par
<auteur>P.Boulenger</auteur> aux editions <editeur>Dunod</editeur> pour juste 5.55
Euros ! <click>…</click> </item>
item
#CDATA
titre
auteur
#CDATA
editeur
#CDATA
click
<item><auteur>P.Boulenger</auteur><click>…</click><editeur>Dunod</editeur>
<titre>Legendes du Graal</titre>par pour juste 5.55 Euros ! Une introduction aux</item>
item
auteur
click
editeur
titre
#CDATA
#CDATA
#CDATA
!
!4
!
n
2-3
/#
Importance de la structure
q
q
Codée implicitement
Souvent l'interrogation navigue la structure
departement
personne
"Dupont"
adresse
rue
no
personne
responsable
ville
"Dupont"
adresse
rue
no
2 Paris
Lafayette
employe
ville
35 Paris
Bd Opera
!
!4
!
n
2-3
7#
Presence d'un schéma
q
S'il existe, il peut être utilisé pour systématiser le stockage
département
personne
personne
"Dupont"
adresse
rue
no
responsable
ville
"Dupont"
adresse
rue
no
2 Paris
Lafayette
employe
ville
35 Paris
Bd Opera
0
2
n
n
n
n
n
n
n
!
2-3
&
Langage de chemin dans le document
/département
/département/personne/@nom
/département/personne[/@nom="Dupont"]/adresse
//personne[/@nom="Dupont"]
/ancestor-or-self::*
departement
nom:
//personne
personne
personne
"Dupont"
Fonction:
[/@nom="Dupont"]
adresse responsable
adresse
/previous-sibling::*
ville
rue no
rue no
//personne//ville/text()
2 Paris
Lafayette
nom:
"Dupont"
Fonction:
employe
ville
35 Paris
Bd Opera
!
n
$
2
Partition du document selon les axes Xpath
ancestor
preceding-sibling
self
following-sibling
descendent
n
n
Conditions existentielles
//département[person/address/ville="Paris"]//person;
Quelques fonctions d'aggrégation
q
Min, max, count
&
3
n
n
n
2
&
Impossible d'exprimer une corrélation entre des données
situées sur des chemins différents
q Pas de jointure
Ne peut retourner que "des noeuds éxistants"
q Pas de re-formulation, combinaison de plusieurs
documents
"Langage d'adressage" non pas "langage de requêtes"
q Requête: selection, correlation, reconstruction
1
n
28
for $x in document("d.xml")//personne
where $x/@fonction/text()="employe"
return $x/@name;
departement
nom:
"Dupont"
nom:
personne
personne
"Dupont"
Fonction:
Fonction:
adresse responsable
adresse employe
ville
rue no
rue no
ville
2 Paris
Lafayette
35 Paris
Bd Opera
1
n
28
<tousLesDuponts>
for $x in document("d.xml")//employe
where $x/@name/text()="Dupont"
return <fonction> $x/@fonction/text()
</fonction>
</tousLesDuponts>
departement
nom:
"Dupont"
nom:
personne
personne
"Dupont"
Fonction:
Fonction:
adresse responsable
adresse employe
ville
rue no
rue no
ville
2 Paris
Lafayette
35 Paris
Bd Opera
1
n
28
for $x in document("d.xml")//personne,
$y in document("d.xml")//personne
where $x/@name/text()=$y/@name/text()
and $x/@fonction/text()!= $y/@fonction/text()
return $x, $y;
departement
nom:
"Dupont"
nom:
personne
personne
"Dupont"
Fonction:
Fonction:
adresse responsable
adresse employe
ville
rue no
rue no
ville
2 Paris
Lafayette
35 Paris
Bd Opera
!
$
28
n
n
n
XPath
Jointures
Re-structurations arbitraires
q
n
n
n
Possibilité d'ignorer l'ordre des données en entrée (motcle UNORDERED)
Typage, sémantique formelle
Extensibilité : fonctions XQuery
q
n
construction de "nouveau XML"
Y compris fonctions recursives...
Très puissant, mais plus optimisable que XSL-T
2-3
28
Systemes a stockage persistent
Stockage natif
Stockage non-natif
Systemes sans stockage
Streaming
Compilation de code
2-3
28
n
Stockage natif (construit) pour XML
q
n
Stockage non
- n
atif (basé sur le relationnel)
q
n
IBM, Oracle, MS, LegoDB, Rainbow, XQuark ...
Systemes "streaming"
q
n
Natix, Xyleme, Timber, OrientX, Sedna, Jungle, GeX,...
Enosys, BEA
Systemes "compilation de code"
q
Galax, Kawa, XDuce, CDuce, QizX,...
!4
(
'
Document XML
Chargement dans le SGBDR
Recomposition du document
SGBDR (ou R-O)
• Persistence
• Indexation
• Fiabilité
• Transactions
Traitement de requêtes
• Traduction de XQuery
vers SQL
• Exécution de la requête
SQL
• Construction du résultat
XML
!4
n
'
Intérêt:
q
n
(
Re
- utiliser l'existant (un SGBD est coûteux,
difficile à construire, installer, configurer)
Problemes à resoudre:
q
Choix du schéma relationnel de stockage
n
q
q
q
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
!4
n
Objectifs
q
q
q
n
'
Regrouppement des objets fréquemment accédés
simultanément (localité de l'acces)
Primitives d'acces efficace (e.g. //person)
Primitives d'évaluation efficace (e.g.
//person//name)
Techniques
q
q
Etiquetage des noeuds crucial
Usage de structures d'indéxation génériques de
niveau plus bas (B
- trees, R
- trees...)
2-3 !
,
'
n
Bonne diffusion des connaissances sur le standard
XQuery
q
q
n
n
La spec est touffue, trop longue
Ce n'est pas une excuse
Langage: mises à jour, interrogation textuelle
Mise en oeuvre (natif):
q
q
q
algèbre standardisée (ou début de consensus...)
modèle d'exécution
techniques générales et validées d'optimisation
000
9
9 2-3:
;
n
)
:
XML s'adapte bien a tous les scénarios distribuées
examinés
q
Bases de données XML distribuées =
Bases de données XML
Bases de données XML
distribuées ?
distribuées ?
%)
n
HTML- - >XML, Word- - >XML: volume !
q
n
2-3
Rapports annuels INRIA en XML !
Nombreux standards facilitent l'interopérabilité entre
plusieurs sites
q
q
q
q
XPath, XQuery, XSL
Dialectes XML spécifiques à des applications
Services Web: APIs de communication basées sur XML
n Standards: SOAP pour l'acheminement de messages
WSDL pour les signatures XML
BPEL4WS pour l'orchestration ...
Une application: ActiveXML
<
2-3
n
n
n
!
%! ) 2-3
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
....
!
n
Active XML : XML contenant des appels à des
services Web
q
q
n
%2-3
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 :
q
q
q
Tous les langages de script dans HTML
Macromedia MX (DreamWeaver)
.NET etc.
2-3 ) !
)!
<directory>
<dept name="Toy“>
<sc>toy.xyz.com/GetToyPersonel()</sc>
</dept>
<dept name=“DVD“>
Appels de services
<sc>dvd2000.com/GetDVDPersonnel()</sc>
</dept>
</directory>
Appels vers n'importe quel service enveloppé
en SOAP :
• e-bay.net, google.com, amazon.com, etc.
• services AXML (requêtes XML)
=
$)
!
$
%2-3
)!
<directory>
<dept name="Toy“>
tat <person pname=“Smith”>
Résul
<phone>01…</phone>
<pda>
<sc>toy.xyz.com/GetPDA(../../@pname)</sc>
Ap
pe
</pda>
l
</person>
<sc>toy.xyz.com/GetToyPersonel()</sc>
</dept>
<dept name=“DVD“>
<sc>dvd2000.com/GetDVDPersonnel()</sc>
</dept>
</directory>
1
28
n
!
>2
%2-3
&
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>
% !& !
%! ) 2-3
AXML
AXML
XML
AXML
) !%! ) 2-3
1.
Distribution et replication de documents
AXML
2.
Indexation XML en P2P: couplage de AXML
avec un reseau DHT
3.
Optimisation de calculs AXML intensionnels
0005 1
!
!
%! ) 2-3
1
!
!
n
n
n
Problème de gestion de données distribuées
Contexte : architecture peer- to
- peer
Motivation : gestion efficace et flexible pour
q
q
n
%! ) 2-3
Données (A)XML
Services portables (pouvant être installés ailleurs que
dans leurs peer d'origine): Java, XQuery
Solution :
1.
2.
3.
Langage déclaratif pour réplication (distribution)
Traitement de requêtes XML
Réplication dynamique
!
!
2-3
allCNN
weather sports
forecast
archive
weather
…
…
Asia
…
forecast
archive
world
US
Europe
Africa
n
…
…
Europe
…
France
…
!
!
2-3
allCNN
weather sports
forecast
archive
weather
…
…
Asia
…
forecast
archive
world
US
Europe
Africa
n
…
…
Europe
…
France
…
!
2-3
n
Directive de réplication :
q
q
Une requête XQuery sur doc chez pi
Le résultat de la requête est copié chez pj
n
n
Conservant l'identité des noeuds copiés ou non
Conservant les liens fils-père et père-fils ou non
Europe
…
Europe
devient
France
…
…
id1
France
id1
France
…
…
!
2-3
n
Directive de réplication :
q
q
Une requête XQuery sur doc chez pi
Le résultat de la requête est copié chez pj
n
n
Conservant l'identité des noeuds copiés ou non
Conservant les liens fils-père et père-fils ou non
Europe
…
Europe
devient
France
…
…
id1
France
id1
France
…
…
!
2-3
n
Directive de réplication :
q
q
Une requête XQuery sur doc chez pi
Le résultat de la requête est copié chez pj
n
n
n
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
…
Europe
devient
France
…
…
France
…
1
!
n
¢
¢
>
Chaque peer garde les liens sortants dans un
résumé des points de sortie
Il existe une copie "master" de chaque document
l 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
Europe
Europe
…
Europe
France
fusion =>
id1
France
id1
France
…
…
…
id1
France
…
0
)!
n
!
2-3
!
La requête peut spécifier la localisation des
données interrogées (~version)
q
q
{Doc("cnn.com")/world/Europe/France}@p1
{/Economie}@p2
Plusieurs variantes possibles
n
n
n
q
@local
@localORAny
@masterORlocalORAny
Si au moins une ambiguïté est possible, il faut choisir la
version à utiliser
8
n
)
:
Requête sur pi :
{Doc("cnn.com/root.xml")/world/Europe/France}@any
cnn
¢
world
Europe
…
¢
id1
France
…
id1
France
…
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
*&
)
Analyse "what-if" récursive initiée chez pi
n
¢
cnn
world
Europe
…
id1
France
…
id1
France
…
¢
Ensemble de peers candidats
¢ Chaque candidat pourrait à son tour
déleguer une partie du travail à un autre
¢ Pi ne connait 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
-
!.
!&
)
n
cnn
Paramètres objectifs pour chaque requête x peer : CPU,
I/O, réseau, batterie, …
¢
world
Europe
¢
…
id1
France
…
id1
France
…
¢
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 réfuse de coopérer)
¢ Ceci peut arriver à plusieurs niveaux
Résultat = meilleur consensus négociable
parmi les peers accessibles à pi
*&
n
Aucune analyse des coûts
q
q
q
n
) >)
Heuristiques (locales !)
De manière non-deterministe
Choix sous-optimaux
Limiter l'ensemble de candidats
q
Au plus n à chaque pas
!
1.
!
$
!
Analyse des coûts
P5
P6
P2
P1
P8
P7
P4
P9
P10
P3
!
1.
!
$
!
Analyse des coûts
P5
P6
P2
P1
P9,P10
P8,P3
P8
P7
P4
P9
P10
P3
P3
!
1.
!
$
!
Analyse des coûts
P2
P7,P9,P10
P6,P8,P3
P5
P6
P1
P8,P3
P8
P7
P4
P9
P10
P3
P3
!
1.
!
$
!
Analyse des coûts
P5,P6,P8,P3
P5
P6
P2
P1
P8
P7
P4
P9
P10
P3
!
2.
!
$
!
Exécution
P5,P6,P8,P3
P5
P6
P2
P1
P8
P7
P4
P9
P10
P3
1
n
!
!
%2-3
Que faire si le fragment XML à repliquer contient un
appel de service ?
q
Ne pas le prendre (l'ignorer)
Europe
…
Europe
devient
France
…
météo.fr/getForecast()
…
id1
France
id1
France
…
…
météo.fr/getForecast()
1
n
!
!
%2-3
Que faire si le fragment XML à repliquer contient un
appel de service ?
q
Mettre un lien vers le résultat sur le peer d'origine
Europe
…
Europe
devient
France
…
météo.fr/getForecast()
…
id1
France
id1
France
…
…
météo.fr/getForecast()
1
n
!
!
%2-3
Que faire si le fragment XML à repliquer contient un
appel de service ?
q
Le prendre
Europe
…
Europe
devient
France
…
météo.fr/getForecast()
…
id1
France
id1
France
…
…
météo.fr/getForecast()
1
n
!
!
%2-3
Que faire si le fragment XML à repliquer contient un
appel de service ?
q
Si service Xquery : prendre la définition de service aussi
Europe
…
Europe
devient
France
…
météo.fr/getForecast()
…
id1
France
id1
France
…
…
météo.fr/getForecast()
localGet
Forecast()
1
n
!
!
%2-3
Que faire si le fragment XML à repliquer contient un
appel de service ?
q
Si service Xquery : prendre la définition de service aussi,
et les données nécessaires
Europe
…
Europe
devient
France
…
météo.fr/getForecast()
…
id1
France
id1
France
…
…
météo.fr/getForecast()
localGet
Forecast()
1
!
!
n
n
%2-3
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
q
n
#
Limitations : espace ; bande passante
Algorithme récursif greedy de recherche
q
q
Recommande des choix de réplication
Transparent pour l'utilisateur
0006 0
2-3
!
%2-3
?
6
%@
n
n
n
n
%2-3
Requete: "//personne"
Semantique:
q
n
!
tous les elements XML <personne>, de tous les documents, de
tous les peers.
Plus generalement, "Tree Pattern Queries"
Solution:
q Utiliser des services DHT comme des Web services
q Calculer des cles DHT a partir des documents XML
q A l'aide d'AXML, distribuer l'index sur la DHT
q Exploiter l'index pour repondre a des requêtes
Autres facettes: connaissances semantiques; langage
d'interrogation moins precis (XML-IR)
000+
!!
* !
n
Un paramètre d'un appel de service peut être un
appel de service
q
n
Matérialiser un document AXML:
q
n
altavista.com/translate(<from>Tchek</from>,
<to>Francais</to>,
crystalGlasses.cz/getCatalog())
effectuer tous les appels de services, dans le bon ordre
Plusieurs stratégies possibles
vamos.futurs.inria.fr
altavista.com
crystalGlasses.cz
* !
n
Un paramètre d'un appel de service peut être un
appel de service
q
n
Matérialiser un document AXML:
q
n
altavista.com/translate(<from>Tchek</from>,
<to>Francais</to>,
crystalGlasses.cz/getCatalog())
effectuer tous les appels de services, dans le bon ordre
Plusieurs stratégies possibles
vamos.futurs.inria.fr
altavista.com
crystalGlasses.cz
* !
n
Un paramètre d'un appel de service peut être un
appel de service
q
n
Matérialiser un document AXML:
q
n
ANY/translate(<from>Tchek</from>,
<to>Francais</to>,
crystalGlasses.cz/getCatalog())
effectuer tous les appels de services, dans le bon ordre
Plusieurs stratégies possibles
vamos.futurs.inria.fr
googleTranslate.com
crystalGlasses.cz
* !
n
Un paramètre d'un appel de service peut être un
appel de service
q
n
Matérialiser un document AXML:
q
n
ANY/translate(<from>Tchek</from>,
<to>Francais</to>,
crystalGlasses.cz/getCatalog())
effectuer tous les appels de services, dans le bon ordre
Plusieurs stratégies possibles
vamos.futurs.inria.fr
googleTranslate.com
crystalGlasses.cz
!!
n
Espace de recherche
q
q
q
n
Modèle de coût
q
n
Choix du peer qui fournit un service appelle
Choix du peer qui invoque un service
Heuristiques
Execution de services, transferts, ...
Stratégie de recherche
q
q
1 peer coordinateur; greedy
décision distribuée: in progress
n
n
n
n
Travaux importants sur la gestion de donnees
distribuées
Travaux existants (et a faire) pour la gestion de
donnees XML
La combinaison des deux est possible
Application intéressante: ActiveXML
q
q
n
n
Modèle de donnees oriente sur les arbres
Modèle d'execution distribue
Beaucoup de croisements intéressants a faire
Besoin de plus de resultats XML
- !