Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parAdolphe Jouve Modifié depuis plus de 10 années
1
Gestion de Fichiers GF-12: Comment Gerer les Indexes qui ne tiennent pas en Memoire de Maniere Efficace?: I. Indexes Bases sur les Structures dArbres Binaires et Indexes a Niveaux Multiples (Base sur les Sections 9.1-4 de Folk, Zoellick & Riccardi, File Structures, An Object-Oriented Approach with C++;)
2
2 Resume du Cours dAujourdhui Description du Probleme: Comment gerer effectivement un indexe qui ne tient pas en memoire? Indexes a Structures Binaires: Tri efficace de lindexe Preservation de lOrdre sans Tri Arbres Binaires Balances (Arbres AVL) Recherche efficace dans lindexe Reduction du nombre dacces au disque pendant la recherche Arbre Binaire Pagines Indexes a Niveaux Multiples Synthese sur toutes ces structures dIndexes
3
3 Description Generale du Probleme Lorsquun indexe est trop grand pour tenir en memoire, il faut le mettre sur storage secondaire. Ceci cause des problemes defficacite. En effet, Un indexe est la pour la recherche, et cette recherche doit etre efficace. Mais une recherche binaire sur disque nest pas tres efficace. Un indexe doit aussi etre mis a jour: des enregistrements doivent etre ajoutes, effaces ou modifies. Ce type doperation (example, le tri) peut etre tres couteux sur storage secondaire Ce cours suit le developpement de solutions a ces problemes de maniere chronologique.
4
4 Solution # 1: Indexation par Arbres Binaires I La structure dun arbre binaire nous donne une nouvelle capabilite importante: Il nest plus necessaire de trier le fichier (ce qui est tres couteux sur storage secondaire). Afin de faire une recherche binaire, il suffit de traverser larbre jusqua ce que la cle recherchee soit trouvee. Afin dajouter une nouvelle cle, il suffit de traverser larbre et dajouter la nouvelle cle a la feuille appropriee.
5
5 Solution # 1: Indexation par Arbres Binaires II Il y a, neanmoins, deux problemes avec cette solution: Lorsque larbre nest pas balance, la performance de recherche ou dajout de cle ne sera pas tres bonne Solution # 2: Arbres Balances (AVL). Meme sils sont balances, la recherche binaire nest pas assez rapide lorsque lindexe reside en storage secondaire Solution # 2: Arbres Binaires Pagines.
6
6 Solution # 2: Arbres AVL I Les arbres AVL nous permettent de re-organiser les noeuds de larbre au fur et a mesure que nous recevons de nouvelles cles, ce qui nous permet de maintenir une structure darbre quasi-optimale. Un arbre AVL est un arbre a hauteur balancee, ce.a.d., un arbre qui place une limite sur le montant de difference permis entre la hauteur des deux sous- arbres dun noeud. Dans un arbre AVL (aussi appele un Arbre HB-1), le montant de difference maximal permis est de 1.
7
7 Solution # 2: Arbres AVL II Les deux caracteristiques importantes des arbres AVL sont les suibantes: En definissant un montant de difference maximum permis entre 2 sous-arbres, les arbres AVL garantissent un niveau minimum de performance de recherche. Le maintient darbres AVL lors de lajout de nouvelle cles se faire par rotations locales (il y a 4 differents types de rotations [en fait, 2 types different et leur rotations symmetriques]). La rotation la plus complexe ne demande que 5 re-affectation de pointeurs.
8
8 Solution # 2: Arbres AVL III La performance de recherche des arbres AVL est tres proche de celle des arbres completement balances. Dans un arbre completement balances, au pire, la performance de recherche est de log 2 (N+1). Dans un arbre AVL, elle est de 1.44 log 2 (N+2). Il se trouve quen fait, les arbres AVL ne sont pas directement applicables a la plupart des structures de fichiers car, comme tous les arbres strictement binaires, ils ont trop de niveauxils sont trop profonds. Les arbres AVL sont, cependant, important car ils suggerent quil est possible de definir des procedures capables de maintenir larbre a une hauteur balancee.
9
9 Solution # 2: Arbres Binaires Pagines I Les arbres AVL offrent une solution au probleme de garder un indexe en ordre de maniere peu couteuse. Cependant, ils naddressent pas le probleme cause par le fait que la recherche binaire necessite de trop nombreux seeks. Les arbres binaires pagines addressent ce probleme en placant plusieurs nodes binaires sur la meme page de disque. Dans un systeme pagine, plutot que de faire un seek pour seulement quelques octets de donnees, on lit une page entiere du fichier, une fois le seek fait. Lorsque lon fait une recherche darbre binaire, le nombre de seeks necessaire est de log 2 (N+1). Il est de log k+1 (N+1) dans la version paginee de larbre. (k= # de cles contenues par page)
10
10 Solution # 2: Arbres Binaires Pagines II Il existe deux difficultes majeures avec les arbres binaires pagines: LUtilisation du Disque divise en Pages peut etre tres Inefficace. Problemes au niveau de la construction darbres pagines: Cest facile si on connait les cles en avance ainsi que leur ordre dapparition avant de commencer a construire larbre Cest beaucoup plus difficile si on recoit les cles dans nimporte quel ordre et si on les insert des quon les recoit. Le problemes est que si de mauvaises cles sont placees a la racine de larbre, une imbalance apparaitra.
11
11 Solution # 2: Arbres Binaires Pagines III Problemes specifiques a la construction de larbre binaire pagine: Comment peut-on garantir que les cles de la page racine sont de bonnes cles separatrices qui divisent lensemble des autres cles plus ou moins egalement? Comment peut-on eviter de grouper les cles qui ne devraient pas partager une page? Comment peut-on garantir que chacune des pages contient, au moins, un nombre minimal de cles?
12
12 Indexes a Niveaux Multiples I Jusqua maintenant, dans ce cours, nous avons etudie les manieres dindexer un fichier base sur la construction dun arbre de recherche (binaire). Cependant, nous avons decouvert de serieux problemes avec cette approche. Nous retournons donc a la notion dindexes simples que nous avons deja etudie, mais nous etendons cette notion a celle dindexes a enregistrements multiples suivi de celle dindexes a niveaux multiples (voir example).
13
13 Indexes a Niveaux Multiples II Lavantage des Indexes a Niveaux Multiples est quils nous permettent vraiement de reduire le nombre dacces au disque. De plus, lespace perdu a leur organisation est minime. Leur desavantages, neanmoins, sont que linsertion dune nouvelle cle ou leffacement dune cle ancienne sont tres couteux.
14
14 Synthese sur les trois structures dIndexes rencontrees aujourdhui I Arbres: Ils semblent apporter une bonne solution generale au probleme de construction dindexes. Neanmoins, chacune des solutions que nous avons etudiees jusqua maintenant presente de serieux problemes. Arbres Pagines: Leurs plus grand probleme vient du fait quils sont construits de bas en haut et quune mauvaise racine peut conduire a une imbalance. Indexes a Niveaux Multiples: Ils prennent une approche completement differente qui resoud de nombreux problemes mais qui cree des insertions et des effacements couteux.
15
15 Synthese sur les trois structures dIndexes rencontrees aujourdhui II Une solution ideale serait de combiner les avantages des solutions precendentes sans souffrir de leurs desavantages. Les Arbres B semblent etre la reponse a ce probleme. Ils combinent les idees darbres, darbres pagines et dindexes a niveaux multiples et construisent larbre de bas en haut plutot que de haut en bas, evitant, par ce faire, le probleme lie au choix dune mauvaise racine.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.