Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ungefähr Populär: Moderne Datenstrukturen im Einsatz

Ungefähr Populär: Moderne Datenstrukturen im Einsatz

Eine wahnwitzige Tour durch moderne (streaming) Datenstrukturen wie BloomFilter, Count-Min-Sketches und TopK.

Torsten Bøgh Köster

May 10, 2017
Tweet

More Decks by Torsten Bøgh Köster

Other Decks in Technology

Transcript

  1. Bester Arbeitgeber Deutschlands im Handel und Konsum laut Arbeitgeber-Ranking Produktsuche.

    60M Produkte. 2k Bilder/Sek. 1k Suchen/Sek. Torsten Bøgh Köster | [email protected] | @tboeghk | developer.s24.com
  2. 0 1 0 1 0 0 0 0 0 1

    „JAX2017“ hash1 hash2 hash3
  3. 0 1 1 1 0 1 0 0 0 1

    „Mainz“ hash1 hash2 hash3
  4. 0 1 1 1 0 1 0 0 0 1

    „Gibtsnicht“ hash1 hash2 hash3 Wenn an mindestens einer
 Stelle eine Null steht, ist das
 Wort definitiv nicht enthalten
  5. 0 1 1 1 0 1 0 0 0 1

    „JAX2017“ hash1 hash2 hash3 Wenn alle Werte Eins sind,
 ist das Wort wahrscheinlich in der Menge enthalten
  6. 0 1 1 1 0 1 0 0 0 1

    „Kollision“ hash1 hash2 hash3 Kollisionen bei allen Hash-
 Funktionen führen zu falsch positiven Antworten
  7. BloomFilter Eigenschaften • Konstante Speichergröße • Konstante Zugriffszeit (Einfügen &

    Abfrage) • Falsch positive Antworten möglich;
 negative Antworten sind exakt • Elemente können nicht entfernt werden
  8. BloomFilter Parameter • Anzahl Hash-Funktionen (k) • Größe des Bitsets

    (m) • Wahrscheinlichkeit falsch positiver Antworten: 1 − 1 − 1 m kn k
  9. BloomFilter - Implementation in Guava BloomFilter<Thing> filter = BloomFilter.create(funnel, 100,

    0.01);
 filter.put(element); if (filter.mightContain(element)) { … } Hash-Funktion erwartete Anzahl Elemente Falsch-Positiv-Rate
  10. 0 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3
  11. 0 0 1 0 0 0 0 0 0 0

    0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 3 „JAX2017“ hash1 hash2 hash3
  12. 0 0 2 0 0 0 0 0 0 0

    0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 2 3 „JAX2017“ hash1 hash2 hash3
  13. 0 0 2 0 0 0 0 0 1 0

    0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 1 2 3 „Mainz“ hash2 hash1 hash3
  14. 0 0 3 0 0 0 0 0 1 0

    0 2 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 2 1 2 3 „Kollision“ hash1 hash2 hash3
  15. 0 0 3 0 0 0 0 0 1 0

    0 2 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 2 1 2 3 „JAX2017“ hash1 hash2 hash3 3 2 2
  16. 0 0 3 0 0 0 0 0 1 0

    0 2 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 2 1 2 3 „JAX2017“ hash1 hash2 hash3 3 2 2 min=2
  17. 0 0 3 0 0 0 0 0 1 0

    0 2 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 2 1 2 3 „Mainz“ 1 1 2 min=1 hash1 hash2 hash3
  18. Word # hund 1 katze 1 maus 1 kuh 1

    schaf 1 krokodil 1 pferd 1 forelle 1 ziege 1 … hund hund schaf schaf hund reh kamel
  19. Word # hund 1 katze 1 maus 1 kuh 1

    schaf 1 krokodil 1 pferd 1 forelle 1 kamel 1 … hund hund schaf schaf hund reh
  20. Word # hund 1 katze 1 maus 1 kuh 1

    schaf 1 krokodil 1 pferd 1 forelle 1 reh 1 … hund hund schaf schaf hund
  21. Word # hund 2 katze 1 maus 1 kuh 1

    schaf 1 krokodil 1 pferd 1 forelle 1 reh 1 … hund hund schaf schaf
  22. Word # hund 4 schaf 3 katze 1 maus 1

    kuh 1 krokodil 1 pferd 1 forelle 1 reh 1 …
  23. Word # hund 45 schaf 23 katze 9 maus 8

    kuh 8 krokodil 8 pferd 6 forelle 5 reh 4 … tiger
  24. Word # hund 45 schaf 23 katze 9 maus 8

    kuh 8 krokodil 8 pferd 6 forelle 5 tiger 4 …
  25. Other talks today by @tboeghk Open Source Logging & Monitoring

    (16:45) @shopping24 | @tboeghk | developer.s24.com yes, we’re hiring! Torsten Bøgh Köster | [email protected] | @tboeghk | developer.s24.com Bester Arbeitgeber Deutschlands im Handel und Konsum laut Arbeitgeber-Ranking