TD Méthodes Accès
Indexation
Les organisations indexées nécessitent la création d'un index trié sur lequel sont appliquées les recherches
dichotomiques d'une valeur de clé discriminante ou non. Le fichier étant lui-même trié sur clé, l'index
correspondant est de type primaire non dense. Cet index peut être vu comme une table de couples (val_clé,
adr_page) où val_clé est la plus petite clé des articles stockés dans la page référencée par adr_page. Lorsque
l'index est de grande taille, on le décompose en une arborescence dont chaque nœud a une taille inférieure ou
égale à une page. Le nœud sommet de l'arborescence est appelé racine de l'index. Lors de la recherche d'une
valeur de clé dans l'index, un examen de la racine permet de déterminer la partie de l'arbre dans laquelle se
poursuivra la recherche en renvoyant sur un nœud de niveau immédiatement inférieur. L'examen de ce nœud
permet à son tour d'affiner l'intervalle de recherche. Ce processus récursif s'applique jusqu'à rencontrer un nœud
ou une feuille (nœud de plus bas niveau de l'arbre) contenant la valeur de clé cherchée et l'adresse de la page
associée. Les organisations arborescentes se différencient par le principe suivant lequel est gérée la dynamicité
de l'index hiérarchique. Ce principe détermine les performances obtenues tant au niveau du nombre d'E/S
nécessaires pour parcourir l'index qu'au niveau du taux d'occupation de chaque nœud de la hiérarchie.
Un arbre balancé est également appelé arbre-B, B-tree ou arbre équilibré. Intuitivement, il est possible de
construire une arborescence dynamique de la façon suivante. Lorsqu'un index est de grande taille, il est possible
d'indexer à son tour le fichier contenant cet index et ce, de façon récursive jusqu'à ce que l'index de plus haut
niveau (la racine) tienne sur une seule page. Compte tenu de la dynamicité de l'index, la racine elle-même peut
croître et ne plus tenir dans une page. On rajoute alors un niveau à la hiérarchie d'index. La hiérarchie grossit
donc par la racine de telle sorte que tous les chemins de la racine aux feuilles ont même longueur. La définition
formelle d'un arbre-B est donnée ci-dessous et est illustrée sur l'exemple de la Figure 2.
Un arbre-B d'ordre m est un arbre tel que
(i) chaque nœud contient k clés triées, avec m
≤
k
≤
2m sauf la racine pour laquelle k vérifie 1
≤
k
≤
2m.
(ii) tout nœud non feuille a (k+1) fils. Le ième fils a des clés comprises les (i-1)ème et ième clés du père.
(iii) l'arbre est équilibré.
Figure 2. arbre-B d'ordre 2
1) Donner un exemple d’un fichier séquentiel indexé. Quel est l’intérêt de cette méthode ?
2) Quel est l’intérêt que la structure d’un index en arborescence ?
3) Représenter l'arbre-B de la Figure 2 après insertion des clés 37 puis 36.
4) Représenter l'arbre-B de la Figure 1 après suppression des clés 17 puis 31
5) Discuter la différence entre un fichier organisé sous forme d’arbre B et un fichier indexé par arbre-B.
Hachage
1) Donner un exemple d’un fichier aléatoire.
2) Montrer comment fonctionne la recherche sur une clé.
3) A quoi correspond le phénomène de collision ?
4) On suppose dans un premier temps que les paquets saturés débordent dans les paquets non encore saturés.
Proposer différentes techniques permettant de stocker et de retrouver ultérieurement des articles en
débordement. Ces techniques sont-elles adaptées dans le cas de collisions nombreuses ?