La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 Indexes à Arbres et Indexes à Hachage Sections sélectionnées du Chapitre 10.

Présentations similaires


Présentation au sujet: "1 Indexes à Arbres et Indexes à Hachage Sections sélectionnées du Chapitre 10."— Transcription de la présentation:

1 1 Indexes à Arbres et Indexes à Hachage Sections sélectionnées du Chapitre 10

2 2 Introduction Rappel des 3 alternatives dentrées des données k* : un enregistrement de données avec une valeur de clé k une paire Les indexes à arbres supportent à la fois la recherche des plages de valeurs (range search) ainsi que les recherches degalités (equality search). ISAM : structure statique; B+ tree : dynamique, sajuste gracieusement aux insertions et effacements. Indexes à Hachage : meilleurs pour les recherches dégalité; ne peuvent supporter les recherches des valeurs des plages.

3 3 Intuition Derrière les Indexes à Arbres `` Trouvez tous les étudiants avec un gpa > 3.0 Si les données sont stockées dans un fichier trié, faire la recherche binaire pour trouver le premier de ces étudiants, et de là faire un scannage pour trouver les autres. Le coût de la recherche binaire peut être prohibitif ! Il est en effet proportionnel au # de pages puisées. Solution: Créer un fichier dindexes * Une recherche binaire est faisable sur de petits fichiers dindexes! Page 1 Page 2 Page N Page 3 Fichier de données k2 kN k1 Fichier dindexes

4 4 ISAM Le fichier dindexes peut être très large. On peut cependant appliquer lidée de fichier dindexes de manière répétée! * Les pages feuilles contiennent les entrées des données. P 0 K 1 P 1 K 2 P 2 K m P m Entrée dindex Pages internes feuilles Page de débordement Pages primaires Pages

5 5 ISAM (Suite) Création du fichier : les feuilles (pages de données) sont allouées séquentiellement et triées selon la clé de recherche; ensuite les pages de débordement sont crées. Entrées dindexes : ; orientent la recherche vers les entrées de données se trouvant dans les pages feuilles. Recherche : Commence à la racine; compare des clés pour aller vers la feuille appropriée. Coût: log F N ; F = # entrées/pg index, N = # feuilles Insertion : Trouver la feuille à la quelle appartient lentrée de donnée et ly mettre. Effacement : Trouver et enlever lentrée de la feuille; désaffecter une page de débordement vide. * Structure statique : les changements naffectent que les feuilles. Pages de données Pages des indexes Pages de débordement

6 6 Exemple dun Arbre ISAM Chaque nœud peut contenir 2 entrées; il ny a pas besoin de pointeurs liant les pages entre elles (Pourquoi ???) 10*15*20*27*33*37*40* 46* 51* 55* 63* 97* Racine

7 7 Après lInsertion de 23*, 48*, 41*, 42*... 10*15*20*27*33*37*40* 46* 51* 55* 63* 97* Racine 23* 48* 41* 42* Pages de débordement primaires Pages de lindex Feuilles

8 8... Ensuite Effacement de 42*, 51*, 97* * Notez que 51* apparaît au niveau de la page de lindex, mais pas dans la feuille! 10*15*20*27*33*37*40* 46*55* 63* Racine 23* 48* 41*

9 9 Arbre B+: LIndex le plus Usuel Insertion/effacement avec coût log F N; Garde la hauteur balancée. (F = fanout, N = # feuilles) Taux doccupation minimum de 50%(sauf pour la racine). Chaque nœud contient d <= m <= 2 d entrées. Le paramètre d est appelé l ordre de larbre. Supporte efficacement les recherches des plages de valeurs et les recherches dégalités. Entrées de lindex Entrées de données ("Sequence set") (orientent la recherche)

10 10 Exemple dArbre B+ La recherche commence à la racine et les comparaisons des clés lorientent vers une page (similaire à la méthode ISAM). Recherchez 5*, 15*, …, toutes les entrées de données >= 24*,... Racine * 3*5* 7*14*16* 19*20*22*24*27* 29*33*34* 38* 39* 13

11 11 Arbre B+ en Pratique Ordre typique: 100. Remplissage typique: 67%. Sortance (fanout) moyenne = 133 Capacités typiques: Hauteur 4: = 312,900,700 enreg.s Hauteur 3: = 2,352,637 enreg.s Les niveaux supérieurs de larbre peuvent souvent tenir en mémoire principale (buffer pool): Niveau 1 = 1 page = 8 Kbytes Niveau 2 = 133 pages = 1 Mbyte Niveau 3 = 17,689 pages = 133 MBytes

12 12 Insertion dune Entrée de Données Trouver la feuille appropriée L. Mettre lentrée de données dans L. Si L a assez despace, fin ! Sinon, on doit partager L (en L et un nouveau nœud L2) Redistribuer les entrées de manière égale, copier la clé du milieu vers le haut. Insérer lentrée dindex pointant vers L2 dans le parent de L. Ceci peut arriver de manière récursive Pour partager nœud dindex, redistribuer les entrées de manière égale, mais pousser la clé du milieu vers le haut. (Contrastez ceci avec le partage des feuilles !!) Les partages font croître larbre; le partage de la racine augmente sa hauteur. Croissance de larbre: devient plus large ou d un niveau plus élevé à la racine.

13 13 Insertion de 8* dans lExemple Veuillez noter la différence entre copier vers le haut et pousser vers le haut. (Pourquoi fait-on cette différence????) 2* 3*5* 7* 8* 5 Entrée à insérer dans le nœud parent. (Notez que 5 est copié vers le haut et continue dapparaître dans la feuille.) napparaît quune fois dans lindex Entrée à insérer dans le nœud parent. (17 est poussé vers le haut et

14 14 Exemple dArbre B+ Après lInsertion de 8* v La racine a été partagée; doù augmentation de la hauteur. v En fait, nous pouvons redistribuer ici au lieu de partager; cependant cela nest pas usuel dans la pratique. 2*3* Racine *16* 19*20*22*24*27* 29*33*34* 38* 39* 135 7*5*8*

15 15 Effacement dune Entrée de Données Commencer à la racine, trouver la feuille L à laquelle lentrée appartient. Enlever lentrée. Si L est au moins à moitié vide, fin! Sinon L a seulement d-1 entrées, Essayer de redistribuer, empruntant des cousins. Sinon, fusionner L et un cousin. Si une fusion a lieu, on doit effacer lentrée (dindexe) pointant (vers L ou le cousin) à partir du parent de L. La fusion peut se répercuter jusquà la racine, décroissant ainsi la hauteur de larbre.

16 16 Notre Arbre Après lInsertion de 8*, Suivie de lEffacement de 19* et 20*... Effacer 19* est facile. Effacer 20* est fait via une redistribution. Noter comment la clé du milieu est copiée vers le haut après la redistribution. 2*3* Racine *16* 33*34* 38* 39* 135 7*5*8*22*24* 27 27*29*

17 17... Et Ensuite Après lEffacement de 24* On doit fusionner. A droite, on fait un ` changement dentrée dindex. Ci bas, on ` tire une entrée dindex vers le bas *27* 29*33*34* 38* 39* 2* 3* 7* 14*16* 22* 27* 29* 33*34* 38* 39* 5*8* Racine

18 18 Exemple de Redistribution Interne A lopposé du cas précédant, ici on peut redistribuer une entrée de lenfant gauche de la racine vers lenfant droit. Racine *16* 17*18* 20*33*34* 38* 39* 22*27*29*21* 7*5*8* 3*2*

19 19 Après la Redistribution Intuitivement, les entrées sont redistribuées en ` poussant lentrée partageante vers le noeud parent. Il suffit de redistribuer lentrée dindex avec clé 20; on a aussi redistribué 17 pour illustration. 14*16* 33*34* 38* 39* 22*27*29* 17*18* 20*21* 7*5*8* 2*3* Root

20 20 Chargement en Vrac dun Arbre B+ Si lon a une large collection denreg.s et que lon veut créer un indexe à arbre B+ avec une clé donnée, le faire enregistrement par enregistrement est très inefficace. Solution: Bulk Loading (chargement en vrac). Initialisation : Trier toutes les entrées de données et les diviser en page; créer une page racine vide; et insérer un pointeur de la racine vers la 1ère page des données. 3* 4* 6*9*10*11*12*13* 20*22* 23*31* 35* 36*38*41*44* Pages dentrées de données triées; non encore mises dans larbre B+ Racine

21 21 Chargement en Vrac (Suite) Les entrées dindex pour les feuilles sont toujours créées dans la page dindex la plus à droite située juste au dessus du niveau des feuilles. Si cette dernière est pleine, elle est partagée. (Ce processus peut se répéter récursivement 3* 4* 6*9*10*11*12*13* 20*22* 23*31* 35* 36*38*41*44* Racine Pages de données à mettre sur larbre * 4* 6*9*10*11*12*13* 20*22* 23*31* 35* 36*38*41*44* 6 Racine

22 22 Résumé Index en arbre: ISAM, arbres B+ ISAM est une structure statique Seules les feuilles sont modifiées; pages de débordement nécessaires Défaut: chaînes de débordements Arbres B+ est une structure dynamique. Insertion et effacement laissent larbre balancé coût de log F N Pas de chaînes de débordement Chargement en vrac des arbres B+


Télécharger ppt "1 Indexes à Arbres et Indexes à Hachage Sections sélectionnées du Chapitre 10."

Présentations similaires


Annonces Google