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

Dessine moi un index (fr)

Elasticsearch Inc
December 04, 2013
390

Dessine moi un index (fr)

Introduction au fonctionnement des indexes utilisés par Elasticsearch. Présenté lors du quatrième meetup Elasticsearch FR http://www.meetup.com/elasticsearchfr/events/138099582/

Elasticsearch Inc

December 04, 2013
Tweet

Transcript

  1. 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
  2. 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
  3. 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
  4. Copyright Elasticsearch 2013. Copying, publishing and/or distributing without written permission

    is strictly prohibited Lucene/Elasticsearch ne fonctionnent pas ainsi
  5. 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? !
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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 ! ! ! !
  12. 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