Upload
gianni-vianello
View
213
Download
0
Embed Size (px)
Citation preview
OutlineOutline
• Database P2P e stato dell’arte delle strutture di indice
• Obiettivi dell’architettura P-Ring
• Soluzioni di P-Ring
• Verifiche sperimentali dei risultati
P-Ring
Gruppo 20 – Altini Bonetti Cardone
Database peer - to - peerDatabase peer - to - peer
• Perchè si usano?– Fault tolerance– Robustezza– Scalabilità
• Requisiti– Query di uguaglianza– Query di range
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
Gruppo 20 – Altini Bonetti Cardone
(q,r)
Parametri di performanceParametri di performance
1. Load Balancing– Load imbalance
2. Performance di query
Gruppo 20 – Altini Bonetti Cardone
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
(q,r)(q,r)
|nodoPiuCarico|
|nodoMenoCarico|
Stato dell’arteStato dell’arte
• Chord– Basato su hashing load balanced– Dati non ordinati query di range
non supportate
• BATON*– Performance di query proporzionali
a logdP
– Nessuna garanzia di load balancing
Gruppo 20 – Altini Bonetti Cardone
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
Hashing di ChordHashing di Chord
Massive Attack[0,8)
[32,40)
[26,32)[15,26)
[8,15)
Load balancing Performance di query
Mogwai
Mono
Munari
Mùm
Gruppo 20 – Altini Bonetti Cardone
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
Mantenendo l’ordine?Mantenendo l’ordine?
Massive AttackAB..
OA..
MA.. GA..
DA..
Mogwai
Mono
Munari
Mùm
Gruppo 20 – Altini Bonetti Cardone
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
Load balancing Performance di query
Obiettivi di P-RingObiettivi di P-Ring
• Supportare query di uguaglianza e di range
• Distribuire uniformemente i dati tra i peer
• Garantire routing efficiente dei messaggi sull’anello
Gruppo 20 – Altini Bonetti Cardone
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
Load balancing
Performance di query
Data StoreData Store
• Peer divisi in due gruppi:– Owner peers ( sf ÷ 2sf )– Helper peers ( scarichi )
Se viene inserito un elemento in un peer che ha già 2sf elementi
Se viene cancellato un elemento in un peer che ha sf elementi
Gruppo 20 – Altini Bonetti Cardone
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
overflowunderflow
sf = N/P
Data Store - OverflowData Store - Overflow
1: p0 = getHelperPeer();
2: if p0 == null then
3: return;
4: end if
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);
P1 [0,8)
P5 [32,40)
P4 [26,32)
P3 [15,26)
P2 [8,15)
Algorithm 1 : p.split()
Helper peers
[15,20)
P [20,26)
Gruppo 20 – Altini Bonetti Cardone
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
Data Store - UnderflowData Store - UnderflowAlgorithm 3 : p.merge()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);
Algorithm 4 : (action; newRange; newItemsList)p0.initiateMergeMsgHandler(p,numItems)1: if numItems + jp0:ownj > 2 ¢ sf then2: //redistribute3: 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: else9: //merge and leave the ring10: splitItems = p0:own;11: splitRange = p0:range;12: p0:ringNode:leaveRing();13: return (merge, splitRange, splitItems);14: end if
P1 [0,8)
P5 [32,40)
P4 [26,32)
P3 [15,26)
P2 [8,15)
[30,32)
[15,30)
Gruppo 20 – Altini Bonetti Cardone
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
RisultatiRisultati
• 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
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
OverflowOverflowP1 [0,8)
q2 [28,30)
P4 [32,34)
P2 [8,15)
P3 [15,24)
q3 [26,28)
P5 [34,42)
q4 [24,26)
q1 [30,32)
Inserimento su P4
P [32,34)
q1 [30,32)
q2 [28,30)
P4 [26,28)
Gruppo 20 – Altini Bonetti Cardone
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
UsurpUsurp
Gruppo 20 – Altini Bonetti Cardone
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
sf
Load balancing ancora non garantito
Esempio:
Serve un’ulteriore operazione
< sf !!
< sf!!
< sf!!
UsurpUsurp
Algorithm 5 : p.usurp()
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
P1
P2
Gruppo 20 – Altini Bonetti Cardone
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
Load imbalance ≤ 2+ε
Content RouterContent Router
Obiettivo: inoltrare efficientemente i messaggi
Problema : dati non uniformi
Gruppo 20 – Altini Bonetti Cardone
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
(q,r)
Problemi di indicizzazioneProblemi di indicizzazione
• Utilizzare tabelle o B+tree? – Problema di consistenza
• Indicizzare per valore di chiave? – Load balancing esplicito non lo
consente (distribuzione non uniforme dei dati)
• Indicizzare per posizione!
Gruppo 20 – Altini Bonetti Cardone
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
No
No
HR
Hierarchical RingHierarchical Ring
P1
P5
P4
P3
P2
10,P2 15,P31
20,P53
15,P3 20,P52
5
20
1815
10
Gruppo 20 – Altini Bonetti Cardone
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
•d: ordine dell’anello, intero positivo > 1
•Livello 1: primi d successori del peer
•Livello 2: peer ogni d hop
•Livello 3: peer ogni d2 hop
•Livello i : peer ogni d(i-1)
hop
Content Routing - EsempioContent Routing - Esempio
Gruppo 20 – Altini Bonetti Cardone
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
Query di uguaglianzaValore richiesto 18
Algorithm :p.routeHandler(lb, up, msg, originator)
find the maximum level l s.t. j > 0p.node[l][j].iValue Є (rangeMin(p), lb].if no such level exists then
send(p.handleMessage(msg),originator);if rangeMin(succ(p)) Є(rangeMin(p); ub] then
send(Route(lb,ub,msg,originator,requestT ype),succ(p));elsesend(RoutingDoneMessage,originator);end ifelsefind maximum k such thatp.node[l][k].iValue Є(rangeMin(p); lb];send(Route((lb,ub,msg,originator),p.node[l][k].peer));end if
Performance: logdP + m
Stabilizzazione dell’indiceStabilizzazione dell’indice...e durante inserimenti di peers?
Se l’HR non è consistente: caso peggiore scan sequenziale
algoritmo di stabilizzazione
• L’algoritmo gira indipendendemente su ogni peer
• È dimostrato che converge• Performance: logdP + m + 2r(d-1)logdP
20,p5
15,p3 20,p5
10,p2 15,p3
p1
5,p1
18,p4 5,p1
15,p3 18,p4
p2
Gruppo 20 – Altini Bonetti Cardone
succ()
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
PerformancePerformance
• Grafici (primo, terzo, 4-5-6 , un paio degli ultimi)
Gruppo 20 – Altini Bonetti Cardone
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
Overhead di traffico rispetto alla velocità di inserimento degli elementi
Primo obiettivo raggiuntoSupporto alle query di range
PerformancePerformance
• Grafici (primo, terzo, 4-5-6 , un paio degli ultimi)
Gruppo 20 – Altini Bonetti Cardone
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
Load imbalance medio con diverse distribuzioni di dati
Secondo obiettivo raggiunto
Loadbalancing
PerformancePerformance
• Grafici (primo, terzo, 4-5-6 , un paio degli ultimi)
Gruppo 20 – Altini Bonetti Cardone
P-Ring
Stato
dell’art
e
Obiettivi
Soluzioni
Verifiche
Costo di ricerca di un peer al variare del numero dei peer
Terzo obiettivo raggiunto
Buone performancedi query