Bloom-filtterit Juho Mäkie jvmakie(at)cs.hut.fi Semiaariesitelmä 9.4.2008 T-106.5800 Satuaisalgoritmit Tietotekiika laitos Tekillie korkeakoulu Tiivistelmä Bloom-filtteri o probabilistie tietorakee, joho voidaa talletaa tieto siitä kuuluuko joki elemetti filtteri kuvaamaa joukoo vai ei. Tietorakee säästä käytettyä tilaa sallimalla piee todeäköisyyde virheellisille positiivisille. Tässä esityksessä käsitellää joitai Bloomfilttereide keskeisimpiä omiaisuuksia sekä tarkastellaa erilaisia variaatioita alkuperäisestä tietoraketeesta. Lopuksi katsotaa yleiskatsaus erilaisii Bloom-filtteri sovelluskohteisii. 1 Johdato Tämä semiaarityö aiheea ovat Bloom-filtterit. Esi esittellää Bloom-filtteri toimitaa ja omiaisuuksia. Sitte tarkastellaa erilaisia variaatioita ja parauksia perustietoraketeesee, ja lopuksi käydää läpi yleisiä käyttökohteita Bloom-filttereille. Bloom-filtteri o hajautuksee perustuva probabilistie tietorakee, joka avulla voidaa testata kuuluuko aettu elemetti johoki joukkoo vai ei. Tietorakee o filtteri koska virheelliset positiiviset ovat mahdollisia. Tämä vuoksi lopullista joukkoo kuuluvuutta määritettäessä täytyy Bloom-filtteri positiiviset tulokset vielä tarkistaa jollai muulla meetelmällä. Bloom-filtteri etua varmaa determiistisee testauksee verrattua ovat se aika- ja tilatehokkuus. Bloom-filtterit keksi Burto H. Bloom vuoa 1970 [1]. Häe tavoitteeaa oli kehittää hajautustaululle vaihtoehto, joka mahtuisi kokoaisuudessaa suorittime muistii ja toisi äi merkittävä teholisä verrattua hajautustauluihi, joista osa jouduttii pitämää hitaassa massamuistissa. Bloomfilttereissä hajautusaluee koko o vapaasti valittavissa. Aluee kutistuessa kasvaa kuiteki väärie positiiviste todeäköisyys. Esimerkkisovelluksea Bloom esitti eglai kiele saoje tavutukse. Suuri osa eglai saoista voidaa tavuttaa yksikertaiste säätöje mukaa, mutta oi 10 prosettia saoista joudutaa katsomaa erillisestä saakirjasta. 1970-luvulla tämä saakirja oli ii suuri että se ei mahtuut suorittime muistii, vaa sitä piti säilyttää hitaalla kovalevyllä. Käyttäe Bloom-filtteriä testaamaa oko saa saakirjassa, saadaa merkittävä tehokkuude paraus. Virheelliset positiiviset eivät haittaa, koska jokaie positiivie osuma tarkistetaa saakirja avulla. 1
Kuva 1: Elemeti O lisäämie tyhjää Bloom-filtterii. Tässä esimerkissä käytetää kolmea hajautusfuktiota h1, h2 ja h3 2 Bloom-filtteri Bloom-filtteri käyttämä perustietorakee o bittivektori joka pituus o m bittiä. Tyhjässä filtterissä kaikki bitit ovat asetettu olliksi. Ku filtteri kuvaamaa joukkoo halutaa lisätä uusi objekti, geeroidaa tästä objektista k erilaista hajautusarvoa väliltä [1,m]. Nyt bitit äissä k:ssa osoitteessa asetetaa ykkösiksi. Esimerkki tästä operaatiosta o esitetty kuvassa 1. Joukkoo kuuluvuus testataa vastaavasti taas geeroimalla k bittiosoitetta käyttäe samoja hajautusmeetelmiä kui objektia lisättäessä. Jos kaikki osoitteide osoittamat bitit ovat ykkösiä, raportoidaa positiivie osuma. Jos yksiki bitti o olla, voidaa varmasti todeta että objekti ei kuulu filtteri kuvaamaa joukkoo. Bloom-filtteristä ei voida poistaa sie jo lisätty objektia, koska ei voida tietää kuuluvatko objekti bitit myös joki toise objekti tuistusbitteihi. Tietoraketee tilavaativuus o selvästi O(m) ja objekti testaukse sekä lisäämise aikavaativuudet O(k), olettae että hajautusarvo voidaa laskea vakioajassa. Bloom-filttereillä o myös seuraavat mielekiitoiset omiaisuudet. Oletetaa kaksi Bloomfiltteriä A ja B. Oletetaa lisäksi että molempie filttereide bittivektoreide pituudet ovat yhtä suuret, ja että molemmissa filttereissä käytetää samoja hajautusfuktioita. Nyt A B voidaa laskea helposti laskemalla A: ja B: bittiriakkaie OR-operaatio. Sytyvä filtteri vastaa filtteriä A: ja B: hyväksymie joukkoje uioille. Vastaavasti voidaa laskea A: ja B: hyväksymie joukkoje leikkaus A B tehokkaasti käyttämällä bittiriakkaista AND-operaatiota. 2.1 Virheelliste positiiviste todeäköisyys Tutkitaa seuraavaksi virheellise positiivise todeäköisyyttä. Oletetaa että joukoo o lisätty objektia, ja että hajautusarvot valitsevat jokaise osoittee yhtä suurella todeäköisyydellä. Nyt todeäköisyys sille että tietty bitti b i o olla o P(b i = 0) = ( 1 1 m) k (1) Testattaessa joukkoo lisäämättömä objekti kuulumista siihe, testataa k: satuaise biti tilaa. Näi olle todeäköisyys sille että tällaie objekti reportoidaa virheellisesti joukkoo kuuluvaksi o yhtälö 1 perusteella P fp = ( 1 ( ) 1 m) 1 k k ( ) 1 e k k m (2) 2
Tästä o helppo ähdä että väärie positiiviste todeäköisyys pieeee ku m kasvaa, ja suureee : kasvaessa, ku k pysyy vakioa. Yllä oleva virheelliste osumie todeäköisyyde johto olettaa että kahde eri biti tiloje todeäköisyydet ovat toisistaa riippumattomat. Tämä ei kuitekaa pidä täysi paikkaasa. Tästä johtue yhtälö 2 aliarvioi virheelliste positiiviste määrää. Kuiteki m: kasvaessa yhtälö virhe pieeee, jote käytäö sovelluksissa voidaa yhtälöä 2 pitää tarpeeksi hyvää.[2][3] Tutkitaa seuraavaksi mite hajautusfuktioide määrä k tulisi valita. Optimaalie k o luoollisesti sellaie joka miimoi P fp : arvo yhtälössä 2. Oletetaa että sekä m että ovat aettuja vakioita. Määritellää g = k l(1 e k/m ) jolloi P fp = e g. Nyt g: miimi o myös P fp : miimi. Lasketaa g: derivaatta k: suhtee. dg dk = l(1 e k/m ) + k e k/m m 1 e k/m (3) Tämä derivaata ollakohta, joka o myös P fp : globaali miimi, löytyy arvolla (kts. [12]) k = l2 m 0.69m (4) Joka o siis optimaalie hajautusfuktioide määrä jos bittivektori pituus ja elemettie määrä ovat tiedetyt. Sijoitetaa saatu optimi yhtälöö 2. P fp ( ) 1 e k k ( m = 1 e l2) ( l(2)m/ 1 l(2)m/ = 0.62 2) m/ (5) Tästä ähdää pieimmä virhetodeäköisyyde lisäksi myös se että optimitapauksessa puolet bittivektori biteistä o asetettu ykkösiksi. Käytäössä optimaalista pieemmät k: arvot voivat olla halutumpia, koska e johtavat pieempää aikavaativuutee. Tästä johtue k: arvoa valitessa tulisi ottaa myös huomioo positiivise osuma tarkistamisee kuluva aika, sekä yksittäise hajautusarvo laskemisee ja biti päivittämisee kuluva aika. Tässä kuiteki oletuksea o että osuma tarkistukse aikavaatimus o merkittävästi suurempi kui hajautusarvo laskemie, jolloi yllä laskettu k: arvo o lähellä oikeaa optimia. 3 Hajautusfuktioista Bloom-filtterissä suuri osa lasketatehosta meee ilmeisimmi hajautusarvoje laskemisee. Käytäössä ei kuitekaa tarvita k:ta erilaista hajautusfuktiota, vaa kute artikkelissa [8] äytetää, riittää kaksi toisistaa riippumatota hajautusfuktiota. Jos oletetaa että hajautusfuktiot g 1 ja g 2 ovat toisistaa riippumattomat voidaa äide avulla simuloida k:ta hajautusfuktiota seuraavaa kaava avulla h i=0..k 1 (x) = g 1 (x) + ig 2 (x) mod m (6) Tämä tehostaa filtteri käyttöä huomattavasti, koska k: arvosta riippumatta riittää kahde hajautusfuktio arvo laskemie operaatiota kohde. Tämä hajautusfuktioide riippumattomuude vaatimukse löyhetämie ei käytäössä lisää virheelliste positiiviste määrää merkittävästi. 3
4 Pakatut Bloom-filtterit Tutkitaa kuika tehokkaasti alkuperäie Bloom-filtteri käyttää muistia. Tehtäväämme o määrittää optimaalie bittie määrä m o joka tarvitaa määrittämää kuuluuko aettu elemetti joukkoo S, ku joukossa o elemettiä, sallie virheelliset positiiviset korkeitaa todeäköisyydellä ǫ. Oletetaa että mahdollisia elemettejä o kaikkiaa u kappaletta. Nyt meetelmämme tulee määrittää bittivektori jokaiselle erilaiselle kokoiselle joukolle elemettejä. Näitä joukkoja o ( ) u kappaletta. Käsitellää bittijooa b jota käytetää hyväksymää kaikki joukkoo S kuuluvat elemettiä. Näide elemettie lisäksi b voi hyväksyä korkeitaa ǫ(u ) muuta elemettiä, atae hyväksyttyje elemettie maksimimääräksi + ǫ(u ). Nyt yhtä bittiojooa voidaa käyttää hyväksymää mikä tahasa ( ) +ǫ(u ) alijoukosta kokoa. Nyt jos meillä o käytössä m o bittiä, voidaa äillä esittää 2 mo erilaista bittijooa, joide täytyy voida vastata kaikkia mahdollisia : pituisia joukkoja. Tästä saadaa ( u ) Josta voidaa ratkaista m o log 2 ( u ) ( +ǫ(u ) 2 mo ) log 2 ( u ( +ǫ(u ) ) (7) ) ( +ǫu ) log 2 ǫ = log 2 1/ǫ (8) Muistetaa yhtälöstä 5 että Bloom-filtteri paras mahdollie virhetodeäköisyys P fp = (1/2) m l 2/. Jos vaaditaa että P fp ǫ, saadaa ( ) m l 2 1 2 ǫ = m log 2 1/ǫ l2 = log 2 elog 2 1/ǫ (9) Tästä ähdää että Bloom-filtteri käyttää log 2 e 1.44 kertaa eemmä bittejä kui teoriassa olisi mahdollista. Koska erityisesti tietoliiketeessä käytettyje bittie määrä o merkittävi etu Bloom-filttereissä, tämä puuttee ratkaisemiseksi kehitettii pakatut Bloom-filtterit [3]. Pakattuje Bloom-filttereide ajatuksea o vähetää Bloom-filtteri tilavaativuutta optimoimalla sitä tilaa joho filtteri bittivektori voi pakata. Varjopuolea filtteri tulee purkaa ee käyttöä, ja taas pakata se jälkee. Pakkausideaa käytetää lähiä siirrettäessä filttereitä verko yli. Määritellää ogelma formaalisti. Esiäki huomataa, että bittivektori voidaa pakata parhaimmillaa tilaa z = mh(p), missä p o todeäköisyys sille että yksittäise biti arvo pakkaamattomassa vektorissa o 1, ja H(p) = p log 2 (p) (1 p)log 2 (1 p) joka o biäärie etropiafuktio. Pakattua Bloom-filtteriä valitessa ogelmaa o löytää sellaiset m ja k jotka miimoivat arvo P fp yhtälöstä 2, ku z ja ovat aetut. Vaihtoehtoisesti voisimme yrittää miimoida pakattua kokoa z ku P fp o aettu. Paperissa [3] todistetaa että piei P fp saavutetaa ku k lähestyy ollaa tai ääretötä. Tällöi P fp lähestyy arvoa 0.5 z/, josta saadaa edellee z = log 2 (1/P fp ). Siis, jos haluamme käyttää mahdollisimma vähä bittejä, tulee meidä asettaa k mahdollisimma lähelle ollaa (käytäössä ykköseksi). Bittivektori koko kasvaa optimitapauksessa äärettömäksi (ku k = 0), mutta suuremmilla k: arvoilla voidaa tarvittava bittivektori pituus laskea : ja k: avulla käyttäe yhtälöä 1, sekä yllä aettua z: määritelmää. Käytäössä teoreettisesti optimaalisia tuloksia ei tietekää voida saavuttaa, mm. pakkausmeetelmie epätäydellisyyde vuoksi. Lisäksi pakkaamattomalla bittivektorilla o yleesä joki 4
käytäöllie maksimi, joka rajoittaa kuika pieeksi k voidaa valita. Kuiteki, pakatut Bloomfiltterit pieetävät merkittävästi myös käytäössä virheelliste positiiviste todeäköisyyttä suhteessa siirrettyje bittie määrää. Pakkausmeetelmää voidaa käyttää esimerkiksi aritmeettista koodausta, joka avulla päästää melko lähelle optimaalista pakkausta. 5 Laskevat Bloom-filtterit Laskeva Bloom-filtteri esiteltii esimmäise kerra artikkelissa [5]. Tässä versiossa Bloom-filtteri bittivektori o korvattu kokoaislukulistalla joka jokaie elemetti alussa alustetaa ollaksi. Elemeti lisäys tapahtuu kute aiemmi, paitsi että biti muuttamise sijaa, hajautusarvo äyttämä laskuri arvoa kasvatetaa yhdellä. Joukkoo kuuluvuude testaus tapahtuu kute aiemmiki: jos laskuri o kaikissa k:ssa kohdassa listaa suurempi kui 0, palautetaa tosi. Etua tässä versiossa o se, että yt elemettie poistot filtteristä oistuvat vähetämällä jokaise hajautusarvoje osoittama laskuri arvoa yhdellä. Haittapuolea o kuiteki kasvaut tilavaatimus. Lisäksi mahdolliste ylivuotoje käsittely o hakalaa. 5.1 Spectral Bloom-filtterit Tätä lähestymistapaa kehitettii edellee paperissa [7]. Nyt ajatuksea o käyttää laskevia Bloomfilttereitä talletamaa avaite esiitymisfrekvessejä. Yksikertaisi lähestymistapa tähä ogelmaa o käyttää suoraa yllä kuvattua implemetaatiota lisäyksissä ja poistoissa. Ku tarkistetaa avaime esiitymie määrää, palautetaa piei avaime hajautusfuktioide osoittamista arvoista. Tässä tapauksessa todeäköisyys sille, että palautettu arvo ei ole todellie esiitymie määrä, o P fp : arvo yhtälöstä 2 [7]. Tästä meetelmästä esitettii myös kaksi paraettua versiota. Esimmäisessä versiossa ajatuksea o lisäykse yhteydessä kasvattaa vai iitä laskureita, joide arvo o kaikkie hajautusarvoje viittaamie laskureide joukosta piei. Tämä luoollisesti tekee poistoje tekemise mahdottomaksi, mutta pieetää virheide määrää huomattavasti. Toie parausehdotus oli käyttää toista laskevaa Bloom-filtteriä käsittelemää tapauksia, joissa voidaa arvella virhee todeäköisyys suureksi. Tällaisiksi tapauksiksi esitettii e, joissa piei laskuri arvo esiityy vai yhdessä laskurissa tarkistettavie laskureide joukosta. Tällöi haku/päivitys tehdää toissijaisee filtterii, aiva kute yllä kuvatussa yksikertaisessa algoritmissa. Tämä paraus ei pieeä virheide todeäköisyyttä aiva yhtä tehokkaasti kui pieimpie laskureide päivittämisee perustuva versio, mutta sallii poistoje tekemise. 6 Bloomier filtterit Bloomier filttereissä [6] ajatuksea o käyttää ormaaleja Bloom filttereitä luomaa tietorakee joho voidaa talletaa kyllä/ei -arvo sijaa joki umeerie arvo kulleki lisättävälle elemetille. Tietorakee sallii Bloom-filttereide tapaa virheellisiä positiivisia, jotka tässä tapauksessa ilmeevät virheelliseä arvoa elemetille jota ei ole tietoraketeesee lisätty. Jos elemetti o kuiteki aiemmi tietoraketeesee lisätty, palauttavat haut aia oikea arvo. Käsitellää tapausta jossa elemetti voi saada vai arvo 0 tai 1. Määritetää kaksi Bloom-filtteriä A 1 ja B 1. Ilmeie tapaus etsittäessä elemeti x arvoa, o testata x molemmilla filttereillä. Tämä ei kuitekaa toimi, sillä virheelliste positiiviste takia molemmat filtterit saattavat äyttää x: kuuluva vastaavii arvojoukkoihi. Tässä tapauksessa aiaki toie palauttaa virheellise positiivise, 5
koska samaa elemettiä ei koskaa lisätä molempii filttereihi. Tämä tapaukse ratkaisemiseksi tarvitaa kaksi uutta filtteriä, A 2 ja B 2. A 2 sisältää yt ollaksi mappautuvat elemetit jotka palauttavat virheellise positiivise B 1 :ssä. Vastaavasti ykköseksi mappautuvat elemetit sisältyvät filtterii B 2 ku A1 palauttaa virheellise positiivise. Edellee jos myös ämä filtterit palauttavat molemmat positiivise tulokse, jatketaa seuraavii filttereihi kues jompi kumpi palauttaa egatiivise. Elemeti lisäämie tapahtuu lisäämällä se arvosa mukaisee filtterii. Sitte testataa palauttaako toie filtteri väärä positiivise, jolloi samalaie lisäys tehdää myös seuraava taso filttereihi. Koska virheellise positiivise todeäköisyys o hyvi piei, putoaa filttereihi lisättävie elemettie määrä hyvi opeasti filtteripiossa syvemmälle metäessä. Yllä kuvattu meetelmä yleistyy helposti mielivaltaisille luvuille, ekoodaamalla e q: pituisiksi bittijooiksi, ja käyttämällä q:ta erillistä yllä kuvattua filtterijooa talletamaa kuki bitti. 7 Bloom-filttereide käyttökohteita 7.1 Tietokaat Bloom-filttereitä o käytetty opeuttamaa tietokataoperaatioita käyttämällä iitä hyödyksi muutostiedostoje (differetial file) käsittelyssä.[4] Muutostiedosto o piei, muistii mahtuva välimuistitiedosto joka sisältää suurempaa tietokataa muutetut tietueet. Jos muutokset tapahtuvat suurissa ryppäissä. voidaa muutostiedostoa ylläpitämällä opeuttaa tietokaa toimitaa, kirjoittamalla muutokset varsiaisee tietokataa myöhemmi. Nyt Bloom-filttereitä voidaa käyttää pitämää yllä tietoa siitä, mitkä tietueet ovat muutostiedostossa. Virheellie positiivie ei haittaa, koska jos haettavaa tietuetta ei löydykää muutostietueesta, haetaa se sitte varsiaisesta tietokaasta. Toie tietokata-alue, jossa Bloom-filtterit tehostavat operaatioita suuresti, o hajautetut tietokaat. Esimerkiksi hajautettuje relaatiotietokatoje JOIN-operaatio toteutuksessa voidaa Bloom-filttereillä vähetää huomattavasti siirrettävä tiedo määrää. Oletetaa esimerkiksi että halutaa tietää e työtekijät jotka asuvat kaupugeissa joide väkiluku o yli 50 000 asukasta. Kaupukie väkiluvut sisältävä tietokata o eri palvelimella kui työtekijöide asuipaikat. Ilmeie ratkaisu olisi lähettää koko kaupukitietokata työtekijäpalvelimelle, ja tehdä operaatio siellä, mutta tämä vaatisi suurte tietomäärie siirtämistä. Tehokkaampi tapa o luoda kaikista yli 50 000 asukkaa kaupugeista Bloom-filtteri, ja lähettää tämä toiselle palvelimelle. Nyt tämä työtekijäpalveli voi lähettää vai e työtekijä/kaupuki parit joide kaupuki löytyy filtteristä takaisi kaupukipalvelimelle, jossa lopulta virheelliset positiiviset poistetaa. [4] 7.2 Tietoverkot Tietoverkoissa o moia mahdollisia käyttöjä Bloom-filttereille. Tämä osio esimerkit perustuvat artikkelii [4], josta kiiostueet voivat lukea lisää mahdollisia käyttökohteita. Tietoliiketeessä o tärkeää yrittää miimoida siirrettävä data määrää. Tietoverkoissa sytyy moia tilateita joissa halutaa tietää joukko objekteja jotka ovat saatavilla verko ylitse. Tällaisissa tapauksissa voidaa lähettää joukkoa kuvaava lista sijaa Bloom-filtteri joukosta. Koska Bloomfiltterit ovat kooltaa yleesä huomattavasti pieempiä kui täydelliset listat jouko alkioista, säästyy tässä huomattava määrä siirrettävää dataa. Tähä ideaa pohjautue o kehitetty proxy-palvelite Web cacheje päivitysprotokolla.[5] Jos tällaiselta palvelimelta haetaa sivua, jota se välimuistista ei löydy, täytyy se edellee hakea sivu joltai muulta palvelimelta. Protokolla ideaa o että palvelimet lähettävät tasaisi väliajoi Bloom-filtteri sisältämistää sivuista kaikille muille palvelimille. 6
Nyt palvelimet voivat opeasti tarkistaa filttereistää miltä palvelimilta haettu sivu voisi löytyä. Satuaiset virheelliset positiiviset eivät haittaa, koska tässä tapauksessa palveli jolta tietoa haetaa voi ilmoittaa ettei tietoa löytyytkää. Toie tietoliiketee alue jossa Bloom-filttereillä o saatu merkittäviä teholisiä o tiedohaku hajautetuista peer-to-peer tietovarastoista [9]. Tässä protokollassa jokaie verko solmu pitää jokaiselle avoimelle yhteydelle yllä d: pituista listaa Bloom-filttereitä. Tässä listassa esimmäie filtteri vastaa yhteyde takaa olevasta koeesta saatavia tiedostoja, toie filtteri yhteydestä kahde hypy takaa olevista koeista saatavia tiedostoja, je. Ku solmuu saapuu kysely tietystä tiedostosta, Tarkistetaa kaikista filtterilistoista, löytyykö tiedosto esimmäisestä filtteristä. Jos äi o, lähetetää kysely vastaavalle seuraavalle solmulle. Muute jatketaa testaamalla kaikki toiset filtterit, je. Tässä protokollassa d: suuruus määrää kuika kauas tiedostot äkyvät verkossa. Jos virheellise positiivise takia viesti saapuu solmuu josta tiedostoa ei ole saatavilla, katkaistaa haku, ja haetaa samaa tiedostoa hitaammalla determiistisellä algoritmilla. Bloom-filttereitä o myös ehdotettu tehostamaa multicast reititystä. Multicast reititi talletaa jokaiselle multicast-osoitteelle lista yhteyksistä joihi multicast o yhdistetty. Ku multicast paketti saapuu reitittimee, lähettää se paketi edellee kaikkii listattuihi yhteyksii. Vaihtoehtoie tapa o säilyttää jokaiselle yhteydelle Bloom-filtteriä joka tuistaa yhteytee liitettyjä multicast osoitteita. Nyt paketi saapuessa tarkistettaisii kaikkie yhteyksie filtterit edellee lähetystä varte. Etua tässä o se, että yt ei tarvitse talletaa kokoaisia listoja multicast osoitteista. Virheelliset positiivisetkaa eivät ole ogelma, koska virheellisesti reititetyt paketit voidaa tiputtaa pois seuraavissa reitittimissä. Lisäksi Bloom-filttereitä o käytetty Tietoliiketee tehokkaasee filtteröitii [10]. Tässä toteutuksessa Bloom-filtteri toteutettii suoraa laitteistolle FPGA (Field Programmable Gate Array) - tekologiaa käyttäe. Positiiviset osumat tarkistettii edellee hitaammalla hash taululla. Verkkoprotokollia suuiteltaessa o keskeistä että datapakettie joutumie silmukoihi reitityksessä estetää. Yleisi keio tämä estämisee o pitää kussaki paketissa TTL laskuria, jota väheetää kussaki reitittimessä yhdellä, ja laskuri saavuttaessa olla, paketti poistetaa verkosta. Vaihtoehdoksi tälle meetelmälle o esitetty piee Bloom-filtteri pitämistä paketi headerissa.[11] Tässä järjestelyssä kuki reititi tarkistaa löytyykö se idetifikaatiotietue filtteristä, ja jos äi o, pieetää paketi pietä TTL laskuria. Laskuri laskettua ollaa poistetaa paketti verkosta. Eteepäi reititettäessä reititi lisää oma tietueesa paketi filtterii. Tässä Bloom-filtteristä o se etu että voidaa käyttää huomattavasti pieempää TTL laskuria kui ormaalisti. Pelkkää filtterii ei kuitekaa voida turvautua virheelliste positiiviste takia. 7.3 Muita käyttökohteita Vaikka tietokaat sekä tietoverkot ovat merkittävimmät Bloom-filttereide sovelluskohteet, o iillä rusaasti käyttöä myös muilla alueilla. Teksti käsittelyssä äitä o käytetty Bloomi alkuperäise tavutusohjelma lisäksi mm. saoje oikeikirjoitukse testaamisee. Tässä oikeikirjoitussaakirjasta luodaa Bloom-filtteri, jolla voidaa sitte tehokkaasti tarkistaa kuuluuko saa oikeikirjoitettuje saoje joukkoo. Haittapuolea tässä lähestymistavassa o se että pieellä todeäköisyydellä väärikirjoitetut saat hyväksytää. 7
Viitteet [1] Bloom, B.H. 1970, Space/time trade-offs i hash codig with allowable errors, Commuicatios of the ACM, vol. 13, o. 7, pp. 422-426. [2] Bose, P., Guo, H., Kraakis, E., Maheshwari, A., Mori, P., Morriso, J., Smid, M. & Tag, Y. O the false-positive rate of Bloom filters, Submitted uder review, 2004. Temporary versio available at http://cg.scs.carleto.ca/ mori/publicatios/ds/bloom-submitted.pdf [3] Mitzemacher, M. 2002, Compressed bloom filters, IEEE/ACM Trasactios o Networkig (TON), vol. 10, o. 5, pp. 604-612. [4] Broder, A. & Mitzemacher, M. 2004, Network Applicatios of Bloom Filters: A Survey, Iteret Mathematics, vol. 1, o. 4, pp. 485-509. [5] Fa, L., Cao, P., Almeida, J. & Broder, A.Z. 2000, Summary cache: a scalable wide-area web cache sharig protocol, IEEE/ACM Trasactios o Networkig (TON), vol. 8, o. 3, pp. 281-293. [6] Chazelle, B., Kilia, J., Rubifeld, R. & Tal, A. 2004, The Bloomier filter: a efficiet data structure for static support lookup tables, Proceedigs of the fifteeth aual ACM-SIAM symposium o Discrete algorithms, pp. 30-39. [7] Cohe, S. & Matias, Y. 2003, Spectral bloom filters, Proceedigs of the 2003 ACM SIGMOD iteratioal coferece o Maagemet of data, pp. 241-252. [8] Kirsch, A. & Mitzemacher, M. 2006, Less Hashig, Same Performace: Buildig a Better Bloom Filter, Proceedigs of the 14th Aual Europea Symposium o Algorithms, pp. 456-467. [9] Rhea, S. & Kubiatowicz, J. 2002, Probabilistic locatio ad routig, INFOCOM 2002.Twety-First Aual Joit Coferece of the IEEE Computer ad Commuicatios Societies.Proceedigs.IEEE, vol. 3. [10] Attig, M., Dharmapurikar, S. & Lockwood, J. 2004, Implemetatio results of bloom filters for strig matchig, Field-Programmable Custom Computig Machies, 2004.FCCM 2004.12th Aual IEEE Symposium o, pp. 322-323. [11] Whitaker, A. & Wetherall, D. 2002, Forwardig without loops i Icarus, Ope Architectures ad Network Programmig Proceedigs, 2002 IEEE, pp. 63-75. [12] Mitzemacher, M. & Upfal, E. 2005, Probability ad Computig: Radomized Algorithms ad Probabilistic Aalysis, Cambridge Uiversity Press. 8