1 G RUPPO 12 Luca Druda Francesco Flor Daniele Palossi P ARALLEL D ISTRIBUTED P ROCESSING OF C ONSTRAINED S KYLINE Q UERIES BY F ILTERING Bin Cui, Hua Lu, Quanqing Xu, Lijiang Chen, Yafei Dai, Yongluan Zhou
Agenda 1- Descrizione del problema 2- Proposta di soluzione e descrizione PaDSkyline 3- Partizionamento gruppi 4- Piano d'esecuzione intragruppo 5- Punti di filtraggio multipli 6- Analisi dei risultati sperimentali 7- Conclusioni
Descrizione Query skyline distribuite Efficienza nella trasmissione dei dati sulla rete Utilizzo di rete ad alta disponibilità (rete internet)
Comparative shopping Altri esempi … Ricerca di Hotel da parte di un turista attraverso determinate preferenze Ricerca dei migliori titoli azionari su diverse borse
Scenari La maggior parte dei lavori su query skyline finora considerano storage centralizzati Inoltre si ha spesso sovrapposizione dei dati su storage multipli e distribuiti Altri lavori infine si sono soffermati su esecuzione distribuita di query ed elaborazione finale di un server centrale.
6 query risultati skyline ridotti risultati skyline completi Scenario
7 Query query risultati skyline ridotti risultati skyline completi Scenario
8 query risultati skyline ridotti risultati skyline completi Scenario
9 Skyline results query risultati skyline ridotti risultati skyline completi Scenario
10 query risultati skyline ridotti risultati skyline completi Scenario
11 Query query risultati skyline ridotti risultati skyline completi Scenario alternativo
12 query risultati skyline ridotti risultati skyline completi Scenario alternativo
13 Skyline results Scenario alternativo query risultati skyline ridotti risultati skyline completi
14 Query query risultati skyline ridotti risultati skyline completi Scenario alternativo
15 query risultati skyline ridotti risultati skyline completi Scenario alternativo
16 Skyline results query risultati skyline ridotti risultati skyline completi Scenario alternativo
17 query risultati skyline ridotti risultati skyline completi Scenario alternativo
Problemi Le strategie precedentemente menzionate incorrevano in alcuni problemi: Overhead Traffico elevato: trasmissione di dati non necessari sulla rete Tempi di risposta elevati
Agenda 1- Descrizione del problema 2- Proposta di soluzione e descrizione PaDSkyline 3- Partizionamento gruppi 4- Piano d'esecuzione intragruppo 5- Punti di filtraggio multipli 6- Analisi dei risultati sperimentali 7- Conclusioni
Obiettivi Minimizzare il tempo di risposta per Skyline queries distribuite (utilizzo di punti di filtraggio multipli) Sfruttamento della capacità computazionale dei vari nodi connessi tramite cavo (calcolo parallelo) Riduzione del traffico sulla rete attraverso tecniche di filtraggio dei risultati locali ai vari nodi Non essere legati a particolari reti o politiche di gestione degli overlay (es. CAN, BATON, MANET)
Partizionamento Definizione del piano di esecuzione intra-gruppo Esecuzione della query intra-gruppo con filtraggio Presentazione immediata dei risultati Processo di soluzione
Partizionamento Definizione del piano di esecuzione intra-gruppo Esecuzione della query intra-gruppo con filtraggio Presentazione immediata dei risultati Processo di soluzione
Partizionamento Definizione del piano di esecuzione intra-gruppo Esecuzione della query intra-gruppo con filtraggio Presentazione immediata dei risultati Processo di soluzione
Partizionamento Definizione del piano di esecuzione intra-gruppo Esecuzione della query intra-gruppo con filtraggio Presentazione immediata dei risultati Processo di soluzione
Algorithm PaDSkyline (S, C) Input S is the set of data sites C is the set of constraints in the skyline query Output the constrained skyline 1. s =icmpPartition (S, C) 2. for each group Sg i s in parallel 3. Send to Sg i 4. repeat 5. receive result reply from a Sg i 6. report Sg i.result 7. until all group heads have replied Partizionamento Esecuzione intragruppo Algoritmo PaDSkyline
26 query risultati skyline ridotti risultati skyline completi PaDSkyline
27 query risultati skyline ridotti risultati skyline completi Scenario alternativo
28 query risultati skyline ridotti risultati skyline completi Scenario alternativo
29 query risultati skyline ridotti risultati skyline completi Scenario alternativo
Agenda 1- Descrizione del problema 2- Proposta di soluzione e descrizione PaDSkyline 3- Partizionamento gruppi 4- Piano d'esecuzione intragruppo 5- Punti di filtraggio multipli 6- Analisi dei risultati sperimentali 7- Conclusioni
Minimum Bounding box Region – MBR & Reduced MBR - rMBR D1 D2 1) Creazione MBR 3) Introduzione constraint x<D1<y 2) Introduzione constraint D2>z 4) Creazione rMBR
LEMMA: legame tra incomparabilità e dominanza Se due siti S i e S j sono incomparabili rispetto ai vincoli della query per ogni coppia di punti p i rMBR i e p j rMBR j non è verificata la dominanza di p i su p j e viceversa Definizione di incomparabilità : Due sorgenti di dati (siti) S i e S j sono incomparabili rispetto ai vincoli della query se e solo se la regione dominante dell'angolo minimo del rMBR di S i non interseca l'rMBR di S j e viceversa: Partizionamento
IncomparabiliComparabili
Algorithm icmpPartition(S, C) Input: S is the set of data sites C is the set of constraints in the skyline query Output: an incomparable partition of S // Adjust MBRs and prune unqualified sites 1. for each Ki S 2. rMBRi = MBRi C; 3. if (rMBRi == Ø) S = S {Ki}; // Compute the independent partition of all relevant sites 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} icmpPartition Esempio di riferimento S = { A, B, C, D, E, F, G }
35 icmpPartition Di seguito viene mostrato come l'icmpPartition genera le partizioni: 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} Ki Πs { {A} } Si' S = { A, B, C, D, E, F, G } Kj A E G D B F C
36 Di seguito viene mostrato come l'icmpPartition genera le partizioni: 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} Ki Πs { {A} } Si' S = { A, B, C, D, E, F, G } Kj A E G D B F C icmpPartition
37 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} Ki Πs { {A} } Si' S = { A, B, C, D, E, F, G } Kj B A E G D B F C Di seguito viene mostrato come l'icmpPartition genera le partizioni: icmpPartition
38 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} Ki Πs { {A} } Si' S = { A, B, C, D, E, F, G } Kj Ø B A E G D B F C Di seguito viene mostrato come l'icmpPartition genera le partizioni: icmpPartition
39 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} Ki Πs { {A} } Si' S = { A, B, C, D, E, F, G } Kj Ø B A E G D B F C Si Di seguito viene mostrato come l'icmpPartition genera le partizioni: icmpPartition
40 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} Ki Πs { {A} } Si' S = { A, B, C, D, E, F, G } Kj Ø B A A E G D B F C Si INCOMPARABILI Di seguito viene mostrato come l'icmpPartition genera le partizioni: icmpPartition
41 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} Ki Πs { {A} } Si' S = { A, B, C, D, E, F, G } Kj Ø B A A E G D B F C Di seguito viene mostrato come l'icmpPartition genera le partizioni: icmpPartition
42 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} Ki Πs { {A} } Si' S = { A, B, C, D, E, F, G } Kj Ø B A A E G D B F C Di seguito viene mostrato come l'icmpPartition genera le partizioni: icmpPartition
43 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} Ki Πs { {A},{B} } Si' S = { A, B, C, D, E, F, G } Kj Ø B A A E G D B F C A D B F C AA S1 S2 Πs Di seguito viene mostrato come l'icmpPartition genera le partizioni: icmpPartition
44 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} Ki Πs { {A},{B} } Si' S = { A, B, C, D, E, F, G } Kj C A E G D B F C Di seguito viene mostrato come l'icmpPartition genera le partizioni: icmpPartition
45 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} Ki Πs { {A},{B} } Si' S = { A, B, C, D, E, F, G } Kj C A E G D B F C Di seguito viene mostrato come l'icmpPartition genera le partizioni: icmpPartition
46 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} Ki Πs { {A},{B} } Si' S = { A, B, C, D, E, F, G } Kj Ø C A E G D B F C Di seguito viene mostrato come l'icmpPartition genera le partizioni: icmpPartition
47 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} Ki Πs { {A},{B} } Si' S = { A, B, C, D, E, F, G } Kj Ø C A E G D B F C A Si Di seguito viene mostrato come l'icmpPartition genera le partizioni: icmpPartition
48 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} Ki Πs { {A},{B} } Si' S = { A, B, C, D, E, F, G } Kj Ø C A A E G D B F C INCOMPARABILI AA Si Di seguito viene mostrato come l'icmpPartition genera le partizioni: icmpPartition
49 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} Ki Πs { {A},{B} } Si' S = { A, B, C, D, E, F, G } Kj Ø C A E G D B F C AA Si Di seguito viene mostrato come l'icmpPartition genera le partizioni: icmpPartition
50 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} Ki Πs { {A},{B} } Si' S = { A, B, C, D, E, F, G } Kj Ø C B A E G D B F C AA Si COMPARABILI! Di seguito viene mostrato come l'icmpPartition genera le partizioni: icmpPartition
51 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} Ki Πs { {A} } Si' S = { A, B, C, D, E, F, G } Kj {B} C B A E G D B F C AA Si Di seguito viene mostrato come l'icmpPartition genera le partizioni: icmpPartition
52 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} Ki Πs { {A} } Si' S = { A, B, C, D, E, F, G } Kj {B} C B A E G D B F C AA Di seguito viene mostrato come l'icmpPartition genera le partizioni: icmpPartition
53 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} 4. ΠS = {{S1}}; // S1 is the current 1st element in S 5. for each Ki S {S1} 6. Si' = Ø ; 7. for each Si ΠS 8. if ( Kj Si s.t. Kj and Ki are not incomparable) 9. ΠS = ΠS {Si}; Si' = Si' Si; 10. ΠS = ΠS {{Ki} Si'} Ki Πs { {A}, {C,B} } Si' S = { A, B, C, D, E, F, G } Kj {B} C A E G D B F C AA S1 S2 Πs Di seguito viene mostrato come l'icmpPartition genera le partizioni: icmpPartition
Continuando ad iterare fino a che non vengono esaminati tutti gli elementi di S, come è facile intuire si otterrà il seguente partizionamento: Πs = { {A}, {E,D,C,B}, {G,F} } E G D B F C A S1 S2 Πs S3 icmpPartition
Agenda 1- Descrizione del problema 2- Proposta di soluzione e descrizione PaDSkyline 3- Partizionamento gruppi 4- Piano d'esecuzione intragruppo 5- Punti di filtraggio multipli 6- Analisi dei risultati sperimentali 7- Conclusioni
Dopo aver ottenuto i gruppi si passa alla definizione del piano di esecuzione della query all'interno degli stessi. Un specifico piano è necessario in quanto i siti all'interno di un gruppo sono comparabili e quindi l'esecuzione della query su uno di essi dipende da o influenza un altro sito. Il piano di esecuzione può essere realizzato e definito in base a diversi criteri che ne determinano la complessità e l'efficienza. Esecuzione intragruppo
Metodi di definizione del piano di esecuzione Grafo con Distanza euclidea Grafo ottimoGrafo semplificato PROPermette di definire buoni piani di esecuzione. Sfrutta pienamente la parallelizzazione interna al gruppo. Rappresenta il miglior compromesso tra ottimalità e complessità CONTRONon riesce a sfruttare i parallelismi interni e genera solo piani sequenziali Richiede eccessiva complessità di calcolo Non sfrutta al meglio la parallelizzazione intra-gruppo.
Creazione del grafo semplificato {B,C,D,E} B C D E
B C D E B All'inizio si ha solo B, perciò lo si trasforma in un nodo Creazione del grafo semplificato {B,C,D,E}
B C D E C B Successivamente si crea il nodo C e lo si compara con B. Essendo comparabile, C diventa la root dell'albero Creazione del grafo semplificato {B,C,D,E}
B C D E C B D Successivamente si crea il nodo D e lo si compara con C. Essendo comparabile, D diventa la root dell'albero Creazione del grafo semplificato {B,C,D,E}
B C D E C B E D Successivamente si crea il nodo E e lo si compara con D. Essendo comparabile, E diventa la root dell'albero e l'algoritmo termina non essendoci più altri datasets in lista Creazione del grafo semplificato {B,C,D,E}
B C D E C B E D A questo punto il grafo viene rovesciato per avere la vera sequenza di esecuzione della query intragruppo. E quindi diviene il capogruppo. NOTA: in alcuni casi si possono avere ramificazioni che aumentano il parallelismo, introducendolo anche all'interno del gruppo. Creazione del grafo semplificato {B,C,D,E}
All'interno di ogni gruppo la query viene elaborata secondo un preciso ordine dai vari siti. Il capogruppo riceve la query, la elabora e la passa al sito successivo insieme al piano di esecuzione, al suo identificativo e ai punti di filtraggio aggiornati con gli ultimi risultati. I vari siti si passano la query e rispondono tutti al capogruppo tramite l'identificativo che viene fornito. Intra-group Algorithm
SgSg S1S1 S3S3 S2S2 S or g = richiedente SgSg = headgroup S1S1 = sito NOTA: al fine di ottimizzare i tempi di risposta dei singoli siti si utilizza anche una precomputazione locale al sito stesso, effettuata sull'intero dataset. Intra-group
SgSg S1S1 S3S3 S2S2 S or g Intra-group S or g = richiedente SgSg = headgroup S1S1 = sito NOTA: al fine di ottimizzare i tempi di risposta dei singoli siti si utilizza anche una precomputazione locale al sito stesso, effettuata sull'intero dataset.
SgSg S1S1 S3S3 S2S2 S or g Intra-group S or g = richiedente SgSg = headgroup S1S1 = sito NOTA: al fine di ottimizzare i tempi di risposta dei singoli siti si utilizza anche una precomputazione locale al sito stesso, effettuata sull'intero dataset.
SgSg S1S1 S3S3 S2S2 S or g Intra-group S or g = richiedente SgSg = headgroup S1S1 = sito NOTA: al fine di ottimizzare i tempi di risposta dei singoli siti si utilizza anche una precomputazione locale al sito stesso, effettuata sull'intero dataset.
SgSg S1S1 S3S3 S2S2 S or g Intra-group S or g = richiedente SgSg = headgroup S1S1 = sito NOTA: al fine di ottimizzare i tempi di risposta dei singoli siti si utilizza anche una precomputazione locale al sito stesso, effettuata sull'intero dataset.
SgSg S1S1 S3S3 S2S2 S or g Intra-group S or g = richiedente SgSg = headgroup S1S1 = sito NOTA: al fine di ottimizzare i tempi di risposta dei singoli siti si utilizza anche una precomputazione locale al sito stesso, effettuata sull'intero dataset.
SgSg S1S1 S3S3 S2S2 S or g Intra-group S or g = richiedente SgSg = headgroup S1S1 = sito NOTA: al fine di ottimizzare i tempi di risposta dei singoli siti si utilizza anche una precomputazione locale al sito stesso, effettuata sull'intero dataset.
Agenda 1- Descrizione del problema 2- Proposta di soluzione e descrizione PaDSkyline 3- Partizionamento gruppi 4- Piano d'esecuzione intragruppo 5- Punti di filtraggio multipli 6- Analisi dei risultati sperimentali 7- Conclusioni
Il tempo di risposta alla query è influenzato dal numero di byte che viaggiano nella rete. Avere a disposizione punti dominanti prima dell'esecuzione della query consente di effettuare un filtraggio locale finalizzato ad eliminare un maggior numero di falsi positivi. Una riduzione del numero di risultati ottenuti comporta un miglioramento del tempo di risposta Filtering for dummies :-)
Punti di filtraggio multipli Quanti e quali punti scegliamo?
Risultati skyline dataset A Risultati skyline dataset B La query sul dataset A fornisce i punti di filtraggio alla query su B. Si nota come qualsiasi punto che non sia p, non fornisca miglioramenti nel restringimento del risultato finale. Scegliere in questo caso più punti di filtraggio è controproducente. p Punti di filtraggio multipli Quanti e quali punti scegliamo?
Dato quindi l'insieme dei punti skyline, esistono diversi sistemi per calcolarne il subset che costituirà i punti di filtraggio: 1.Una prima scelta può essere quella di scegliere questi punti in un modo casuale (Random approach). In questo modo il calcolo non è sempre esatto, tuttavia permette di elaborare il subset in modo molto performante. 2.Una seconda scelta più oculata potrebbe invece osservare la qualità di un punto rispetto ad un altro sulla base di quanta porzione dello spazio domina. A tale scopo introduciamo un nuovo parametro, il VDR. Punti di filtraggio multipli
Dx Dz Dy P Px Pz Py c P Vincolo : Dz < c VDR: Volume of Dominating Region
Data Region 1 Data Region 2 Data Region 3 Applicando il principio di inclusione – esclusione : a b c Calcolo del fused VDR
Il Maximal Sum of VDRs fa l'assunzione che vi siano poche intersezioni e procede al calcolo dei diversi punti scegliendo quelli che hanno i volumi dominanti più grandi. Il metodo migliora l'efficacia tanto più l'intersezione è piccola Oltre a calcolare i volumi è necessario avere a disposizione un ordinamento sulla base della dimensione di questi ultimi. MaxSum
D1 D2 Scelta di due punti di filtraggio da tre punti di skyline a b c Esempio MaxSum
D1 D2 Scelta di due punti di filtraggio da tre punti di skyline a b c Area massimale Esempio MaxSum
D1 D2 Scelta di due punti di filtraggio da tre punti di skyline a b c Esempio di fallimento MaxSum
Area dominata dall'algoritmo MaxSum D1 D2 a b c Esempio di fallimento MaxSum
D1 Area dominante ottima D2 a b c Esempio di fallimento MaxSum
MaxSum semplifica il calcolo del Fused VDR ignorando le intersezioni fra le regioni. MaxDist invece tiene conto della topologia tra i punti. L'idea alla base di questa seconda euristica è che tanto maggiore è la distanza tra due punti, tanto minore sarà la probabilità che la dimensione dell'intersezione delle loro regioni dominanti sia grande. Massimizzare la somma delle distanze tra i punti MaxDist
D1 Area dominante ottima D2 a b c Uso del MaxDist sull'esempio precedente
D1 D2 a b c Esempio di fallimento MaxDist
D1 D2 a b c Esempio di fallimento MaxDist
D1 D2 a b c Esempio di fallimento MaxDist
Agenda 1- Descrizione del problema 2- Proposta di soluzione e descrizione PaDSkyline 3- Partizionamento gruppi 4- Piano d'esecuzione intragruppo 5- Punti di filtraggio multipli 6- Analisi dei risultati sperimentali 7- Conclusioni
I parametri di valutazione utilizzati nell'analisi dei risultati sperimentali sono: DRR: Data Reduction Rate Indica la percentuale di punti, relativi alla risposta, non inviati al capogruppo perché inutili. Response Time Indica il tempo che intercorre tra l'invio della query da parte di Sorg e la ricezione finale dei risultati Precision Rappresenta la qualità dei punti di skyline che vengono restituiti a un sito (capogruppo o originatore della query). Risultati sperimentali
Il data reduction rate viene calcolato come la proporzione tra i risultati skyline omessi (dominati dai punti di filtraggio) e i risultati totali. L'ottimo è ovviamente il caso con DRR=1 in cui i punti di filtraggio consentono di eliminare tutti i risultati di un sito o potenzialmente di non eseguire affatto la query su tale sito. DRR: Data Reduction Rate
La precisione viene calcolata come il rapporto tra i punti che un capogruppo ritorna all'originatore della query e quelli che gli giungono dai siti figli. Una precisione di valore 1 indica che il capogruppo non dovrà fare alcuna elaborazione dei risultati ottenuti prima di inviarli a S org perchè il filtraggio ha già eliminato duplicati e falsi positivi. Una precisione vicina allo zero indica che i risultati pervenuti al capogruppo non sono ottimi e quindi è necessaria elaborazione locale. A : numero di punti restituiti a Sorg B : somma dei punti giunti ai diversi Sg Precision
I seguenti risultati sono relativi ad un dataset reale (NBA Players) Le metodologie esaminate sono: Naive PaDSkyline con le euristiche: MaxSum MaxDist Random Risultati sperimentali
I risultati successivi evidenziano che un elevato numero di punti di filtraggio non contribuisce a aumentare l'efficienza. Risultati sperimentali
I grafici seguenti intendono valutare le performance al variare delle dimensioni dei siti. I risultati mostrano come al crescere delle dimensioni dei siti le euristiche scelte impattino maggiormente sulle performance: aumento di precisione e miglioramento del tempo di risposta. Risultati sperimentali
Agenda 1- Descrizione del problema 2- Proposta di soluzione e descrizione PaDSkyline 3- Partizionamento gruppi 4- Piano d'esecuzione intragruppo 5- Punti di filtraggio multipli 6- Analisi dei risultati sperimentali 7- Conclusioni
I risultati sperimentali dimostrano come la proposta sia efficiente nell'elaborazione distribuita della query (improvement computazionale). Inoltre l'algoritmo risulta scalabile sia al variare delle dimensioni (attributi) del dataset sia al variare del numero di nodi nella rete. Conclusioni