3.4 Comment chercher les sources pertinentes dans le
réseau
Pour réguler la charge de traitement des requêtes
par les pairs, on s'est inspiré de l'approche
E-commerce [3].
Un pair P voulant exécuter une requête Q, sur une
période T, alors que cette requête n'a pas été
prise en charge par d'autres pairs (mutualisation impossible), il doit chercher
les données relevantes à sa requête dans le réseau
(bases).
Il localise à l'aide de la DHT, les sources pertinentes.
Connaissant les pairs et la période qu'ils peuvent satisfaire, le pair P
leur demande un coût. Une fois les coûts reçus, le pair P
sélectionne les pairs qui ont fait les offres les moins coûteuses,
et leurs envoie la requête Q.
Le coût ici, reflète la charge de travail du pair,
et change en fonction de ce dernier. Si un pair a beaucoup de travail
(aspiration flux RSS, plusieurs abonnées lui sont rattachés,
espace disque et espace mémoire insuffisants,.....), il augmente son
coût, et inversement (si son espace disque se libère, il baisse
son coût)
Exemple:
For $i in document(`Equipe.xml')/rss/channel/item
For $j in document(`Sport.xml')/rss/channel/item
Where $i/title = $j/title and contains($i/title, `Foot') and
contains($j/title, `PSG')
Return $i
Temps Valide = 1 à 15
1. Etape 1 : localise les sources pertinentes à
l'aide de la DHT
Get<h(Equipe.xml),
h(/rss/channel/item/title/'Foot'), [1..15]>
- Connaissant les pairs et l'intervalle qu'ils peuvent
satisfaire, demander aux pairs un coût
- Exemple de réponses :
§ P1 : contient `Foot' dans l'intervalle [1, 10] avec un
coût = 5
§ P2 : contient `Foot' dans l'intervalle [11,15] avec un
coût = 3
§ P3 : contient `Foot' dans l'intervalle [1,15] avec un
coût = 20
§ P4 : contient `PSG' dans l'intervalle [1,15] avec un
coût = 10
§ P5 : contient `PSG' dans l'intervalle [1,15] avec un
coût = 8
§ P6 : contient `Euro' et `PSG' dans l'intervalle [1,15]
avec un coût = 20
2. Etape 2 : Sélection des meilleures offres sous
deux contraintes: l'intervalle et le coût
· C.P1+C.P2 +C.P4 = 18
· C.P1+C.P2 +C.P5 = 16
· C.P3+C.P4 = 30
· C.P3+C.P5 = 28
· C.P6 = 20
3. Sélection des meilleures offres sous deux
contraintes : l'intervalle et le coût
· C.P1+C.P2 +C.P4 = 18
· C.P1+C.P2 +C.P5 = 16
· C.P3+C.P4 = 30
· C.P3+C.P5 = 28
· C.P6 = 20
v Meilleures offres P1, P2, P5
4. Étape 3: récriture de la requête:
- Q1 = for $i in document (`Equipe')/rss/channel/item
where contains($i/title, `Foot') and pubDate>=1 and
pubDate<=10 return $i Envoyer (P1)
- Q2 = for $i in document (`Equipe.xml')/rss/channel/item
where contains($i/title, `Foot') and pubDate>=11 and
pubDate<=15 return $i Envoyer (P2)
- Q3 = for $i in document (`Sporte.xml')/rss/channel/item
where contains($i/title, `PSG') and pubDate>=1 and
pubDate<=15 return $i Envoyer (P5)
5. Étape 4 : effectuer la jointure (résultat
final)
- R=R(Q1) union R(Q2)
- For $i in R/rss/channel/item
For $j in R(Q3)/rss/channel/item
Where $i/title= $j/title
Return $i
|