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

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Indexes à Arbres et Indexes à Hachage Sections sélectionnées des Chapitres 10 & 11.

Présentations similaires


Présentation au sujet: "Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Indexes à Arbres et Indexes à Hachage Sections sélectionnées des Chapitres 10 & 11."— Transcription de la présentation:

1 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Indexes à Arbres et Indexes à Hachage Sections sélectionnées des Chapitres 10 & 11

2 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke2 Introduction Rappel des 3 alternatives dentrées des données k* : un enregistrement de données avec une valeur de clé k une paire Le choix dépend de la technique dindex utiliée pour localiser les entres des donnees k*. Les indexes à arbres supportent à la fois la recherche des plages de valeurs (range search) ainsi que les recherches degalités (equality search). ISAM : srtucture 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 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke3 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 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke4 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 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke5 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 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke6 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 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke7 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 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke8... 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 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke9 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 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke10 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 entrées de données >= 24*... Racine * 3*5* 7*14*16* 19*20*22*24*27* 29*33*34* 38* 39* 13

11 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke11 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 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke12 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 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke13 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 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke14 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 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke15 Effacement dune Entrée de Donnée 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 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke16 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 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke17... Et Ensuite Après lEffacement de 24* On doit fusionner. A droite, on fait un ` échange dentrée dindex. Ci bas, on ` tire une entrée 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 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke18 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 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke19 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 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke20 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 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke21 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 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke22 Hachage Statique Pages primaires en nombre fixe et affectées séquentiellement; jamais désaffectées; pages de débordement si nécessaire. h ( k ) mod M = bucket où mettre lentrée des données dont la clé est k. (M = # de buckets) h(key) mod N h key Pages (bucket) primaires Pages de débordement 2 0 N-1

23 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke23 Hachage Statique (Suite) Les buckets contiennent les entrées des données. La fonction de hachage utilise le champ de la clé de recherche de lenregistrement r. Les valeurs des clés doivent être distribuées sur une plage allant de 0 à M-1. Les fonctions de hachage ont été abondamment étudiées. Défaut: possible développement de longues chaînes de débordement qui peuvent entraver la performance. Hachage extensible et haching linéaire : Techniques dynamiques pour résoudre ce problème.

24 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke24 Hachage Extensible Situation: un bucket (page primaire) se remplit. Pourrait-on réorganiser le fichier en doublant le # de buckets? Lire et écrire toutes les pages est très coûteux! Solution : Utiliser un répertoire de pointeurs vers les buckets ; doubler le # de buckets en doublant la taille du répertoire, tout en ne partageant que les buckets en débordement! Le répertoire est bien plus petit que le fichier lui-même, doù doubler le répertoire est moins coûteux. Plus besoin de pages de débordement !

25 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke25 Exemple Le répertoire est de taille 4. Pour trouver un bucket pour r, prendre un # de bits à la fin de h ( r ) équivalent à la ` profondeur globale ; p.ex. Si h ( r ) = 5 (= binaire 101), r est dans le bucket vers le quel pointe 01. Insertion : Si le bucket est plein, le partager ( affecter une nlle page, et redistribuer). Si nécessaire, doubler le répertoire. (En fait, partager un bucket nentraîne pas nécessairement le doublement du répertoire; un doublement nest nécessaire que si la profondeur globale ne correspond plus a la profondeur locale.) 13* PROFONDEUR LOCALE PROFONDEUR GLOBALE REPERTOIRE Bucket A Bucket B Bucket C Bucket D PAGES DE DONNEES 10* 1*21* 4*12*32* 16* 15*7*19* 5*

26 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke26 Insertion de h (r)=20 (Cause un Doublement) 20* PROFONDEUR LOCALE 2 2 REPERTOIRE PROFONDEUR GLOBALE Bucket A Bucket B Bucket C Bucket D Bucket A2 (`image' de Bucket A) 1* 5*21*13* 32* 16* 10* 15*7*19* 4*12* 19* DIRECTORY Bucket A Bucket B Bucket C Bucket D Bucket A2 (`image' de Bucket A) 32* 1*5*21*13* 16* 10* 15* 7* 4* 20* 12* PROFONDEUR LOCALE PROFONDEUR GLOBALE

27 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke27 Insertion de h (r)=20 (Suite) 20 = binaire Derniers 2 bits (00) indiquent que r appartient au bucket A qui est déjà plein! On divise A en A et A2. mais on a besoin des 3 derniers bits pour décider. Profondeur Globale du répertoire : Max # de bits nécessaires pour décider du bucket auquel une entrée appartient. Profondeur Locale dun bucket : # de bits utilisés pour déterminer si une entrée appartient à ce bucket. Quand double-t-on le répertoire? Avant insertion p.l. du bucket = p.g.. Linsertion entraîne p.l. > p.g. ; le répertoire est doublé par copie ( copying over) et réarrangement des pointeurs.

28 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke28 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 Bulk loading des arbres B+ Index à hachage: Hachage statique vs. extensible


Télécharger ppt "Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Indexes à Arbres et Indexes à Hachage Sections sélectionnées des Chapitres 10 & 11."

Présentations similaires


Annonces Google