Slide 1

Slide 1 text

Copyright Elasticsearch 2013. Copying, publishing and/or distributing without written permission is strictly prohibited Adrien Grand dessine moi un index

Slide 2

Slide 2 text

Copyright Elasticsearch 2013. Copying, publishing and/or distributing without written permission is strictly prohibited qui suis-je? • @jpountz • committer Apache Lucene • software engineer chez Elasticsearch

Slide 3

Slide 3 text

Copyright Elasticsearch 2013. Copying, publishing and/or distributing without written permission is strictly prohibited indexer • adapter la représentation des données aux requêtes changer l’ordre des données dupliquer si besoin mémoire ou disque dur suivant les accès etc. • souvent plus rapide qu’on ne croit 220 GB/h pour des documents de 4KB http://people.apache.org/~mikemccand/lucenebench/ indexing.html

Slide 4

Slide 4 text

Copyright Elasticsearch 2013. Copying, publishing and/or distributing without written permission is strictly prohibited créons un index • cahier des charges recherche de livres recherche exacte ou par intervalles sur les descriptions en mémoire sql index term data Lucene in action Databases lucene

Slide 5

Slide 5 text

Copyright Elasticsearch 2013. Copying, publishing and/or distributing without written permission is strictly prohibited Lucene/Elasticsearch ne fonctionnent pas ainsi

Slide 6

Slide 6 text

Copyright Elasticsearch 2013. Copying, publishing and/or distributing without written permission is strictly prohibited créons un index (2) Lucene term 2 3 Lucene in action Databases 0 1 data index 0 1 0,1 0,1 0 0 Segment doc id document term ordinal terms dict postings list sql 4 1 • et si on utilisait de la recherche binaire plutôt? !

Slide 7

Slide 7 text

Copyright Elasticsearch 2013. Copying, publishing and/or distributing without written permission is strictly prohibited avantages/inconvénients • avantages écritures séquentielles indexation par lots très rapide données immuables : aucun verrou termes identifiés par un ordinal; utile pour: tris facettes intersections efficaces • inconvénient pas de temps réel: mises à jour document par document coûteuses

Slide 8

Slide 8 text

Copyright Elasticsearch 2013. Copying, publishing and/or distributing without written permission is strictly prohibited cycle de vie d’une requête

Slide 9

Slide 9 text

Copyright Elasticsearch 2013. Copying, publishing and/or distributing without written permission is strictly prohibited Dictionnaire de termes • index en mémoire du dictionnaire de termes en mémoire dans un FST ne stocke que les préfixes l/4 u c r y/3 b/2 r a/1 br = 2 brac = 3 luc = 4 lyr = 7

Slide 10

Slide 10 text

Copyright Elasticsearch 2013. Copying, publishing and/or distributing without written permission is strictly prohibited Dictionnaire de termes (2) • dictionnaire complet des termes stocké sur disque de façon ordonnée compressé en ne répétant pas les préfixes “block tree” [prefix=luc] a, freq=1, offset=101 as, freq=1, offset=149 ene, freq=9, offset=205 ky, freq=7, offset=260 rative, freq=5, offset=323 Jump here Not found Not found Found

Slide 11

Slide 11 text

Copyright Elasticsearch 2013. Copying, publishing and/or distributing without written permission is strictly prohibited Postings lists • identifiants des documents stockés de façon ordonnée compressés: encodage des différences séparation en blocs de taille N (128 en pratique) stockage des blocs sur aussi peu de bits que nécessaire dernières valeurs stockées avec le format vInt 1,3,4,6,8,20,22,26,30,31 1,2,1,2,2,12,2,4,4,1 [1,2,1,2] [2,12,2,4] 4, 1 2 bits par valeur 4 bits par valeur example avec N=4 vInt

Slide 12

Slide 12 text

Copyright Elasticsearch 2013. Copying, publishing and/or distributing without written permission is strictly prohibited Champs stockés • index en mémoire interrogé par recherche binaire • données sur disque compressées en blocs de 16KB avec lz4 ! 0 1 2 3 4 5 6 16KB 16KB 16KB docId=0 offset=42 docId=3 offset=127 docId=4 offset=199

Slide 13

Slide 13 text

Copyright Elasticsearch 2013. Copying, publishing and/or distributing without written permission is strictly prohibited et voilà! • accès disque 2 lectures aléatoires par champ interrogé 1 lecture aléatoire par document retourné ! optimisé pour les termes dont la fréquence est 1: 1 lecture aléatoire par champ interrogé au lieu de 2 • dictionnaire de termes et postings lists tiennent souvent dans le cache du système d’exploitation ! ! ! !

Slide 14

Slide 14 text

Copyright Elasticsearch 2013. Copying, publishing and/or distributing without written permission is strictly prohibited merci • Questions? • Elasticsearch • we’re hiring search, distributed systems, machine learning, … • http://elasticsearch.com/support