Accès par index multiples

publicité
Organisations Indexées
Définitions préliminaires
1.
Index = table permettant d’associer à une clé d’article (donnée d’application) l’adresse relative de
cet article (position dans le fichier)
2.
Méthodes d’accès indexé = façon d’aller chercher des articles (données d’application) dans un
fichier à partir d’organisation indexée ( index primaire)
3.
Densité d’un index = quotient du nombre de clés dans l’index sur le nombre d’articles du fichier.
Ainsi, un index dense possède autant de clés qu’il y a d’articles dans le fichier. Si le fichier est trié,
on peut utiliser un index non dense (ex : la clé la plus grande des articles de chaque bloc avec
l’adresse relative du bloc)
4.
Index hiérarchisé = index sur un index, sur un index, … pour accélérer la recherche de la clé dans
l’index
5.
Index discriminants ou non = sur une donnée discriminante ou non (identifiant un article de manière
unique ou non)
6.
Index plaçant = qui range les articles dans l’ordre des clés et les restitue dans l’ordre en lecture
séquentielle de la mémoire
7.
Index primaire = qui est basé sur la clé des articles, permet de les ranger en mémoire (au passage,
accélère l’accès sur clé)
8.
Index secondaire = un accélérateur d’accès, cet index est non-discriminant
Introduction
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
1
(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é.
31
10 15 24
58
11 12 13
17 18
34 50 60 70
25 29
32 33
35 38 39
52 53
62 64
75 80
Figure 1. arbre-B d'ordre 2
Question 1
Compte tenu de la définition formelle des arbre-B, quelle seront les hauteurs minimale et maximale (nombre
de niveaux) d'un arbre-B d'ordre m contenant n clés ?
Question 2
Quels sont les critères de choix de l'ordre d'un arbre-B si l'on utilise cette structure pour construire un index ?
Question 3
Quel est l'intérêt que la structure d'un index arborescent soit équilibrée ?
Question 4
Dans les applications réelles, les clés d'accès peuvent être de taille variable. En déduire le format de stockage
du nœud d'un arbre-B. Quelle est l'utilité des bornes m et 2m fixées pour le nombre k de clés par nœud et
comment faut-il interpréter ces bornes dans de cas de clés de taille variable ?
Question 5
Représenter l'arbre-B de la Figure 1 après insertion des clés 37 puis 36.
Question 6
Représenter l'arbre-B de la Figure 1 après suppression des clés 17 puis 31.
Question 7
De nombreuses applications exécutent des traitements séquentiels triés sur leurs fichiers. La structure d'arbreB est-elle bien adaptée à ce type de traitements ? Combien d'E/S nécessite un parcours séquentiel trié de toutes
les clés de l'arbre-B présenté Figure 1 ? Proposer une optimisation de cette structure permettant de lire
uniquement les feuilles de l'arbre lors d'un parcours séquentiel trié. Cette organisation est connue sous le nom
arbre-B+. Discuter des avantages des arbres B+ par rapport aux arbres B.
2
Accès par index multiples
Dans le domaine des bases de données, les recherches d'articles se font généralement sur des critères
multiples (exemple: rechercher les voitures de puissance supérieure à 10 cv et de marque Citroën). Les
organisations de fichier indexées avec un seul index privilégient le traitement du critère de recherche le plus
fréquemment employé sur un fichier, en ordonnançant les articles sur disque en fonction de ce critère. Pour traiter
efficacement des recherches multi-critères, il est possible de gérer plusieurs indexes pour un même fichier.
La solution consiste à utiliser un index principal plaçant (les données sont triées selon cet index) et des
indexes annexes, appelés indexes secondaires. Un index secondaire est constitué sur un attribut (ou plusieurs)
discriminant ou non et donne pour chaque valeur de l’attribut les identifiants (souvent les adresses relatives) des
articles ayant cette valeur. L’attribut (ou le groupe d’attributs) ainsi indexé est appelé clé secondaire. Lors d'une
recherche sur clé secondaire, l’accès à l’index secondaire (un arbre B ou B+) délivre les identifiants de tous les
articles satisfaisant le critère de recherche. Ces articles sont ensuite récupérés un à un via leurs identifiants, à
raison d'au plus une E/S par article. La création d'un index secondaire introduit un coût de stockage important.
De plus, toute mise à jour du fichier de données entraîne la mise à jour de tous les index secondaires portant sur
ce fichier. L'utilisation d'index secondaires doit donc être restreinte à des critères de recherche fréquents.
Question 1
On désire utiliser une organisation basée sur une technique d'arbre-B+ pour indexer les articles d'un fichier
selon plusieurs attributs, A1 étant clé primaire (plaçante) et A2, A3, … Ap étant des clés secondaires. Précisez
comment doivent être modifiées les algorithmes d’insertion, mise-à-jour et suppression d’articles en fichiers.
Question 2
Dans le même contexte où le fichier est placé sur A1 et indexé sur les clés secondaires A2, A3, … Ap,
précisez l’algorithme d’exécution d’une restriction de critère ( A1 = v1 & A2 = v2 … & Ap = vp). Comment
peut-on optimiser la recherche des articles pertinents ? Comment modifier l’algorithme si certains « et » ( & )
sont remplacés par des « ou » ( | ), en supposant une forme normale disjonctive (et de ou) ?
Question 3
Dans le même contexte où le fichier est placé sur A1 et indexé sur les clés secondaires A2, A3, … Ap,
précisez l’algorithme d’exécution d’une restriction de critère ( A1 = v1 & A2 = v2 … & Ap = vp & B1 = v’1 &
B2 = v’2 & …), les Bi étant des attributs non indexés. Compte tenu d’une fréquence prévisionnelle
d’interrogation et de mise à jour sur un attribut, précisez comment choisir si un attribut gagne à être indexé ou
non ?
3
Téléchargement