Indexes à Arbres et Indexes à Hachage

Slides:



Advertisements
Présentations similaires
Module Systèmes d’exploitation
Advertisements

Structures de données avancées : Principales structures de fichiers
Structures de données avancées : MBT ( Multidimensional B-trees )
Structures de données avancées : MTH ( Multidimensional trie hashing )
Arbre-B+ Hypothèse initiale : clé simple et unique Nœud = bloc.
Witold Litwin Structures physiques Witold Litwin
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Cours 8 Arbres équilibrés
Structures de données linéaires
Traitement de textes WinWord 3 e année Sciences économiques, de gestion et commerciales Présenté par NEHAR Attia.
Les structures de données arborescentes
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Stockage des Données: Disques et Fichiers Chapitre 9.
Arbre Rouge Noir.
Introduction à linformatique en gestion 1 Plan de cours Le tableur Lécran Commandes sur les classeurs Les feuilles de calcul La saisie et la.
Gestion de Fichiers Arbres B.
Indexation 1. Concepts de base 2. Arbre B 3. Indexes secondaires.
Sections sélectionnées du Chapitre 11
Les fichiers indexés (Les B-arbres)
LA STRUCTURE D'ARBRE-B Institut National des Sciences Appliquées – Rouen Département Architecture des Systèmes d’Information.
Structures de données IFT-10541
Structures de données IFT-10541
8 Organisations unidimentionnelles : indexage et hachage
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Contrôle de lAccès Simultané Chapitre 17.
1 Tri Externe Chapitre 13: Pourquoi Trier? Problème classique en informatique (Voir Knuth, v.3)! Données requises en ordre trié P.ex.: Trouver.
1 Evaluation des Operations Relationnelles Chapitre 14, Section 14.4.
Gestion de Fichiers Indexes basés sur les structures d’arbres binaires et indexes à niveaux multiples.
Indexes à Arbres et Indexes à Hachage
1 Évaluation des Requêtes: Survol Chapitre Objectifs Catalogue Préliminaires: Techniques de base pour traiter des requêtes Chemin daccès Correspondance.
1 Tri Externe Chapitre 13: Pourquoi Trier? Problème classique en informatique (Voir Knuth, v.3)! Données requises en ordre trié P.ex.: Trouver.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
Gestion de Fichiers Hachage Extensible.
1 Evaluation des Operations Relationnelles : Algorithmes Additionnels Chapitre 14, ,
1 Survol du Stockage et de lIndexage Chapitre 8. 2 Objectifs Stockage persistant Organisation des fichiers Fichiers de données Fichiers dindexes Operations.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Évaluation des Requêtes: Survol Chapitre 12.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Survol du Stockage et de lIndexage Chapitre 8.
1 Survol du Stockage et de lIndexage Chapitres 9-12.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.
1 Licence dinformatique Algorithmique des graphes Problèmes dordonnancement. Utilisation de ce document strictement réservée aux étudiants de l IFSIC dans.
Les arbres et tas binomiaux
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Survol du Stockage et de lIndexage Chapitre 8.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Stockage des Données: Disques et Fichiers Chapitre 9.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Calcul Relationnel Chapitre 4, Section 4.3.
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.
Gestion de Fichiers GF-10: Traitement Co-Sequentiel: Appariment et Fusion de Plusieures Listes (Base sur les sections de Folk, Zoellick & Riccardi,
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
Index multi-niveaux dynamiques (les B-arbres et les B-arbres+)
1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le.
201 UMLV  Type « dictionnaire » sous-ensembles finis de E (ordonné) avec les opérations : Ens_vide :  Ens Ajouter : Ens x Elément  Ens Enlever.
1/65 微距摄影 美丽的微距摄影 Encore une belle leçon de Macrophotographies venant du Soleil Levant Louis.
chapitre -1- OPERATIONS [B] REGLES DE PRIORITE (f n°103) lundi 15 septembre 2014  rappels de 6°  du nouveau en 5°  applications  exercices  Page.
Réaliser par : Moh Fakhri Slama
Gestion de Fichiers GF-12: Comment Gerer les Indexes qui ne tiennent pas en Memoire de Maniere Efficace?: II. Arbres B (Base sur les Sections de.
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Arbres binaires et tables de hachage
GF-11: Tri Interne Efficace et Tri Externe
Structures de données avancées : MBT ( Multidimensional B-trees )
Structures de données avancées : LH (Hachage linéaire) D. E ZEGOUR Institut National d ’Informatique.
1 Survol du Stockage et de l’Indexage Chapitre 8.
Structures de données avancées : Variantes des B arbres
1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
Structures de données avancées : Principales structures de fichiers
Structures de données avancées : Arbres B+ avec expansion partielle D. E ZEGOUR Institut National d ’Informatique.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Matière Sélectionnée: Triage Externe, Join à Hachage, … Chapitres 13—15: 13.1—13.5, 14.4,
Structures de données avancées : MTH ( Multidimensional trie hashing ) D. E ZEGOUR Institut National d ’Informatique.
Les monceaux (Heap) Monceaux Propriétés des Monceaux
4/25/2017 4:30 PM Arbres (2,4) CSI2510 CSI2510.
Raison d'être de la structure de fichiers : Les premiers travaux : Début des années 1960 : En 1963 : Près de 10 ans plus tard... (à peu près 1973) : Durant.
Page: 1-Ali Walid Gestion de fichiers. B-Arbre +.
Indexes à Arbres et Indexes à Hachage
Transcription de la présentation:

Indexes à Arbres et Indexes à Hachage Sections sélectionnées des Chapitres 10 & 11 The slides for this text are organized into chapters. This lecture covers Chapter 9. Chapter 1: Introduction to Database Systems Chapter 2: The Entity-Relationship Model Chapter 3: The Relational Model Chapter 4 (Part A): Relational Algebra Chapter 4 (Part B): Relational Calculus Chapter 5: SQL: Queries, Programming, Triggers Chapter 6: Query-by-Example (QBE) Chapter 7: Storing Data: Disks and Files Chapter 8: File Organizations and Indexing Chapter 9: Tree-Structured Indexing Chapter 10: Hash-Based Indexing Chapter 11: External Sorting Chapter 12 (Part A): Evaluation of Relational Operators Chapter 12 (Part B): Evaluation of Relational Operators: Other Techniques Chapter 13: Introduction to Query Optimization Chapter 14: A Typical Relational Optimizer Chapter 15: Schema Refinement and Normal Forms Chapter 16 (Part A): Physical Database Design Chapter 16 (Part B): Database Tuning Chapter 17: Security Chapter 18: Transaction Management Overview Chapter 19: Concurrency Control Chapter 20: Crash Recovery Chapter 21: Parallel and Distributed Databases Chapter 22: Internet Databases Chapter 23: Decision Support Chapter 24: Data Mining Chapter 25: Object-Database Systems Chapter 26: Spatial Data Management Chapter 27: Deductive Databases Chapter 28: Additional Topics 1

Introduction Rappel des 3 alternatives d’entrées des données k*: un enregistrement de données avec une valeur de clé k une paire <k, rid> une paire <k, liste de rids> Le choix dépend de la technique d’index 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 d’egalités (‘’equality search’’). ISAM: srtucture statique; B+ tree: dynamique, s’ajuste gracieusement aux insertions et effacements. Indexes à Hachage : meilleurs pour les recherches d’égalité; ne peuvent supporter les recherches des valeurs des plages. 2

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 d’indexes Fichier d’indexes k1 k2 kN Page 1 Page 2 Page 3 Page N Fichier de données Une recherche binaire est faisable sur de petits fichiers d’indexes! 3

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

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 d’indexes: <valeur de la clé, page id>; 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 l’entrée de donnée et l’y mettre. Effacement: Trouver et enlever l’entrée de la feuille; désaffecter une page de débordement vide. Pages de données Pages des indexes Pages de débordement Structure statique: les changements n’affectent que les feuilles. 5

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

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

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

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

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

Arbre B+ en Pratique Ordre typique: 100. Remplissage typique: 67%. Sortance (‘’fanout’’) moyenne = 133 Capacités typiques: Hauteur 4: 1334 = 312,900,700 enreg.’s Hauteur 3: 1333 = 2,352,637 enreg.’s Les niveaux supérieurs de l’arbre 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

Insertion d’une Entrée de Données Trouver la feuille appropriée L. Mettre l’entrée de données dans L. Si L a assez d’espace, 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 l’entrée d’index pointant vers L2 dans le parent de L. Ceci peut arriver de manière récursive Pour partager nœud d’index, 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 l’arbre; le partage de la racine augmente sa hauteur. Croissance de l’arbre: devient plus large ou d’ un niveau plus élevé à la racine. 6

Insertion de 8* dans l’Exemple Veuillez noter la différence entre copier vers le haut et pousser vers le haut. (Pourquoi fait-on cette différence????) Entrée à insérer dans le nœud parent. 5 (Notez que 5 est copié vers le haut et continue d’apparaître dans la feuille.) 2* 3* 5* 7* 8* 5 24 30 17 13 Entrée à insérer dans le nœud parent. (17 est poussé vers le haut et n’apparaît qu’une fois dans l’index. 12

Exemple d’Arbre B+ Après l’Insertion de 8* Racine 17 5 13 24 30 2* 3* 5* 7* 8* 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39* La racine a été partagée; d’où augmentation de la hauteur. En fait, nous pouvons redistribuer ici au lieu de partager; cependant cela n’est pas usuel dans la pratique. 13

Effacement d’une Entrée de Donnée Commencer à la racine, trouver la feuille L à laquelle l’entrée appartient. Enlever l’entré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 l’entrée (d’indexe) 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 l’arbre. 14

Notre Arbre Après l’Insertion de 8. , Suivie de l’Effacement de 19 Notre Arbre Après l’Insertion de 8*, Suivie de l’Effacement de 19* et 20* ... Racine 17 5 13 27 30 2* 3* 5* 7* 8* 14* 16* 22* 24* 27* 29* 33* 34* 38* 39* 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. 15

... Et Ensuite Après l’Effacement de 24* On doit fusionner. A droite, on fait un `échange’ d’entrée d’index. Ci bas, on `tire une entrée vers le bas’. 30 22* 27* 29* 33* 34* 38* 39* Racine 5 13 17 30 2* 3* 5* 7* 8* 14* 16* 22* 27* 29* 33* 34* 38* 39* 16

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

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

Chargement en Vrac d’un Arbre B+ Si l’on a une large collection d’enreg.’s et que l’on 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. Racine Pages d’entrées de données triées; non encore mises dans l’arbre B+ 3* 4* 6* 9* 10* 11* 12* 13* 20* 22* 23* 31* 35* 36* 38* 41* 44* 20

Chargement en Vrac (Suite) Les entrées d’index pour les feuilles sont toujours créées dans la page d’index 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 Racine 10 20 Pages de données 6 12 23 35 à mettre sur l’arbre 3* 4* 6* 9* 10* 11* 12* 13* 20* 22* 23* 31* 35* 36* 38* 41* 44* Racine 20 10 35 6 12 23 38 3* 4* 6* 9* 10* 11* 12* 13* 20* 22* 23* 31* 35* 36* 38* 41* 44* 21

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 l’entrée des données dont la clé est k. (M = # de buckets) h(key) mod N 2 key h N-1 Pages (bucket) primaires Pages de débordement 3

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 l’enregistrement 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. 4

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, d’où doubler le répertoire est moins coûteux. Plus besoin de pages de débordement! 5

Exemple Le répertoire est de taille 4. PROFONDEUR LOCALE 2 Bucket A 4* 12* 32* 16* PROFONDEUR GLOBALE 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. 2 2 Bucket B 00 1* 5* 21* 13* 01 10 2 Bucket C 11 10* 2 REPERTOIRE Bucket D 15* 7* 19* PAGES DE DONNEES Insertion: Si le bucket est plein, le partager (affecter une n’lle page, et redistribuer). Si nécessaire, doubler le répertoire. (En fait, partager un bucket n’entraîne pas nécessairement le doublement du répertoire; un doublement n’est nécessaire que si la profondeur globale ne correspond plus a la profondeur locale.) 6

Insertion de h(r)=20 (Cause un Doublement) 3 PROFONDEUR LOCALE PROFONDEUR LOCALE Bucket A 32* 16* PROFONDEUR GLOBALE 32* 16* Bucket A PROFONDEUR GLOBALE 2 2 3 2 Bucket B 00 1* 5* 21* 13* 000 1* 5* 21* 13* Bucket B 01 001 10 2 2 010 Bucket C 11 10* 011 10* Bucket C 100 2 REPERTOIRE 2 101 Bucket D 15* 7* 19* 15* 7* 19* 110 Bucket D 111 2 3 Bucket A2 4* 12* 20* DIRECTORY (`image' 4* 12* 20* Bucket A2 de Bucket A) (`image' de Bucket A) 7

Insertion de h(r)=20 (Suite) 20 = binaire 10100. 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 d’un 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.. L’insertion entraîne p.l. > p.g.; le répertoire est doublé par copie (‘’copying over’’) et réarrangement des pointeurs. 8

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 l’arbre 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 23