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.

A6bb61c55fa41db28e68cd476cb54ab9?s=128

Torsten Bøgh Köster

May 10, 2017
Tweet

Transcript

  1. Ungefähr Populär: Moderne Datenstrukturen im Einsatz Torsten Bøgh Köster |

    torsten.koester@s24.com | @tboeghk | developer.s24.com
  2. @tboeghk @tboeghk #cto, Search Technology Meetup Hamburg, #ansible, #roadbike, #landscapephotography

    Torsten Bøgh Köster | torsten.koester@s24.com | @tboeghk | developer.s24.com
  3. Bester Arbeitgeber Deutschlands im Handel und Konsum laut Arbeitgeber-Ranking Produktsuche.

    60M Produkte. 2k Bilder/Sek. 1k Suchen/Sek. Torsten Bøgh Köster | torsten.koester@s24.com | @tboeghk | developer.s24.com
  4. Open Source Power Delivered.

  5. Anwendungsbeispiel

  6. Produktanzahl & Fluktuation

  7. „TV“

  8. rock hose tv jeans 129 64 202 98 120 …

  9. „Kleid“

  10. Global Mandant Kategorie Suche 1 ~ 30 > 3k

  11. Probabilistic algorithms to the rescue

  12. BloomFilter for element presence

  13. BloomFilter Anwendungsfälle —> Pre-Caching: Langsame Zugriffe auf nicht existierende Elemente

    verhindern —> Gelesene Beiträge markieren
  14. 0 0 0 0 0 0 0 0 0 0

  15. 0 1 0 1 0 0 0 0 0 1

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

    „Mainz“ hash1 hash2 hash3
  17. 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
  18. 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
  19. 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
  20. BloomFilter Demo

  21. 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
  22. BloomFilter Parameter • Anzahl Hash-Funktionen (k) • Größe des Bitsets

    (m) • Wahrscheinlichkeit falsch positiver Antworten: 1 − 1 − 1 m kn k
  23. 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
  24. CountMinSketch element cardinality

  25. CountMinSketch Anwendungsbeispiele —> Zugriffsanzahl je Produkt —> Produkt-Views je Session

  26. 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
  27. 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
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34. CountMinSketch characteristics

  35. HeavyHitters (TopK) Top words on an unbounded stream of words

  36. Anwendungsbeispiel Autocomplete

  37. Word # kamel ziege forelle pferd krokodil schaf kuh maus

    katze hund
  38. Word # hund 1 reh kamel ziege forelle pferd krokodil

    schaf kuh maus katze
  39. 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
  40. 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
  41. Word # hund 1 katze 1 maus 1 kuh 1

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

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

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

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

    kuh 8 krokodil 8 pferd 6 forelle 5 tiger 4 …
  46. HeavyHitters (TopK) Parameter

  47. None
  48. 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 | torsten.koester@s24.com | @tboeghk | developer.s24.com Bester Arbeitgeber Deutschlands im Handel und Konsum laut Arbeitgeber-Ranking