Bases de Données Avancées
Optimisation des bases de données
INDEXATION : EXERCICES THEORIQUES
Exercice 4 — Indexation par arbre B+ de chaînes de caractères
Comme nous l'avons vu en cours, l'intérêt des index triés hierarchiques à base d'arbre B est d'accélérer l'accès ordonné
aux données ou par plage de valeurs. Ce type de requête concerne bien entendu les attributs numériques, mais aussi les
données de type chaîne de caractères pour lesquelles un ordre bien connu est l'ordre lexicographique du dictionnaire.
Dans cet exercice, nous allons ainsi suivre la construction d'un index organisant dans un arbre B+ des données de ce
type chaînes.
1. Initialisation de l'index — Pour les besoins de l'exercice, on suppose que l'arbre utilisé est un arbre B+ d'ordre 1
(dans la pratique, l'ordre serait bien entendu bien plus élevé). Sachant que l'arbre doit être équilibré, donné les états
sucessifs de ce dernier suite aux ajouts de données suivants: 1) branche puis 2) fanal et enfin 3) arbre.
2. Insertion de données dans l'index — Poursuivez, étape par étape, on considérant maintenant les ajours suivants :
1) école puis 2) drap, 3) girafe, 4) draperie, 5) drapeau, et enfin 6) grue.
3. Suppression de données dans l'index — On suppose maintenant que la suppression de tuples dans la base de
données entraîne la suppression de certaines valeurs du champ indexé. Donnez les états successifs de l'arbre
d'indexation faisant suite aux suppressions suivantes : 1) branche puis 2) fanal et enfin 3) drap.
Exercice 5 — Indexation par tables de hachage : comparaisons
Un autre mode d'indexation fréquemment utilisé par les SGBD est le hachage. Dans cet exercice, nous allons comparer
différentes techniques de hachage pour l'indexation de données purement numériques (nombres entiers).
1. Hachage statique — Nous avons vu en cours que ce type de hachage à espace d'indexation fixe n'est pas adapté à la
problématique des bases de données. Nous allons le vérifier par l'exemple. On considère ici une table de hachage
comportant 4 pages de capacité maximale d'indexation de 2 éléments par page (là encore, nous sommes dans un cas
jouet bien éloigné des valeurs utilisées en pratique. Deux fonctions de hachage seront considérées en parallèle pour
indexer les éléments : dans le premier cas, la fonction de hachage indexera les nombres entiers suivant leur vameur
modulo 4. Dans l'autre cas, la fonction retournera la somme des digits du nombre, modulo 4 (par exemple, pour le
nombre 456, on a comme résultat 13 = 4+5+6 modulo 4).
a) donnez l'évolution des deux tables de hachage correspondant aux insertions successives des nombres suivants : 16,
37, 8, 2, 53 et enfin 12.
b) combien de valeurs ont-elles pu être indexée avant d'arriver à une saturation de l'index. En comparant ce nombre a
la capacité théorique de l'index, pensez-vous qu'une indexation statique aussi simple soit bien équilibrée ?
2. Hachage dynamique extensible — Afin de dépasser les limitations du hachage statique, on s'intéresse cette fois à
une indexation de type hachage extensible. Comme dans la question précédente, les pages de la table de hachage ne
pourront contenir au maximum que 2 éléments indexés. Comme en cours, l'indexation se fera sur les bits de poids
faible des nombres indexés, en commençant initialement par ne considérer que le dernier bit des données.
a) donnez l'évolution de la table de hachage ainsi obtenue suite aux insertions successives des nombres suivants : 16,
37, 8, 2, 53 et enfin 12. Cette insertions conduisent-elles à des niveaux de découpage bien équilibrés ?
b) montrez maintenant comment évolue la table de hachage suites aux suppressions successives suivantes : 37, 2 et
enfin 8.
3. Hachage dynamique linéaire — Pour terminer, nous allons étudier une stratégie de hachage linéaire. Comme dans
la question précédente, les pages de la table de hachage ne pourront contenir au maximum que 2 éléments indexés,
auxquels on rajoute une page de débordement de 4 éléments. Comme précédemment, l'indexation se fera sur les bits
de poids faible des nombres indexés suivant le niveau de découpage atteint par le pointeur dynamique de la table.
a) donnez l'évolution de la table de hachage ainsi obtenue suite aux insertions successives des nombres suivants : 16,
37, 8, 2, 53 et enfin 12. Tous les éléments sont-ils bien indexés à la fin de ces différentes insertions.
© J-Y Antoine