Outline
P-Ring
• Database P2P e stato dell’arte delle
strutture di indice
• Obiettivi dell’architettura P-Ring
• Soluzioni di P-Ring
• Verifiche sperimentali dei risultati
Gruppo 20 – Altini Bonetti Cardone
Database peer - to - peer
P-Ring
Stato dell’arte
Obiettivi
Soluzioni
• Perchè si usano?
– Fault tolerance
– Robustezza
– Scalabilità
(q,r)
Verifiche
• Requisiti
– Query di uguaglianza
– Query di range
Gruppo 20 – Altini Bonetti Cardone
Parametri di performance
P-Ring
Stato dell’arte
1. Load Balancing
– Load imbalance
Obiettivi
|nodoPiuCarico|
Soluzioni
|nodoMenoCarico|
Verifiche
2. Performance di query
(q,r)
(q,r)
Gruppo 20 – Altini Bonetti Cardone
Stato dell’arte
P-Ring
Stato dell’arte
Obiettivi
• Chord
– Basato su hashing
load balanced
– Dati non ordinati
query di range non
supportate
Soluzioni
Verifiche
• BATON*
– Performance di query proporzionali a logdP
– Nessuna garanzia di load balancing
Gruppo 20 – Altini Bonetti Cardone
Hashing di Chord
P-Ring
[0,8)
Massive Attack
Stato dell’arte
Mogwai
[32,40)
[8,15)
Obiettivi
Mono
Soluzioni
Mùm
Verifiche
Munari
[26,32)
[15,26)
Load balancing
Performance di query
Gruppo 20 – Altini Bonetti Cardone
Mantenendo l’ordine?
P-Ring
AB..
Massive Attack
Stato dell’arte
Mogwai
OA..
DA..
Obiettivi
Mono
Soluzioni
Mùm
Verifiche
Munari
MA..
GA..
Load balancing
Performance di query
Gruppo 20 – Altini Bonetti Cardone
Obiettivi di P-Ring
P-Ring
• Supportare query di uguaglianza e di range
Stato dell’arte
Obiettivi
Soluzioni
• Distribuire uniformemente i dati tra i peer
Load balancing
Verifiche
• Garantire routing efficiente dei messaggi
sull’anello
Performance di query
Gruppo 20 – Altini Bonetti Cardone
Data Store
P-Ring
Stato dell’arte
Obiettivi
• Peer divisi in due gruppi:
– Owner peers ( sf ÷ 2sf )
– Helper peers ( scarichi )
sf =  N/P 
Soluzioni
Verifiche
Se viene inserito un elemento in un
peer che ha già 2sf elementi overflow
Se viene cancellato un elemento in un
peer che ha sf elementi underflow
Gruppo 20 – Altini Bonetti Cardone
Data Store - Overflow
P-Ring
Stato dell’arte
P1 [0,8)
Algorithm 1 : p.split()
P5 [32,40)
1: p0 = getHelperPeer();
2: if p0 == null then
3: return;
4: end if
P2 [8,15)
Obiettivi
Soluzioni
Verifiche
P4 [26,32)
P [20,26)
P3 [15,26)
[15,20)
5: //execute the split
6: splitItems = p:own.splitSecondHalf();
7: splitV alue = p:own.lastValue();
8: splitRange = p:range.splitLast(splitV alue);
9: p0::joinRingMsgHandler(p,splitItems,splitRange);
Helper peers
Gruppo 20 – Altini Bonetti Cardone
Data Store - Underflow
Algorithm 3 : p.merge()
P-Ring
Stato dell’arte
1: //send message to successor and wait for result
2: (action; newRange; newItemsList) =
p:ringNode:getSuccessor()::
initiateMergeMsgHandler(p, jp:ownj);
3: p:own.add(newItemsList);
4: p:range.add(newRange);
P1 [0,8)
P5 [32,40)
P2 [8,15)
Obiettivi
Algorithm 4 : (action; newRange; newItemsList)
Soluzioni
Verifiche
P4 [26,32)
[30,32)
P3 [15,26)
[15,30)
p0.initiateMergeMsgHandler(p,numItems)
1: if numItems + jp0:ownj > 2 ¢ sf then
2: //redistribute
3: compute nbItemsT oGive;
4: splitItems = p0:own.splitFirst(nbItemsT oGive);
5: splitV alue = splitItems:lastValue();
6: splitRange = p0:range.splitFirst(splitV alue);
7: return (redistribute,splitRange,splitItems);
8: else
9: //merge and leave the ring
10: splitItems = p0:own;
11: splitRange = p0:range;
12: p0:ringNode:leaveRing();
13: return (merge, splitRange, splitItems);
14: end if
Gruppo 20 – Altini Bonetti Cardone
Risultati
P-Ring
Stato dell’arte
Obiettivi
Soluzioni
Verifiche
• Load imbalance ≤ 2
...siamo proprio sicuri?
Usare gli helper peer per bilanciare
davvero il carico
• Ogni owner è responsabile del suo
range...ma gli elementi sono distribuiti
anche tra gli helper peer
Gruppo 20 – Altini Bonetti Cardone
Overflow
P-Ring
Stato dell’arte
P1 [0,8)
q1 [30,32)
P5 [34,42)
P2 [8,15)
q2 [28,30)
P [32,34)
Obiettivi
P4 [32,34)
Soluzioni
Verifiche
Inserimento su P4
q1 [30,32)
P4 [26,28)
P3 [15,24)
q2 [28,30)
q3 [26,28)
q4 [24,26)
Gruppo 20 – Altini Bonetti Cardone
Usurp
P-Ring
Load balancing ancora non garantito
Stato dell’arte
Esempio:
Obiettivi
Soluzioni
< sf !! < sf!!
< sf!!
Verifiche
sf
Serve un’ulteriore operazione
Gruppo 20 – Altini Bonetti Cardone
Usurp
P-Ring
Algorithm 5 : p.usurp()
Stato dell’arte
P1
Obiettivi
Soluzioni
Verifiche
P2
1: //find least loaded helper peer and its
”master”
2: (q,p0) = getLeastLoadedHelperPeer();
3: if jp.respj ¸ 2p1 + ±jq.respj then
4: p:setHelperPeer(q);
5: redistribute p:own among new set of helpers;
6: redistribute p0:own among new set of
helpers;
7: end if
Load imbalance ≤ 2+ε
Gruppo 20 – Altini Bonetti Cardone
Content Router
P-Ring
Obiettivo: inoltrare efficientemente i messaggi
Stato dell’arte
Problema : dati non uniformi
Obiettivi
(q,r)
Soluzioni
Verifiche
Gruppo 20 – Altini Bonetti Cardone
Problemi di indicizzazione
P-Ring
Stato dell’arte
• Utilizzare tabelle o B+tree? No
– Problema di consistenza
Obiettivi
Soluzioni
Verifiche
• Indicizzare per valore di chiave? No
– Load balancing esplicito non lo
consente (distribuzione non uniforme
dei dati)
• Indicizzare per posizione!
HR
Gruppo 20 – Altini Bonetti Cardone
Hierarchical Ring
P-Ring
Stato dell’arte
•d: ordine dell’anello, intero
positivo > 1
Soluzioni
•Livello 1: primi d successori
del peer
Verifiche
P5
Obiettivi
•Livello 2: peer ogni d hop
•Livello 3: peer ogni d2 hop
•Livello i : peer ogni d(i-1) hop
3
20,P5
2
15,P3 20,P5
1
10,P2 15,P3
P1
5
P2
20
10
18
15
P3
P4
Gruppo 20 – Altini Bonetti Cardone
Content Routing - Esempio
P-Ring
Query di uguaglianza
Valore richiesto 18
Algorithm :
p.routeHandler(lb, up, msg, originator)
find the maximum level l s.t.  j > 0
p.node[l][j].iValue Є (rangeMin(p), lb].
if no such level exists then
Stato dell’arte
send(p.handleMessage(msg),originator);
if rangeMin(succ(p)) Є(rangeMin(p); ub]
then
Obiettivi
send(Route(lb,ub,msg,originator,requestT ype),succ(p))
else
send(RoutingDoneMessage,originator);
end if
else
find maximum k such that
p.node[l][k].iValue Є(rangeMin(p); lb];
send(Route((lb,ub,msg,originator),
p.node[l][k].peer));
end if
Soluzioni
Verifiche
Performance: logdP + m
Gruppo 20 – Altini Bonetti Cardone
Stabilizzazione dell’indice
...e durante inserimenti di peers?
P-Ring Se l’HR non è consistente: caso peggiore scan sequenziale
algoritmo di stabilizzazione
Stato dell’arte
succ()
Obiettivi
p1
Soluzioni
20,p5
Verifiche
15,p3
20,p5
18,p4
5,p1
10,p2
15,p3
15,p3
18,p4
p2
5,p1
• L’algoritmo gira indipendendemente su ogni peer
• È dimostrato che converge
• Performance: logdP + m + 2r(d-1)logdP
Gruppo 20 – Altini Bonetti Cardone
Performance
P-Ring
Stato dell’arte
Obiettivi
• Grafici
(primo, terzo,
Overhead
di traffico
rispettopaio
alla velocità
degli ultimi)
di inserimento degli
elementi
4-5-6 , un
Soluzioni
Verifiche
Supporto alle
query di range
Primo obiettivo raggiunto
Gruppo 20 – Altini Bonetti Cardone
Performance
P-Ring
Stato dell’arte
Obiettivi
Soluzioni
• Grafici (primo, terzo, 4-5-6 , un
paio degli ultimi)
Load imbalance
medio con diverse
distribuzioni di dati
Verifiche
Load
balancing
Secondo obiettivo raggiunto
Gruppo 20 – Altini Bonetti Cardone
Performance
P-Ring
Stato dell’arte
Obiettivi
Soluzioni
• Grafici (primo, terzo, 4-5-6 , un
paio
degli
ultimi)
Costo di ricerca di
un peer al variare
del numero dei
peer
Verifiche
Buone
performance
di query
Terzo obiettivo raggiunto
Gruppo 20 – Altini Bonetti Cardone
Scarica

P-Ring: An Efficient and Robust P2P Range Index Structure