Zurück zur Übersicht

Begriff

Bloom Filter

Computer Science Algorithms S3
2 Quellen 0 Lernpfade 0 Backlinks enriched

Warum wichtig?

Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.

Du willst prüfen: "Habe ich diese URL schon gecrawlt?" Bei 1 Milliarde URLs brauchst du viel RAM. Ein Bloom Filter ist ein extrem kompakter Weg, Mengen zu speichern. Der Trick: Er speichert nicht die Elemente selbst. Er speichert nur Nullen und Einsen (Bits). Wenn du "google.com" prüfst, sagt er:

  • "Definitiv NEIN." (Die URL war noch nie da. Zu 100% sicher).
  • "Vielleicht JA." (Die URL war wahrscheinlich da. Zu 99% sicher). Er hat False Positives, aber keine False Negatives. Dafür braucht er 10x weniger Platz als ein Array.

Merksatz: Eine probabilistische Datenstruktur, die verwendet wird, um zu testen, ob ein Element Teil einer Menge ist; sie ist speichereffizient, kann aber falsch-positive Ergebnisse liefern (sagt "Ja", obwohl "Nein" richtig wäre).


Quick-Check

  1. Löschen?
    Geht nicht! Wenn du ein Bit auf 0 setzt, löschst du vielleicht auch andere Elemente, die zufällig dasselbe Bit nutzen. (Es gibt aber "Counting Bloom Filters", die das können, aber mehr Platz brauchen).
  2. Cuckoo Filter?
    Die moderne Alternative. Braucht ähnlich wenig Platz, unterstützt aber Löschen und ist oft schneller (wegen CPU-Cache-Lokalität).
  3. Name?
    Burton Howard Bloom (1970). Damals für Rechtschreibprüfung (Spell Checker) erfunden.