Introduzione Effettuare query top-k su un sistema altamente distribuito, sfruttando il P2P Nodi Principali (SP = Super Peers) Nodi Secondari (P = Peers)

Slides:



Advertisements
Presentazioni simili
Strutture dati per insiemi disgiunti
Advertisements

Ricorrenze Il metodo di sostituzione Il metodo iterativo
INFORMATICA Algoritmi fondamentali
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
PROGRAMMARE IN PASCAL (le basi)
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
Algoritmi e Strutture Dati
Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
RB-alberi (Red-Black trees)
Programmazione dinamica
Alberi binari di ricerca
Cammini minimi con sorgente singola
Interpretazione Astratta
Semantiche dei linguaggi di programmazione
Ordini Parziali - Reticoli
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Iterazione enumerativa (for)
Algoritmi Paralleli e Distribuiti a.a. 2008/09
Informatica di base A.A. 2003/2004 Algoritmi e programmi
1 Esempi di consistenza sui limiti Non consistente sui limiti, considera Z=2, poi X-3Y=10 Ma il dominio qui sotto e consistente sui limiti: Confrontare.
File.
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Algoritmo di Ford-Fulkerson
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Interrogazioni su un albero binario di ricerca Search(S,k) – dato un insieme S ed un valore chiave k restituisce un puntatore x ad un elemento in S tale.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Algoritmi e Strutture Dati Alberi Binari di Ricerca.
Algoritmi e Strutture Dati (Mod. A)
Algoritmi e Strutture Dati (Mod. B)
1 2. Analisi degli Algoritmi. 2 Algoritmi e strutture dati - Definizioni Struttura dati: organizzazione sistematica dei dati e del loro accesso Algoritmo:
Progettazione dei sistemi interattivi (A.A. 2004/05) - Lezione 3 1 La relazione di ereditarietà Punto di vista insiemistico: la relazione di ereditarietà
Giornata di studio su D.M. 44/04 - Sandro Garro - ARPAT 1 Il D.M. 44/04 prevede: la determinazione delle emissioni puntuali e la stima delle emissioni.
QuickSort Quick-Sort(A,s,d) IF s < d THEN q = Partiziona(A,s,d) Quick-Sort(A,s,q-1) Quick-Sort(A,q + 1,d)
Strutture di controllo in C -- Flow Chart --
Intelligenza Artificiale
Fibonacci Heaps e il loro utilizzo nell’algoritmo di Prim
Elementi di Informatica di base
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
BROKER SERVER Progetto di Ingegneria del Web 2008 Alessio Bianchi Andrea Gambitta Giuseppe Siracusano.
CODIFICA Da flow-chart a C++.
Radix-Sort(A,d) // A[i] = cd...c2c1
Algoritmi e Strutture Dati
Passo 3: calcolo del costo minimo
RB-insert(T, z) // z.left = z.right = T.nil Insert(T, z) z.color = RED // z è rosso. Lunica violazione // possibile delle proprietà degli alberi // rosso-neri.
Per valutare la complessità ammortizzata scomponiamo ogni Union: nelle due FindSet e nella Link che la costituiscono e valuteremo la complessità in funzione.
CLUSTERING WITH WEKA Branca Stefano Dosi Clio Gnudi Edward William.
Introduzione agli algoritmi e strutture dati 3/ed T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein Copyright © 2010 – The McGraw-Hill Companies srl.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 18 Ottobre.
14 marzo 2002 Avvisi:.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
Classificazione (aka Cluster Analysis)
Cammini minimi da un sorgente
ALGORITMI DI RICERCA Nella programmazione s’incontra spesso la necessità di ricercare un elemento (chiave) in un elenco, oppure di ordinare gli elementi.
GLI ALGORITMI VISIBILE SUL BLOG INFORMATICA ANNO SCOLASTICO 2013 / 2014 GABRIELE SCARICA 2°T.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
Infrastruttura per la gestione distribuita di un sistema di prenotazione Progetto di: Fabio Fabbri Matricola
Laureando: Enrico Sperindio Relatore: Prof. GIORGIO ROMANIN JACUR
Master Bioinformatica 2002: Visite di Grafi Algoritmi di visita Scopo: visitare tutti i vertici di un grafo per scoprirne proprietà di vario tipo. Alcune.
Le basi di dati.
6/11/01Ordinamento 1 Un esempio di algoritmi: ordinamento.
Transcript della presentazione:

Introduzione Effettuare query top-k su un sistema altamente distribuito, sfruttando il P2P Nodi Principali (SP = Super Peers) Nodi Secondari (P = Peers) 2

Introduzione I dati che si intende cercare sono divisi tra i database locali dei nodi secondari Gli SP mantengono una cache di parte dei dati dei propri peer Un utente può inviare una k- query ad un SP casuale (chiamato SPq) Gli SP computano insieme il risultato della query dellutente 3

Introduzione Soluzione: SPEERTO Skyline-based Peer to Peer Top-K Query Processing Limitare loverhead dovuto al trasferimento di dati superflui Limitare la comunicazione tra un SP ed i rispettivi peer Limitare la comunicazione tra un SP e laltro 4

Caso pratico Mario deve andare a salvare la principessa Peach (come al solito). Dopo 20 anni di salti e piroette a piedi, stavolta decide di usare il suo kart Ci sono diverse strade per giungere a destinazione Mario è un convinto ambientalista quindi il suo kart funziona a metano: i distributori sono sparsi per tutta la mappa

Caso pratico Mario chiede ai suoi amici (i Super Peer) un elenco delle migliori k strade secondo le sue preferenze in termini di lunghezza del percorso e numero di distributori presenti nel tragitto La richiesta può essere effettuata ad uno qualsiasi degli SP, che ha la possibilità di consultarsi con gli altri nel caso possiedano dati migliori L Lunghezza in Km N 40/NumDistributori 402,86 56,67 801, L Lunghezza in Km N 40/NumDistributori 402,86 56,67 801,

Caso pratico Ogni SP prepara preventivamente la lista deipercorsi migliori" a loro conosciuti (KSKY) facendo una query ai suoi peer, gli unici possessori delle mappe dei percorsi (data objects) I percorsi vengono ordinati in base agli scores, in questo caso L (lunghezza in decine di Km) ed N (40/ nd, dove nd è il numero di distributori sul percorso) Nel risultato di ogni query ci sono solo i percorsi che sono dominati al massimo da K - 1 percorsi (K-Skyband) Un percorso A domina un percorso B se si verificano le seguenti condizioni: – L A L B – N A N B – L A < L B oppure N A < N B

Caso pratico Limitano le comunicazioni tra SP e rispettivi peer, ma solo nel caso di Top-k query con k K nel caso che Mario chieda un numero di percorsi superiori a K ogni SP è costretto a chiedere altri dati ai suoi peer: perdita di efficienza Nonostante tutto è buona abitudine aggiornare periodicamente la K-Skyband di ogni SP con il passare del tempo i peer potrebbero imparare nuovi percorsi!

Caso pratico Gli SP condividono le skyline di routing object (SKY) Una skyline è una versione particolare di K-skyband (con K=1) in cui ogni suo dato non è dominato da nessun altro Un routing object è una versione ottimizzata di data object, tale che sia molto più leggera da trasferire tra un SP e laltro ogni SP conosce gli oggetti appartenenti alle altre skyline, senza tuttavia possedere i veri e propri data object ogni volta che un SP viene a conoscenza di un nuovo percorso migliore, avverte tutti gli altri

Caso pratico Per definizione la skyline contiene la Top-1 di ogni possibile query Per ogni oggetto trovato dalla query nello spazio dei routing objects sappiamo che lSP a cui appartiene contiene almeno un data object da immettere nel risultato finale A prescindere dalla query che verrà fatta: Sappiamo precisamente quali SP interrogare Conosciamo la regione attiva in cui i risultati sono contenuti

Caso pratico 01: Input: Query q k (f) 02: list = { } 03: list = SP Q.query SKY i (q k (f)) 04: threshold = f(list[k]) 05: c = 0 06: while (c < k) do 07: next obj = list.pop() 08: if next obj is a routing object then 09: SP = next obj.super-peer() 10: temp = SP.query(q kc (f), threshold) 11: list.removeRoutObj(SP) 12: list.add(temp) 13: else 14: return next object to the user 15: c = c : end if 17: threshold = f(list[k c]) 18: end while 01: Input: Query q k (f) 02: list = { } 03: list = SP Q.query SKY i (q k (f)) 04: threshold = f(list[k]) 05: c = 0 06: while (c < k) do 07: next obj = list.pop() 08: if next obj is a routing object then 09: SP = next obj.super-peer() 10: temp = SP.query(q kc (f), threshold) 11: list.removeRoutObj(SP) 12: list.add(temp) 13: else 14: return next object to the user 15: c = c : end if 17: threshold = f(list[k c]) 18: end while Mamma mia!

Caso pratico Andiamo con ordine!

Caso pratico Lista risultati: { Threshold: ? Yoshi Luigi SPq k=3 giagia ehbehb fcdfcd } DK

Caso pratico giagia ehbehb fcdfcd Lista risultati: { DK Yoshi Luigi g (3; 2)h (6; 0,5) f (4; 2,86) k=3 Threshold: (0,5*4+0,5*2,86) = 3,43 SPq } ?

Caso pratico Lista risultati: { Yoshi k=3 g (3; 2) h (6; 0,5) f (4; 2,86) Threshold: g (3; 2)(4; 2,5) (0,5*4+0,5*2,5) = 3,25 giagia ehbehb fcdfcd SPq 3,43 }

Caso pratico giagia ehbehb fcdfcd Lista risultati: { Luigi k=3 h (6; 0,5) Threshold: 3,25 g (3; 2) (4; 2,5) } k=2 h (6; 0,5) SPq

Caso pratico giagia ehbehb fcdfcd Lista risultati: { g (3; 2) (4; 2,5) } k=2 h (6; 0,5) k=1 Threshold: 3,25 SPq

Ottimizzazione E possibile – Ridurre i tempi di risposta Parallel Query Processing – Ridurre i costi dovuti alla quantità di dati memorizzati Abstract Skyline

Parallelo Vogliamo poter inviare le query agli SP in modo che possano computarle in parallelo Non possiamo aggiornare la soglia in maniera continuativa; questo può portare a dei falsi positivi Problemi Sfruttiamo un sistema di parallelizzazione parziale: le query in sospeso vengono inviate tutte insieme ai rispettivi SP soltanto quando si verificano determinati eventi Soluzione

Parallelo [valore del massimo ro] O1 Routing Object O2 Routing Object O3 Data Object O4 Routing Object O5 Routing Object O6 Routing Object O7 Data Object Resultset: { m:m: t:t: (t – score(o 1 ))/N r N r : [numero di oggetti] N r2 : (score(o 2 )-score(o 1 ))/m RSO 1 RSO 2 O3 (m+m 2 )/2 m 2 : (score(o 3 )-score(o 2 ))/N r2 m': } 0

Parallelo O1 Routing Object O2 Routing Object O3 Data Object O4 Routing Object O5 Routing Object O6 Routing Object O7 Data Object Comincia un nuovo ciclo con una nuova soglia t = t ed una nuova media m = m. Si continua fin quando |RS| k

KSKY Astratta Labstract skyline è unapprossimazione lower bound dello skyline Dobbiamo limitare ad U il numero massimo di punti che devono essere contenuti in una SKY i Due punti vicini dello skyline vengono sostituiti con un nuovo punto, finchè il numero totale degli oggetti è minore di U Come funziona?

KSKY Astratta 01: Input: SKY i 02: p = argmax t SKYi ( 1id ln(t[i] + 1)) 03: min_dist = 04: for (( t SKY i ) and (p t)) do 05: dist = min 1id (|p[i] t[i]|) 06: if (dist min_dist) then 07: min_dist = dist 08: q = t 09: end if 10: end for 11: for (1 i d) do 12: r[i] = min(p[i], q[i]) 13: end for 01: Input: SKY i 02: p = argmax t SKYi ( 1id ln(t[i] + 1)) 03: min_dist = 04: for (( t SKY i ) and (p t)) do 05: dist = min 1id (|p[i] t[i]|) 06: if (dist min_dist) then 07: min_dist = dist 08: q = t 09: end if 10: end for 11: for (1 i d) do 12: r[i] = min(p[i], q[i]) 13: end for

KSKY Astratta Scegliamo un punto p che ha la minore probabilità di essere dominato da tutti gli altri (quindi sostituibile più facilmente) Questa probabilità è decisa dal maggior valore di entropia del punto: Scegliamo un punto q che abbia distanza minima, in tutte le dimensioni, rispetto a p Sostituiamo p e q con un nuovo punto r che ha come coordinate i valori minimi di p e q in tutte le dimensioni I valori dominati r ma non dominati da p e q vengono cancellati E(p) = 1id ln (p[i] + 1)

KSKY Astratta Riduce la memoria utilizzata nelle operazioni Rende la SKY più robusta agli aggiornamenti Non è più possibile sfruttare il concetto di soglia (aumento di query inutili tra i SP)

In azione I test effettuati sono stati di due tipi: – Con dati distribuiti uniformemente (uniform) – Con dati distribuiti secondo una funzione gaussiana (clustered) Sono stati utilizzati come valori di default: – d = 4; – K = 50; – 10 k 50; – n = 10 6 ; – n p = 2000; – N sp = 0.1N p

In azione I tempi di risposta incrementano con il numero delle dimensioni I risultati vengono restituiti in tempo reale

In azione Il numero di SP contattati aumenta con k ma rimane quasi invariato con laumentare del numero di dimensioni Il numero di oggetti trasferiti è circa 23 volte in meno rispetto a quelli che sarebbero effettivamente trasferiti senza lutilizzo della soglia

In azione Il tempo di risposta cresce velocemente allaumentare di k Con dati clustered il numero di query che l'algoritmo deve fare agli altri SP per trovare altri valori plausibili è tendenzialmente molto più basso perchè ad ogni query vengono restituiti più data object

In azione Sia con k»K che con d crescente, diminuisce la quantità di dati corretti per la query rispetto alla quantità di dati trovati Allaumentare della cardinalità del dataset, la probabilità di ottenere dati sbagliati non cambia significativamente

In azione Con d=2, 2% di dati modificati e unastrazione del 50%, solo il 4% degli SP devono aggiornare la KSKY Il tempo di risposta diminuisce del 20% ma il numero di oggetti trasferiti aumenta leggermente

Non esistono alternative, lunica via è Chuck Norris!