Università degli Studi di Pisa Dipartimento di Informatica Lezione n.5 Bloom Filters Materiale didattico Tutorial sulla pagina del corso Laura Ricci 7/3/2012 Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 1 SET MEMBERSHIP PROBLEM Consideriamo l'insieme S={s1,s2,...,sn} di n elementi scelti da un universo U molto grande, si vuole rispondere a query del tipo “K è un elemento di S?” Implementare la funzione f che restituisce vero o falso a seconda della presenza o meno di k nell’insieme dato • ridurre tempo di risposta/spazio per la rappresentazione degli elementi • approssimazioni del problema Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 2 CHAIN HASHING tecniche di hashing diverse a seconda che si voglia ottimizzare lo spazio/il tempo/l'accuratezza della soluzione soluzioni basata su modello balls e bins: tirare m palle in n recipienti, ogni tiro indipedente dagli altri chain hashing: considero una struttura di m posizioni (bins) e utilizzo una funzione hash per inserire gli n elementi (balls) dell'insieme S in una delle posizioni random hash function; locazione di ogni elemento scelta in modo indipendente ed identicamente distribuito look-up non approssimato tutti gli elementi associati allo stesso bin collegati a lista tempo atteso di ricerca proporzionale al numero di elementi per bin problema: rappresentazione compatta dei bins (molti vuoti) trade off: numero di bins/tempo di ricerca maggiore Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 3 FINGERPRINT HASHING Obiettivo: ottimizzazione dello spazio Utilizzare la funzione di hash per calcolare un fingerprint di ogni elemento risparmio di spazio: un fingerprint di 32 bits per un elemento di 64 bits Look-up: ricerca nella lista dei fingerprints approximate set membership problem falsi positivi dovuti a fingerprint uguali per elementi diversi probabilità di falsi positivi dipende dal numero di bit usati per il fingerprint necessari almeno log n bits, per garantire bassa probabilità Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 4 APPROXIMATE SET MEMBERSHIP PROBLEM consideriamo l'insieme S={s1,s2,...,sn} di n elementi scelti da un universo U molto grande, si vuole rispondere a query del tipo “x è un elemento di S?” problema: scegliere una rappresentazione degli elementi di S in modo da mantenere contenuto il tempo di risposta delle query ottimizzare lo spazio per la rappresentazione degli elementi per risparmiare spazio si è disposti anche a rinunciare alla correttezza completa del risultato ammessi falsi positivi S può essere un insieme di parole chiave che descrivono files condivisi da un peer, prese dall'universo di tutte le parole chiave (Gnutella 0.6) l'insieme dei pezzi di un file posseduti da un peer (Bittorrent) l'insieme delle 'crackable password', scopo: indicare all'utente quali psw sono da evitare Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 5 APPROXIMATE SET MEMBERSHIP PROBLEM Se si è disposti a rinunciare ad un certo grado di accuratezza nelle operazioni di look up, a favore dell’efficienza in occupazione di memoria della rappresentazione dell’insieme Proposte diverse strutture dati a seconda del trade off tra • lo spazio richiesto • la probabilità di falsi negativi Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 6 BLOOM FILTERS: COSTRUZIONE Dati ● un insieme di S={s1,s2,...,sn} di n elementi (qualsiasi) ● un vettore B di m (n<<m) bits, bi ∈ {0,1} ● k funzioni hash indipendenti h1, …, hk, ogni hi: S ⊆ U →[1..m], che producono un valore distribuito uniformemente nel range [1..m]. Bloom Filter B[1..m], costruzione ● per ogni x∈ S, B[hj(x)]=1, ∀ j = 1,2,...k ● un bit in B può essere settato ad 1 più di una volta Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 7 BLOOM FILTERS: LOOK UP Per verificare se y appartiene all’insieme S mappato sul Bloom Filter, applicare le k funzioni hash ad y y∈S se bhi(y)=1, ∀ i=1,..k , tutti i bit uguali ad 1 l'elemento appartiene all'insieme se almeno un bit = 0, l'elemento non appartiene all'insieme Possibilità falsi positivi le funzioni hash calcolate su valori diversi possono portare allo stesso risultato Nella fase di look up di un elemento non appartenente all'insieme, una funzione può restituire l’indice di una posizione impostata a 1 per un vero positivo Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 8 PROBABILITA' FALSI POSITIVI consideriamo un insieme di n elementi mappato su un vettore di m bits mediante k funzioni hash assunzione base: funzioni hash random ed indipendenti paradigma balls e bins: come lanciare k×n palle in m recipeinti obiettivo: calcolare la probabilità di falsi positivi calcoliamo prima la probabilità che, dopo che tutti gli elementi sono stati mappati sul vettore, uno specifico bit del filtro sia ancora uguale a 0 Approssimazione derivata dalla definizione di e Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 9 PROBABILITA' FALSI POSITIVI assumiamo ora di aver costruito un bloom filter e, per semplificare l'analisi, consideriamo che una frazione di bits sia 0. Ricerchiamo un elemento:se non appartiene all'insieme, applicando le k funzioni ottengo un falso positivo se per k volte individuo un bit a 1 Probabilità di falsi positivi la probabilità dipende da due fattori m/n: numero di bit utilizzati per ogni elemento dell'insieme k: il numero di funzioni hash utilizzate Fissato m/n, due fattori in competizione per la determinazione di k diminuendo k aumenta il numero di 0 e quindi la probabilità di individuare un falso positivo, ma.... Aumentando k aumenta la probabilità di trovare un elemento uguale a 0 per un falso positivo Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 10 PROBABILTA' FALSI POSITIVI Fissato il rapporto m/n, probabilità di falsi negativi prima decresce, poi aumenta es: m/n=2, pochi bits per elemento, non posso usare 'troppe funzioni hash', perchè riempirebbero il filtro di 1 es: m/n=5, minima probabilità di falsi negativi con più funzioni hash Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 11 PROBABILITA' FALSI POSITIVI Fissato k, il numero di funzioni hash, la probabilità di falsi positivi decresce esponenzialmente all'aumentare di m, numero di bits nel filtro Per valori di m/n bassi (pochi bit per elemento), la probabilità è più alta per valori di k alti Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 12 PROBABILITA' FALSI POSITIVI Un Bloom filter diventa efficace quando m= c × n, con c costante di valore basso, ad esempio c = 8 in questo caso con 5-6 funzioni hash si ottiene una bassa bassa di falsi positivi Buone prestazioni con un numero ragionevole di bit Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 13 PROBABILITA' FALSI POSITIVI Trade-off tra spazio occupato/numero di funzioni hash utilizzate/probabilità di falsi positivi n è dato, fissato m si fissa il arpporto m/n che indica il numero di bits impiegati per ogni elemento dell'insieme. fissato n ed m si vuole determinare quale è il valore di k che minimizza la probabilità di falsi positivi si calcola la derivata della funzione nel lucido precedente rispetto a k e si ottiene il minimo (ln2 ≈ 0.7) A questo valore corrisponde un valore della probabilità uguale dei falsi positivi uguale a Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 14 PROBABILITA' FALSI POSITIVI Probabilità al variare degli elementi dell'insieme, con k ottimo e m variabile al variare di n Scala logaritimica Se il numero di bit del filtro non è sufficiente la probabilità cresce esponenzialmente Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 15 PROBABILITA' FALSI POSITIVI Con i valori ottimali calcolati in precedenza, la probabilità che uno dei bit sia rimasto a 0 dopo l'applicazione delle k funzioni è i valori ottimi si ottengono quando la probabilità che un bit sia rimasto a 0 dopo l'applicazione delle k funzioni agli n elementi è ½ un bloom filter 'ottimale' si presenta come una 'random bitstring ' in cui una metà dei bit, scelti in modo casuale uniforme, sono a 0 Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 16 BLOOM FILTERS: OPERAZIONI Dati due Bloom Filters, B1 e B2 che rappresentano, rispettivamente gli insiemi S1 ed S2 mediante lo stesso numero di bits e lo stesso numero di funzioni hash, il Bloom filter che rappresenta S1 ∪ S2 è ottenuto calcolando l'OR bit a bit di B1 e B2 Eliminazione degli elementi dall'insieme: non è corretto azzerare tutti i bit corrispondenti all'applicazione delle k funzioni hash all'elemento eliminato Counting Bloom Filters: per ogni entrata del Bloom Filter un contatore, invece di un singolo bit. utilizzati per agevolare la rimozione di elementi da un Bloom Filter al momento dell'inserzione, aumento il contatore al momento dell'eliminazione, decremento il contatore Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 17 BLOOM FILTERS: OPERAZIONI Dati due Bloom Filters, B1 e B2 che rappresentano, rispettivamente gli insiemi S1 ed S2 mediante lo stesso numero di bits e lo stesso numero di funzioni hash il Bloom filter che rappresenta S1 ∩ S2 è approssimato dal Bloom Filter ottenuto calcolando l'and bit a bit dei due Bloom Filters Infatti se un bit assume valore uguale ad 1 in entrambe i Bloom filters, questo può accadere perchè quel bit corrisponde ad un elemento ∈ S1 ∩ S2 e quindi viene settato ad 1 in entrambe i filtri quel bit corrisponde sia ad un elemento ∈ S1 - (S1 ∩ S2) che ad un elemento ∈ S2 - (S1 ∩ S2) e quindi non corrisponde ad un elemento nell'intersezione Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 18 BLOOM FILTER: APPLICAZIONI Approximate Set Reconcilation (BitTorrent) Bloom Filter Based Routing, implementato in Gnutella 0.6 diverse altre applicazioni.... Bloom Filter routing in Gnutella Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 19 BLOOM FILTER ROUTING Bloom Filters based routing delle query semplice implementazione in Gnutella 0.6 implementazione più sofisticata: Attenuated Bloom Filters un nodo possiede un vettore di bloom filter per ogni connessione c dell'overlay il primo filtro nel vettore sintetizza le risorse pubblicate dal vicino n raggiungibile tramite c l'i-esimo filtro è ottenuto dalla fusione dei filtri di tutti i nodi a distanza i (= numero di hops) raggiungibilii tramite n utilizzati per guidare il routing attenuated: ai diversi livelli di filtering si attribuiscono pesi decrescenti esponenzialmente Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 20 ATTENUATED BLOOM FILTERS Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 21 ATTENUATED BLOOM FILTERS Valutazione di una query rispetto ad un Attenuated Bloom Filter esempio: nell'attenuated Bloom Filter FAB “Uncle Jhon's Band” vale 1 /4 +1/8 = 3/8 poichè è probabile che la query venga risolta attraverso il nodo B in 2 o in 3 passi Query Routing Protocol: depth first search guidata attenuated bloom filters dalle valutazioni restituite dagli Update Protocol: Flooding del filtro modificato con TTL=d Ottimizzazioni per diminuire il numero di messaggi Mantenere i filtri dei nodi vicini ed inviare solo i bits modificati. Procedura ripetuta ricorsivamente dai nodi vicini Dipartimento di Informatica Università degli Studi di Pisa Gnutella 0.6, Kazaa Laura Ricci 22