Video: NRK P3 om musikk og streaming 2025
I hjertet af mange streaming algoritmer er Bloom-filtre. Den tid, da computervidenskaben stadig var ret ung, blev skabt for næsten 50 år siden af Burton H. Bloom, var den oprindelige hensigt med denne algoritmens skaber at handle om rum (hukommelse) og / eller tid (kompleksitet) mod det, han kaldte tilladelige fejl. Hans originale papir er titlen Rum / Time Trade-offs i Hash-kodning med tilladelige fejl.
Du kan tænke dig at have plads og tid, som Bloom anser motiverende for hans algoritme. Forestil dig at du skal bestemme, om et element allerede er optrådt i en stream ved hjælp af en tidligere diskuteret datastruktur. At finde noget i en strøm indebærer optagelse og søgning er hurtig, hvilket betyder, at et hashbord er et ideelt valg. Hash tabeller kræver blot at tilføje de elementer, du vil optage og gemme dem. Gendannelse af et element fra et hashbord er hurtigt, fordi hashbordet bruger let manipulerede værdier til at repræsentere elementet, snarere end selve elementet (som kunne være ret komplekst). Men lagring af begge elementer og et indeks til disse elementer har begrænsninger. Hvis et hashbord står over for flere elementer, end det kan klare, såsom elementerne i en kontinuerlig og potentielt uendelig strøm, vil du ende med at påtage sig hukommelsesproblemer på et eller andet tidspunkt.
En væsentlig overvejelse for Bloom-filtre er, at falske positiver kan forekomme, men falske negativer kan ikke. For eksempel kan en datastrøm indeholde realtidsovervågningsdata for et kraftværk. Ved brug af et Bloom-filter viser analysen af datastrømmen, at forventede målinger sandsynligvis er en del af sæt tilladte aflæsninger, med nogle fejl tilladt. Men når en fejl opstår i systemet, viser den samme analyse, at aflæsningerne ikke er en del af sæt af tilladte aflæsninger. De falske positive er usandsynligt at skabe problemer, men fraværet af falske negativer betyder, at alle forbliver sikre. På grund af muligheden for falske positiver er filtre som Bloom-filteret probabilistiske datastrukturer - de giver ikke et bestemt svar, men en sandsynlig.
Hashes, de enkelte poster i et hashbord, er hurtige, fordi de fungerer som indekset for en bog. Du bruger en hash funktion til at producere hash; indgangen er et element, der indeholder komplekse data, og output er et simpelt tal, der fungerer som et indeks til det element. En hash-funktion er deterministisk, fordi den producerer det samme nummer hver gang du føder det en bestemt dataindgang.Du bruger hasen til at finde de komplekse oplysninger, du har brug for. Blomfiltre er nyttige, fordi de er en sparsommelig måde at registrere spor af mange elementer uden at skulle gemme dem væk som et hashbord gør. De arbejder på en enkel måde og bruger følgende som hovedingredienser:
- En smule vektor: En liste over bitelementer, hvor hver bit i elementet kan have en værdi på 0 eller 1. Listen er lang antal bits kaldet m. Jo større m er, jo bedre, selvom der er måder at optimere størrelsen på.
- En række hashfunktioner: Hver hash-funktion repræsenterer en anden værdi. Hash-funktionerne kan hurtigt knuse data og producere ensartede distribuerede resultater, som resultaterne ligeledes spænder fra minimum til maksimale outputværdier for hasen.