Bonjour, bienvenue dans cet épisode 9 sur l’indexation dans les bases de données. C’était l’étape logique juste après l’épisode 8 sur la manière de ranger et rechercher des données.

On parlait dans l’épisode précédent de ranger des livres, et d’aller les chercher. Les seuls outils pour cela étaient un ensemble d’étagères et quelques règles non écrites. J’aime bien chercher les règles non écrites : c’est ce qui permet de tout clarifier, et parfois de tout remettre en cause pour créer de nouvelles opportunités.

1) On voulait donner un ordre, mais lequel ? On supposait que la personne qui range ses livres ne se pose pas la question, ou plutôt qu’elle a une réponse toute faite : probablement de haut en bas du meuble, de gauche à droite par étagère.

Si c’est vous qui savez, qui rangez et qui cherchez, ça marche, mais bien sûr il faut prévenir les autres personnes qui pourraient vouloir le faire aussi, sinon ils ne trouvent pas le livre (dommage) voire pire : ils “cassent” votre rangement avec des livres en désordre, avec le coût en performance qu’on a vu.

2) On se basait sur le fait que la seule information est la tranche du livre, avec titre et auteur. Mais on n’est pas obligés. On peut faire un papier qu’on scotche à côté de notre étagère pour expliquer le système de rangement.

Enrichir la structure

Et là encore, les bibliothèques existent depuis longtemps et ont tenté plein de bonnes idées, pour finir par s’accorder sur un standard.

Les allées sont rangées par thèmes, qui ont des sous-catégories, on colle à chaque livre une référence unique… et on souhaite toutefois que ce soit facile à naviguer quel que soit la manière dont nos lecteurs veulent aborder le problème.

On ne peut ranger nos livres physiquement que d’une façon, alors on a recours à une “structure” encore plus complexe mais plus astucieuse : ajouter en plus des étagères de livres des fiches ou dossiers, permettant de retrouver référence et section en fonction de votre question.

Un catalogue va lister tous les livres par ordre alphabétique du nom des auteurs. Quand un livre a trois auteurs, il sera présent trois fois dans ce catalogue et ce n’est pas grave parce que ces trois lignes mèneront vers la même référence, et donc un seul exemplaire physique du livre.

Sur les tonnes de livres et les millions de pages cumulées des ouvrages, vous venez d’ajouter trois lignes, même pas une feuille A4, pour simplifier la vie de tous vos lecteurs.

On a fait une structure plus complexe mais plus puissante. Et tant qu’on y est, on va faire un catalogue par titre, un par éditeur, un par date, et des entrées par sujets pour pouvoir répondre aux lecteurs qui cherchent des livres à la croisée des sujets, comme histoire et religion, science et bande dessinée, etc.

Indexation

Ces catalogues papier ont un nom : maintenant presque tout est informatisé, mais avant on appelait ça des index. Et c’est tellement utile que de nombreux livres de référence ont aussi un ou plusieurs index permettant de retrouver le contenu dans le livre.

Index est un mot que vous avez peut-être déjà entendu au sujet des bases de données, j’y consacrerai peut-être un épisode mais a priori vous avez déjà compris comment ça marche, et surtout vous venez de comprendre pourquoi un index est souvent très bien (pratique pour la recherche), mais qu’il a toujours un coût (écrire et mettre le catalogue à jour), et que parfois on choisit de ne pas payer ce coût car ça n’a pas assez d’utilité, par exemple, de faire un catalogue de livres en fonction des prénoms des personnages principaux et secondaires.

Un mot sur la suite

On a balayé la plupart des catégories d’épisodes que je voulais faire : un concept très abstrait mais utile (002. le cache), un sujet simple mais plein de pièges à démystifier (004. la priorité des règles CSS), un sujet business (005. achats IT B2B), de la philosophie (006. le Vide, l’Unité et l’Infini), et quelques pièges ou astuces dans Ruby on Rails (003. les requêtes N+1 et 007. les associations).

Avec 001. listes chaînées et 008. structures de données et algos de recherche je vise à dédramatiser un sujet souvent inquiétant dans les premières années d’école d’informatique ou d’apprentissage en solo dans les livres ou sur Internet. Dans la vraie vie vous utiliserez rarement les listes chaînées mais plutôt une bibliothèque ou les constructions de votre langage de programmation. Bref c’est bon pour la culture, et pour donner des idées, mais je trouve très dommage qu’il y ait des barrières à l’entrée alors qu’on pourrait tout de suite commencer à apprendre sur des projets plus amusants.

Pour la suite, je vais essayer de tourner sur ce genre de sujets, je suis preneur de vos retours sur twitter . Merci et à bientôt !