Video: ZEITGEIST: MOVING FORWARD | OFFICIAL RELEASE | 2011 2025
I hjertet av mange streaming algoritmer er Bloom-filtre. Skapt for nesten 50 år siden av Burton H. Bloom, i en tid da datalogi fortsatt var ganske ung, var den opprinnelige hensikten med denne algoritmenes skaperen å handle mellomrom (minne) og / eller tid (kompleksitet) mot det han kalte Tillatte feil. Hans originale papir har tittelen Utvidelse av rom / tid i Hash-koding med tillatte feil.
Du kan lure på plass og tid som Bloom anser motivatorer for sin algoritme. Tenk deg at du må avgjøre om et element allerede har dukket opp i en strøm ved hjelp av en tidligere diskutert datastruktur. Å finne noe i en strøm innebærer at innspilling og søking er raske, og derfor er et hashbord et ideelt valg. Hash-tabeller trenger bare å legge til elementene du vil spille inn og lagre dem. Gjenopprette et element fra et hasjbord er raskt fordi hashbordet bruker lett manipulerte verdier til å representere elementet, i stedet for selve elementet (som kan være ganske komplisert). Likevel, lagring av begge elementene og en indeks til disse elementene har begrensninger. Hvis et hasjbord står overfor flere elementer enn det kan håndtere, for eksempel elementene i en kontinuerlig og potensielt uendelig strøm, vil du ende opp med å oppleve minneproblemer på et tidspunkt.
En viktig vurdering for Bloom-filtre er at falske positiver kan oppstå, men falske negativer kan ikke. For eksempel kan en datastrøm inneholde sanntids overvåkingsdata for et kraftverk. Ved bruk av et Bloom-filter vil analysen av datastrømmen vise at forventede målinger trolig er en del av settet av tillatte målinger, med enkelte feil tillatt. Men når en feil oppstår i systemet, viser den samme analysen at lesingene ikke er en del av settet av tillatt målinger. De falske positive er usannsynlig å forårsake problemer, men fraværet av falske negativer betyr at alle forblir trygge. På grunn av potensialet for falske positiver, er filtre som Bloom-filteret probabilistiske datastrukturer - de gir ikke et bestemt svar, men en sannsynlig.
Hashes, de enkelte oppføringene i et hashbord, er raske fordi de fungerer som indeksen til en bok. Du bruker en hash-funksjon for å produsere hash; inngangen er et element som inneholder komplekse data, og utgangen er et enkelt tall som fungerer som en indeks til det elementet. En hash-funksjon er deterministisk fordi den produserer det samme nummer hver gang du sparer det en bestemt datainngang.Du bruker hasen til å finne den komplekse informasjonen du trenger. Blomfiltre er nyttige fordi de er en sparsom måte å registrere spor av mange elementer uten å måtte lagre dem bort som et hashbord gjør. De fungerer på en enkel måte og bruker følgende som hovedingredienser:
- En liten vektor: En liste over bitelementer, hvor hver bit i elementet kan ha en verdi på 0 eller 1. Listen er lang antall biter kalt m. Jo større m er, desto bedre, selv om det er måter å optimalisere størrelsen på.
- En rekke hashfunksjoner: Hver hash-funksjon representerer en annen verdi. Hashfunksjonene kan raskt knase data og produsere jevnt fordelte resultater, som er like like fra minimum til maksimale utgangsverdier for hasen.
