Outline Database P2P e stato dellarte delle strutture di indice Obiettivi dellarchitettura P-Ring Soluzioni di P-Ring Verifiche sperimentali dei risultati P-Ring Gruppo 20 – Altini Bonetti Cardone
Database peer - to - peer Perchè si usano? –Fault tolerance –Robustezza –Scalabilità Requisiti –Query di uguaglianza –Query di range P-Ring Stato dellarte Obiettivi Soluzioni Verifiche Gruppo 20 – Altini Bonetti Cardone (q,r)
Parametri di performance 1. Load Balancing –Load imbalance 2. Performance di query Gruppo 20 – Altini Bonetti Cardone P-Ring Stato dellarte Obiettivi Soluzioni Verifiche (q,r) |nodoPiuCarico| |nodoMenoCarico|
Stato dellarte Chord –Basato su hashing load balanced –Dati non ordinati query di range non supportate BATON* –Performance di query proporzionali a log d P –Nessuna garanzia di load balancing Gruppo 20 – Altini Bonetti Cardone P-Ring Stato dellarte Obiettivi Soluzioni Verifiche
Hashing 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 dellarte Obiettivi Soluzioni Verifiche
Mantenendo lordine? Massive Attack AB.. OA.. MA.. GA.. DA.. Mogwai Mono Munari Mùm Gruppo 20 – Altini Bonetti Cardone P-Ring Stato dellarte Obiettivi Soluzioni Verifiche Load balancing Performance di query
Obiettivi di P-Ring Supportare query di uguaglianza e di range Distribuire uniformemente i dati tra i peer Garantire routing efficiente dei messaggi sullanello Gruppo 20 – Altini Bonetti Cardone P-Ring Stato dellarte Obiettivi Soluzioni Verifiche Load balancing Performance di query
Data 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 dellarte Obiettivi Soluzioni Verifiche overflow underflo w sf = N/P
Data 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,sp litRange); 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 dellarte Obiettivi Soluzioni Verifiche
Data Store - Underflow Algorithm 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 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 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 dellarte Obiettivi Soluzioni Verifiche
Risultati 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 dellarte Obiettivi Soluzioni Verifiche
Overflow P1 [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 dellarte Obiettivi Soluzioni Verifiche
Usurp Gruppo 20 – Altini Bonetti Cardone P-Ring Stato dellarte Obiettivi Soluzioni Verifiche sf Load balancing ancora non garantito Esempio: Serve unulteriore operazione < sf !!
Usurp 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 dellarte Obiettivi Soluzioni Verifiche Load imbalance 2+ε
Content Router Obiettivo: inoltrare efficientemente i messaggi Problema : dati non uniformi Gruppo 20 – Altini Bonetti Cardone P-Ring Stato dellarte Obiettivi Soluzioni Verifiche (q,r)
Problemi 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 dellarte Obiettivi Soluzioni Verifiche No HR
Hierarchical Ring P1 P5 P4 P3 P2 10,P 2 15,P ,P ,P 3 20,P Gruppo 20 – Altini Bonetti Cardone P-Ring Stato dellarte Obiettivi Soluzioni Verifiche d: ordine dellanello, intero positivo > 1 Livello 1: primi d successori del peer Livello 2: peer ogni d hop Livello 3: peer ogni d 2 hop Livello i : peer ogni d (i-1) hop
Content Routing - Esempio Gruppo 20 – Altini Bonetti Cardone P-Ring Stato dellarte Obiettivi Soluzioni Verifiche 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 send(p.handleMessage(msg),originator); if rangeMin(succ(p)) Є (rangeMin(p); ub] then 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 Performance: log d P + m
Stabilizzazione dellindice...e durante inserimenti di peers? Se lHR non è consistente: caso peggiore scan sequenziale algoritmo di stabilizzazione Lalgoritmo gira indipendendemente su ogni peer È dimostrato che converge Performance: log d P + m + 2r(d-1) log d P 20,p5 15,p320,p5 10,p215,p3 p1 5,p1 18,p45,p1 15,p318,p4 p2 Gruppo 20 – Altini Bonetti Cardone succ() P-Ring Stato dellarte Obiettivi Soluzioni Verifiche
Performance Grafici (primo, terzo, 4-5-6, un paio degli ultimi) Gruppo 20 – Altini Bonetti Cardone P-Ring Stato dellarte Obiettivi Soluzioni Verifiche Overhead di traffico rispetto alla velocità di inserimento degli elementi Primo obiettivo raggiunto Supporto alle query di range
Performance Grafici (primo, terzo, 4-5-6, un paio degli ultimi) Gruppo 20 – Altini Bonetti Cardone P-Ring Stato dellarte Obiettivi Soluzioni Verifiche Load imbalance medio con diverse distribuzioni di dati Secondo obiettivo raggiunto Load balancing
Performance Grafici (primo, terzo, 4-5-6, un paio degli ultimi) Gruppo 20 – Altini Bonetti Cardone P-Ring Stato dellarte Obiettivi Soluzioni Verifiche Costo di ricerca di un peer al variare del numero dei peer Terzo obiettivo raggiunto Buone performance di query