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. 1.

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

    torsten.koester@s24.com | @tboeghk | developer.s24.com
  2. 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. 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. 15.

    0 1 0 1 0 0 0 0 0 1

    „JAX2017“ hash1 hash2 hash3
  5. 16.

    0 1 1 1 0 1 0 0 0 1

    „Mainz“ hash1 hash2 hash3
  6. 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
  7. 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
  8. 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
  9. 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
  10. 22.

    BloomFilter Parameter • Anzahl Hash-Funktionen (k) • Größe des Bitsets

    (m) • Wahrscheinlichkeit falsch positiver Antworten: 1 − 1 − 1 m kn k
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 42.

    Word # hund 2 katze 1 maus 1 kuh 1

    schaf 1 krokodil 1 pferd 1 forelle 1 reh 1 … hund hund schaf schaf
  24. 43.

    Word # hund 4 schaf 3 katze 1 maus 1

    kuh 1 krokodil 1 pferd 1 forelle 1 reh 1 …
  25. 44.

    Word # hund 45 schaf 23 katze 9 maus 8

    kuh 8 krokodil 8 pferd 6 forelle 5 reh 4 … tiger
  26. 45.

    Word # hund 45 schaf 23 katze 9 maus 8

    kuh 8 krokodil 8 pferd 6 forelle 5 tiger 4 …
  27. 47.
  28. 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