Télécharger la présentation
Publié parFrançoise Xx Modifié depuis plus de 10 années
1
Gestion de Fichiers Indexes basés sur les structures d’arbres binaires et indexes à niveaux multiples
2
Plan du cours d’aujourd’hui
Description du problème: Comment gérer effectivement un indexe qui ne tient pas en mémoire? Indexes à structures binaires: Tri efficace de l’indexe Préservation de l’ordre sans tri arbres binaires balancés (arbres AVL) Recherche efficace dans l’indexe Reduction du nombre d’accès au disque pendant la recherche arbres binaire paginés Indexes à niveaux multiples Résumé
3
Description générale du problème
Lorsqu’un indexe est trop grand pour tenir en mémoire, il faut le mettre sur stockage secondaire. Ceci cause des problèmes d’efficacité. En effet, Un indexe est là pour la recherche, et cette recherche doit être efficace. Cependant, une recherche binaire sur disque n’est pas très efficace. Un indexe doit aussi être mis à jour: des enregistrements doivent être ajoutés, effacés ou modifies. Ce type d’opération (example, le tri) peut être très couteux sur stockage secondaire Solution: La recherche doit être plus rapide que la recheche binaire, et l’insertion/effacement aussi rapide que la recherche.
4
Solution # 1: arbres binaires
La structure d’un arbre binaire nous donne une nouvelle capacité importante: Il n’est plus nécessaire de trier le fichier (ce qui est très couteux sur stockage secondaire). Afin de faire une recherche binaire, il suffit de traverser l’arbre jusqu’à ce que la clé recherchée soit trouvée. Afin d’ajouter une nouvelle clé, il suffit de traverser l’arbre et d’ajouter la nouvelle clé à la feuille appropriée.
5
Arbres binaires (suite)
Désavantages: Lorsque l’arbre n’est pas balancé, la performance de recherche ou d’insertion des clés ne sera pas très bonne Solution # 2: arbres balancés (AVL). Même si les arbres sont balancés, la recherche binaire n’est pas assez rapide lorsque l’indexe réside en stockage secondaire Solution # 3: arbres binaires paginés.
6
Solution # 2: arbres AVL Les arbres AVL nous permettent de re-organiser les noeuds de l’arbre au fur et à mesure que nous recevons de nouvelles clés, ce qui nous permet de maintenir une structure d’arbre quasi-optimale. Un arbre AVL est un arbre à hauteur balancée, c.a.d., un arbre qui place une limite sur la différence de hauteur permise entre deux sous-arbres d’un noeud. Dans un arbre AVL (aussi appelé un arbre HB(1) ), la différence maximale permise est de 1.
7
Solution # 2: Arbres AVL (suite)
Les deux caractéristiques importantes des arbres AVL sont les suivantes: En définissant un montant de différence (de hauteur) maximum permise entre 2 sous-arbres, les arbres AVL garantissent un niveau minimum de performance de recherche. Le maintient d’arbres AVL lors de l’insertion de nouvelle clés se fait par rotations locales (il y a 4 differents types de rotations [en fait, 2 types différents et leur rotations symmétriques]). La rotation la plus complexe ne demande que 5 re-affectation de pointeurs.
8
Solution # 2: arbres AVL (suite)
La performance de recherche des arbres AVL est très proche de celle des arbres completement balancés. Dans un arbre completement balancés, au pire, la performance de recherche est de log2(N+1). Dans un arbre AVL, elle est de 1.44 log2(N+2). Il se trouve qu’en fait, les arbres AVL ne sont pas directement applicables à la plupart des structures de fichiers car, comme tous les arbres strictement binaires, ils ont trop de niveaux—ils sont trop profonds. Les arbres AVL sont, cependant, important car ils suggèrent qu’il est possible de définir des procédures capables de maintenir l’arbre à une hauteur balancée.
9
Solution # 3: arbres binaires paginés
Les arbres AVL offrent une solution au problème de garder un indexe en ordre de manière peu couteuse. Cependant, ils n’addressent pas le problème causé par le fait que la recherche binaire nécessite de trop nombreux seeks. Les arbres binaires paginés addressent ce problème en placant plusieurs noeuds d’arbre binaire sur la même page de disque. Dans un système paginé, plutôt que de faire un seek pour seulement quelques octets de données, on lit une page entière du fichier, une fois le seek fait. Lorsque l’on fait une recherche d’arbre binaire, le nombre de seeks nécessaire est de log2(N+1). Il est de logk+1(N+1) dans la version paginée de l’arbre. (k= # de clés contenues par page)
10
Solution # 3: arbres binaires paginés
Il existe deux difficultés majeures avec les arbres binaires paginés: L’utilisation du disque divisé en pages peut être très inefficace: chaque page contient en fait un petit arbre ! problèmes au niveau de la construction d’arbres paginés: C’est facile si on connait les clés à l’avance ainsi que leur ordre d’apparition avant de commencer à construire l’arbre C’est beaucoup plus difficile si on reçoit les clés dans n’importe quel ordre et si on les insère dés qu’on les reçoit. Le problème est que si de mauvaises clés sont placées à la racine de l’arbre, l’arbre perdra progressivement sa balance.
11
Solution # 3: arbres binaires paginés
Problèmes specifiques à la construction de l’arbre binaire paginé: Comment peut-on garantir que les clés de la page racine sont de bonnes clés séparatrices qui divisent l’ensemble des autres clés plus ou moins également? Comment peut-on éviter de grouper les clés qui ne devraient pas partager une page? Comment peut-on garantir que chacune des pages contient, au moins, un nombre minimal de clés?
12
Indexes à niveaux multiples
Jusqu’à maintenant dans ce cours nous avons etudié les manières d’indexer un fichier basé sur la construction d’un arbre de recherche (binaire). Cependant, nous avons découvert de serieux problèmes avec cette approche. Nous retournons donc à la notion d’indexes simples que nous avons déjà étudié, mais nous étendons cette notion à celle d’indexes à niveaux multiples.
13
Indexes à niveaux multiples II
L’avantage des indexes à niveaux multiples est qu’ils nous permettent vraiement de réduire le nombre d’accès au disque. De plus, l’espace perdu à leur organisation est minime. Leur désavantages, néanmoins, sont que l’insertion d’une nouvelle clé ou l’effacement d’une clé ancienne sont très couteux.
14
Synthèse Arbres: ils semblent apporter une bonne solution générale au problème de construction d’indexes. Néanmoins, chacune des solutions que nous avons étudiées jusqu’à maintenant présente de serieux problèmes. Arbres paginés: leurs plus grand problème vient du fait qu’ils sont construits de haut en bas et qu’une “mauvaise” racine peut conduire à une perte de balance. Indexes à niveaux multiples: Ils prennent une approche completement différente qui résoud de nombreux problèmes mais qui crée des insertions et des effacements couteux.
15
Synthèse Une solution idéale serait de combiner les avantages des solutions précendentes sans souffrir de leurs désavantages. Les arbres B semblent être la réponse à ce problème. Ils combinent les idées d’arbres, d’arbres paginés et d’indexes à niveaux multiples et construisent l’arbre de bas en haut plutot que de haut en bas, évitant, ce faisant, le problème lié au choix d’une “mauvaise” racine.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.