Slide 1

Slide 1 text

Ungefähr Populär: Moderne Datenstrukturen im Einsatz Torsten Bøgh Köster | [email protected] | @tboeghk | developer.s24.com

Slide 2

Slide 2 text

@tboeghk @tboeghk #cto, Search Technology Meetup Hamburg, #ansible, #roadbike, #landscapephotography Torsten Bøgh Köster | [email protected] | @tboeghk | developer.s24.com

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

Open Source Power Delivered.

Slide 5

Slide 5 text

Anwendungsbeispiel

Slide 6

Slide 6 text

Produktanzahl & Fluktuation

Slide 7

Slide 7 text

„TV“

Slide 8

Slide 8 text

rock hose tv jeans 129 64 202 98 120 … …

Slide 9

Slide 9 text

„Kleid“

Slide 10

Slide 10 text

Global Mandant Kategorie Suche 1 ~ 30 > 3k

Slide 11

Slide 11 text

Probabilistic algorithms to the rescue

Slide 12

Slide 12 text

BloomFilter for element presence

Slide 13

Slide 13 text

BloomFilter Anwendungsfälle —> Pre-Caching: Langsame Zugriffe auf nicht existierende Elemente verhindern —> Gelesene Beiträge markieren

Slide 14

Slide 14 text

0 0 0 0 0 0 0 0 0 0

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

BloomFilter Demo

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

BloomFilter Parameter • Anzahl Hash-Funktionen (k) • Größe des Bitsets (m) • Wahrscheinlichkeit falsch positiver Antworten: 1 − 1 − 1 m kn k

Slide 23

Slide 23 text

BloomFilter - Implementation in Guava BloomFilter filter = BloomFilter.create(funnel, 100, 0.01);
 filter.put(element); if (filter.mightContain(element)) { … } Hash-Funktion erwartete Anzahl Elemente Falsch-Positiv-Rate

Slide 24

Slide 24 text

CountMinSketch element cardinality

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

CountMinSketch characteristics

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

Anwendungsbeispiel Autocomplete

Slide 37

Slide 37 text

Word # kamel ziege forelle pferd krokodil schaf kuh maus katze hund

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

HeavyHitters (TopK) Parameter

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

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