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