Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de...

58
Chapitre 8 Indexage et hachage

Transcript of Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de...

Page 1: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

Chapitre 8

Indexage et hachage

Page 2: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 2

Introduction

Certaines requêtes n'intéressent qu'un petit sous-ensemble des enregistrements d'un fichier.

ØEx: Rechercher tous les comptes de l'agence de Perryridge

Il n'est pas question de lire la totalité du fichier Compte de haut en bas (accès séquentiel) pour retrouver l'information requise.

Le système devrait être capable d’atteindre directement l’information requise.

Alors, il faudra ajouter au SGBD des structures qui utilisent soit des index ou des fonctions de hachage.

Page 3: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 3

Contenu

Dans ce chapitre, nous allons nous intéresser aux points suivants :

ØFichiers séquentiels indexés

ØFichiers indexés par arbres B+ et B

ØFonctions de hachage statique

ØFonctions de hachage dynamique

Page 4: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 4

Notions de base

Dans les BD commerciales, il faut prévoir des techniques d'indexage qui permettent l'accès direct et rapide aux enregistrements.

Ces techniques ont pour objectifs :

Ød’accélérer l'accès aux données;

Øde réduire le nombre d'opérations d'entrées/sorties.

Pour ce faire, on peut utiliser :

Øun index;

Øune fonction de hachage.

Page 5: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 5

Notions de base

Les caractéristiques de ces deux méthodes sont :

Ø temps d'accès : temps pour accéder à une donnée particulière;

temps de recherche + temps de latence (chapitre 7)

Ødélais d'insertion: délais pour la mise en place d’une nouvelle donnée et la mise à jour de l'index;

Ødélais d'effacement: délais pour enlever une donnée avec la mise à jour de l'index;

Øoccupation de la mémoire: espace occupé par les structures d'indexage.

Page 6: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 6

Index

Fichier contenant des pointeurs reliés à l'information;w équivalents aux index alphabétiques dans les

bibliothèques;Ex: livres classés par: auteurs, titres, sujet, etc.

Il existe trois types d'index :

1. fichiers séquentiels indexés (par fichiers d'index);

2. fichiers indexés par arbres B

3. fichiers indexés par arbres B+

Page 7: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 7

Fichiers séquentiels indexés

Un fichier séquentiel se compose:1. d'un ensemble d'enregistrements adjacents

ordonnancés suivant une clé de tri (ex: ordre alphabétique des auteurs);

2. d'un ensemble de pointeurs permettant de gérer les effacements et les insertions;

3. d'un ensemble de blocs de débordement si nécessaire.

C’est la structure de fichier la plus ancienne. Elle est utilisée pour:Ø le traitement séquentiel des enregistrements (de haut en

bas),Ø l'accès aléatoire aux enregistrements.

Page 8: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 8

Fichiers séquentiels indexés

Exemple de fichier séquentiel (ordre alphabétique) :

Brighton 217 750Green

Downtown 101 500Johnson

Downtown 110 600Peterson

Mianus 215 700Smith

Perryridge 102 400Hayes

Perryridge 218 700Lyle

Perryridge 201 900Williams

Redwood 222 700Lindsay

RoundHill 305 350Turner

Enregistrement

Enregistrement

Clédetri

pointeur

pointeur

Bloc de débordement

il est difficile de maintenir l'aspect séquentiel au fil des insertions et des effacements.

il est coûteux de déplacer de nombreux enregistrements lors de chacune de ces opérations.

Page 9: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 9

Fichiers séquentiels indexés

Pour les effacements et les insertions, nous utiliserons plutôt les pointeurs chaînés.

Lors d’une insertion, on doit :1. localiser l'enregistrement qui, suivant la logique du tri,

doit précéder l'enregistrement à insérer,2.

Ø s'il existe un emplacement libre, on insère le nouvel enregistrement,

Ø sinon on le place dans un bloc de débordement et on fixe les pointeurs de façon à conserver la continuité de la séquence (voir la figure suivante).

Page 10: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 10

Fichiers séquentiels indexés

Ex: Insertion de l’enregistrement North Town.

Brighton 217 750Green

Downtown 101 500Johnson

Downtown 110 600Peterson

Mianus 215 700Smith

Perryridge 102 400Hayes

Perryridge 218 700Lyle

Perryridge 201 900Williams

Redwood 222 700Lindsay

RoundHill 305 350Turner

North Town 888 800Adams

Etape 1

Etape 2 Bloc de débordement

1. Localiser l’enregistrement qui le précède.

2. Trouver l’emplacement libre et fixer les pointeurs.

Ensuite, ajoutez l’enregistrement: Perryridge 101 Tremblay 400

Page 11: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 11

Fichiers séquentiels indexés

PROBLÈME:

Pour optimiser le nombre d'accès bloc, nous avons vu que les enregistrements devraient être stockés physiquement les uns à la suite des autres selon leur clé de tri…

Mais si les insertions sont fréquentes, alors…

• La correspondance entre ordre de tri initial et l'ordre physique peut être totalement perdue et les enregistrements séquentiels perdent de leur intérêt.

Il faudrait réorganiser le fichier afin de le remettre en ordre physique, mais cela représente une opération très coûteuse.

Page 12: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 12

Fichiers séquentiels indexés

SOLUTION:

Donc, un fichier séquentiel n'est pas suffisant pour garantir un temps d'accès adéquat à son information.

Nous devons utiliser un mode composé :

fichiers séquentiels + fichiers d'index

où le fichier d'index contient la clé de tri + des pointeurs au fichier séquentiel indexé

Page 13: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 13

Fichiers d’index

Il existe deux types de fichiers d'index :1. Index dense2. Index non dense

Index dense :Comporte un enregistrement pour chaque valeur de la cléde tri du fichier indexé.

Avec le temps, ce type d'index peut occuper beaucoup d'espace mémoire.

Mais..ils ont un temps de recherche très court.

Page 14: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 14

Exemple d’index dense

Brighton 217 750Green

Downtown 101 500Johnson

Downtown 110 600Peterson

Mianus 215 700Smith

Perryridge 102 400Hayes

Perryridge 218 700Lyle

Perryridge 201 900Williams

Redwood 222 700Lindsay

RoundHill 305 350Turner

Brighton

Downtown

Mianus

Perryridge

Redwood

RoundHill

INDEX FICHIER BDD

Comporte un enregistrement pour

chaque valeur de la cléde tri

Page 15: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 15

Index non dense

Index non denseComporte des enregistrements pour certaines valeursde la clé de tri du fichier indexé.

• La recherche se fait sur des plages de valeurs (ex: recherche séquentielle à partir de Brighton jusqu'à Mianus).

• Analogue à un pointeur de page (bloc).

Les index non dense ont des avantages :• ils occupent moins d'espace;

• ils imposent moins de servitudes lors d'insertions et d'effacements.

Note: Le concepteur de la BD doit donc se fixer un compromis entre temps d'accès et l’espace mémoire.

Page 16: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 16

Exemple d’index non dense

Brighton 217 750Green

Downtown 101 500Johnson

Downtown 110 600Peterson

Mianus 215 700Smith

Perryridge 102 400Hayes

Perryridge 218 700Lyle

Perryridge 201 900Williams

Redwood 222 700Lindsay

RoundHill 305 350Turner

Brighton

Mianus

Redwood

INDEX FICHIER BDD

Comporte des enregistrements pour certaines

valeurs de la clé de tri

Page 17: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 17

Exemple d’index non dense

Exemple d’index non dense à des pages blocs

Page 18: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 18

Index non dense

Pour les BD de grande dimension, même un index non densepeut devenir rapidement trop important. L'index peut occuper plusieurs blocs, ce qui nécessite plusieurs E/S.

ØSi le système utilise une recherche binaire (recherche dichotomique), pour un index occupant b blocs, on peut effectuer jusqu'à :

1 + log2 (b) lectures

Page 19: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 19

Exemple

Pour 100 000 enregistrements avec 10 enregistrements de données par blocs :

100000 / 10 = 10 000 blocs

Si l'index non dense pointe sur 1 enregistrement de données par bloc…

Donc, on a besoin de 10 000 enregistrements pour l'index!

Supposons que l’on peut mettre 100 enregistrements index par bloc (les enregistrements de l'index sont beaucoup plus courts) :

L'index nécessite alors 100 blocs (10 000/100=100)

Ainsi, une recherche peut nécessiter jusqu'à 1 + log2 (100), c’est-à-dire 7 lectures par recherche binaire.

… autre exemple au tableau

Page 20: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 20

Index non dense

Si on a utilisé des blocs de débordement pour réaliser l'index, une recherche binaire ne peut être pratiquée. Il faut, alors, effectuer une recherche séquentielle, qui exige la lecture de la totalité des blocs de l'index.Pour traiter ce problème, nous pouvons utiliser un index de l'index. Cet solution consiste à traiter l'index comme un fichier séquentiel indexé.

Index non dense à 2 niveaux

Note: En pratique de 2 à 3 niveaux d'indexage sont suffisants.

index externe index interne Fichier

blocindex 0

blocindex 1

blocdonnées 0

blocdonnées 1

blocdonnées 2

Page 21: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 21

Index à plusieurs niveaux

Procédure pour localiser un enregistrement :

1. on effectue une recherche binaire sur l'index externe pour déterminer l'enregistrement dont la clé de tri a une valeur < ou = à celle de l'enregistrement désiré; (Note:Normalement, cet index est de dimension réduite et est situé mémoire vive.)

2. le pointeur correspondant à l’enregistrement trouvé renvoie à un bloc de l'index interne (donc sur le disque);

3. on parcourt ce bloc jusqu'à tomber sur l'enregistrement dont la clé de tri a une valeur < ou = à celle de l'enregistrement désiré;

4. le pointeur stocké par cet enregistrement renvoie au bloc du fichier de données qui contient l'enregistrement recherché.

Page 22: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 22

Exemple de recherche avec un index à 2 niveaux

Retrouvez l’enregistrement dont la clé est 71?

Avec un indexage à 2 niveaux, on a donc réussi à ne lire qu'un seul bloc index au lieu de 3 pour une économie appréciable de temps d'accès.

Valeur de clé

Algorithme appliqué à un index à deux niveaux

Page 23: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 23

Index primaires et secondaires

Les fichiers indexés de modèle standard sont gérés par un seul index. Si l’on veut améliorer les performances et utiliser plusieurs index, on utilise un index primaire et des index secondaires.

Index primaire

Ø Il y en a qu’un seul par fichier;

ØC’est l’index selon lequel un fichier séquentiel indexé est créé;

Ø Il définit l'ordre séquentiel du fichier;ØL’ordre de tri est donné par une clé primaire.

Page 24: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 24

Index secondaire

Ce sont tous les autres index utilisés par un fichier indexé.

Ø Ils améliorent les performances de la BD lors de recherches qui ne portent pas sur des clés primaires;

ØMais, ils imposent des problèmes supplémentaires lors de la modification de la BD.

Les index secondaires sont des index denses puisque les données du fichier ne sont pas organisées en ordre séquentiel selon la clé sur laquelle ils sont basés. Øune entrée est créée dans l’index secondaire pour

chaque enregistrement du fichier des données.

Page 25: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 25

Exemple d’index secondaire sur l’attribut client

Cet exemple montre un index secondaire qui fait appel à un niveau d'adressage indirect auxiliaire (2 niveaux).

Ø Les pointeurs pointent vers un paquet d'autres pointeurs qui, eux, renvoient au fichier. Ce paquet se compose de plusieurs blocs chaînés.

Brighton 217 750Green

Downtown 101 500Johnson

Downtown 110 600Peterson

Mianus 215 700Smith

Perryridge 102 400Hayes

Perryridge 218 700Lyle

Perryridge 201 900Williams

Redwood 222 700Lindsay

RoundHill 305 350Turner

Green

Lindsay

Smith

groupement 1 FICHIER BDD

groupement 2

groupement 3

INDEX

Page 26: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 26

Index secondaire

En résumé:ØOn peut utiliser un fichier séquentiel indexé par

un index primaire non dense basé sur une cléprimaire ØOn peut utiliser un attribut important pour

concevoir un index secondaire dense. • cet attribut est identifié par le concepteur de la BD en

fonction de la fréquence des requêtes.

Page 27: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 27

Fichiers indexés par arbres B+

Les fichiers séquentiels indexés perdent leurs performances lorsque leur taille grandit.

Pour résoudre ce problème, on peut réorganiser ces fichiers, mais il est difficile de pratiquer souvent de telles réorganisations.

Il existe une structure de fichier indexée par arbre B+ qui conserve son efficacité en dépit de tout effacement ou insertion de données. Ø Index B+ (où B signifie "balanced" (équilibré))

• C’est une structure de fichier d'index très populaire;• Elle est basée sur un index multi-niveaux structuré en

arbre;

!

Page 28: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 28

Fichiers indexés par arbres B+

Un index B+ se structure comme suit :

Index séquentiel:

ØC’est le fichier séquentiel indexé contenant la BD;

ØNormalement, c’est un index dense, mais il peut être non dense si les données sont groupées dans un bloc;

ØLes entrées de l'index sont groupées en "pages" chaînées;

50 82

12 32

6 8 12 15 18 32 35 40 50

58 70

51 52 58 60 62 70 71 78 82

89 94

83 85 89 91 93 94 96 97 99Ensemble d’index séquentiel

Ensemble d’index enarborescence

Clé de tri

Page 29: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 29

Fichiers indexés par arbres B+

Index en arborescence:

Ø Il permet un accès rapide à l'ensemble d’index séquentiel;

Ø Il est structuré en arbre équilibré: • e.i, les chemins qui conduisent de la racine à une feuille

quelconque sont tous de la même longueur; (exemple tableau)

ØUne feuille de l'arbre est appelée noeud terminal d'ordre n. Pour un arbre d'ordre n, il comprend :

• n-1 valeurs de clés de tri: K1, K2, ... Kn-1

• n pointeurs P1, P2, ... Pn .Nœud terminal d’une arborescence B+

P1

K1 P2

... Pn-1

Kn-1

Pn

↓ Clé de tri

pointeur

Page 30: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 30

Fichiers indexés par arbres B+

Ex: Nous voulons les données qui correspondent à la clé89 sur la figure suivante;

1. Un pointeur de la racine de l'arbre B+ (82->ptr) pointe vers un autre pointeur (89->ptr).

2. Le pointeur (89->ptr) pointe sur un paquet de pointeurs (83,85 et 89) de l'ensemble séquentiel.

3. De façon séquentiel, il recherche la clé de tri 89 qui renvoie à un enregistrement de données.

50 82

12 32

6 8 12 15 18 32 35 40 50

58 70

51 52 58 60 62 70 71 78 82

89 94

83 85 89 91 93 94 96 97 99

Nœud terminal d’une arborescence B +

P1

K1 P2

... Pn-1

Kn-1

Pn

Ordre 3: 2 clés de tri et3 pointeurs par nœud.

Page 31: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 31

Fichiers indexés par arbres B+

Voici les contraintes de construction pour la réalisation d’un arbre B+ en imposant un ordre n:

1. Chaque noeud peut être caractérisé par: maximum n-1 valeurs de clé,

2. Chaque noeud doit avoir: minimum de n/2 pointeurs, (sauf pour la racine)

3. Chaque noeud terminal a: minimum de (n-1)/2 valeursde clé.

Note : Il faut arrondir à l'entier supérieur.

Page 32: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 32

Algorithme d’insertion dans un arbre B+

1. Trouvez la feuille où l’on doit insérer la nouvelle valeur en suivant la règle de <= àgauche ( ou >= à droite ).

2. Insérer dans la feuille en ordre de tri. Si la feuille est pleine, alors il y a débordement. Il faut alors:

Ø Créer un nouveau nœud et insérer les j = [( p + 1 )/ 2 ] premières entrées dans le nœud original et les autres entrées dans le nouveau nœud.

Ø La jième valeur de clé (+1 pour la règle du >= à droite ) est répliquée dans le parent et un nouveau pointeur au nouveau nœud est aussi ajouté au parent. S’il y a débordement dans le parent, Il faut:

• Créer un nouveau nœud. Les entrées dans le nœud interne jusqu’à Pj reste en place. Pj est le jième pointeur après insertion de la nouvelle valeur, où j = [ ( p + 1 )/2 ].

• La jième valeur (+1 pour la règle du >= à droite ) de clé est déplacée, et non pas répliquée dans le parent.

• Le nouveau nœud va contenir les entrées à partir de Pj+1 jusqu’à la fin des entrées.

Note : Les divisions peuvent se propager jusqu’à créer une nouvelle racine et par conséquent un nouveau niveau pour l’arbre B+.

Page 33: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 33

Algorithme d’effacement dans un arbre B+

1. Lorsqu’une entrée est effacée, elle est d’abord retirer de son nœud terminal (sa feuille).

2. Si cette valeur est aussi dans un nœud interne, elle doit aussi y être retirée. La valeur à sa gauche (à sa droite pour la règle du >= à droite) dans le nœud terminal la remplace dans le nœud interne.

3. L’effacement peut causer une insuffisance de valeur dans le nœud terminal. Dans ce cas, il faut faire une redistribution des valeurs avec les feuilles voisines afin que toutes les feuilles aient le nombre minimum de valeur requis.

4. Si la redistribution est impossible, il faut fusionner des feuilles.5. Lorsque des feuilles sont fusionnées, les insuffisances de valeur

peuvent se propager dans les nœuds internes puisque moins de pointeur sont requis. Il faut alors comprimer les nœuds internes en suivant les règles de base.

Notez que la propagation peut entraîner l’élimination d’un niveau.

Page 34: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 34

Exemple d’un fichiers indexés par arbres B+

Exemple : Soit la relation Dépôt suivante :

L’exemple qui suit illustre un index à arbre B+ qui fait référence aux 6 premiers enregistrements de la relation Dépôt.

Brighton 217 750Green

Downtown 101 500Johnson

Mianus 215 700Smith

Perryridge 102 400Hayes

Redwood 222 700Lindsay

RoundHill 305 350Turner

ClearView 117 295Throggs

Page 35: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 35

Arborescence B+ pour le fichier Dépôt (ordre n = 3 )

Caractéristiques:

• (n-1) valeurs = 2;

• un minimum de n/2 pointeurs = 2;

• un minimum de (n-1)/2 valeurs pour les nœuds terminaux = 1.

Brighton Mianus Perryridge

Redwood

Downtown RoundHill

Mianus

Redwood

Perryridge

Page 36: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 36

Arborescence B+ pour le fichier Dépôt (ordre n = 5 )

Caractéristiques:

• (n-1) valeurs = 4;

• un minimum de n/2 pointeurs = 3;

• un minimum de (n-1)/2 valeurs pour les nœuds terminaux = 2.

Brighton Mianus PerryridgeDowntown RoundHillRedwood

Perryridge

Page 37: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 37

Fichiers indexés par arbres B+

Ex: Insertion des clés 8,5,1,7,3,12,9,6 dans un arbre B+ d’ordre 3

Page 173

( Démonstration au tableau)

Page 38: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 38

Fichiers indexés par arbres B+

Ex: Destruction des clés 5,12 et 9 dans un arbre B+ d’ordre 3

Page 39: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 39

Fichiers indexés par arbres B+

Exercices:Soit l'ensemble des valeurs de clé(2,3,5,7,11,17,19,23,29,31):

1.construire un arbre B+ d'ordre 4;

2.construire un arbre B+ d'ordre 6.

Page 40: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 40

Fichiers indexés par arbres B

Les index à arbre B sont semblable aux index à arbre B+, sauf que la structure B élimine le stockage redondant des valeurs de clé de tri. Dans la structure de l'arborescence B+ pour le fichier Dépôt, les clés de recherche Mianus et Redwood apparaissent deux fois.

La structure B, correspondant à ce cas, n'autorise qu'une seule apparition de chaque valeur de clé de tri.

Page 41: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 41

Fichiers indexés par arbres B

Arbre B sans redondance du fichier Dépôt

L’arbre B sans redondance est équivalent à l’arbre B+ que nous avons vue précédemment (augmenté de l’agence Clearview); Remarquez que la racine contient 5 pointeurs et les feuilles que 3.

MianusClearview

Downtown

PerryridgeBrighton RoundHill

Redwood

Paquet deBrighton

Paquet deClearview

Paquet deDowntown

Paquet deRedwood

Paquet deMianus

Paquet dePerryridge

Paquet deRoundHill

Page 42: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 42

Fichiers indexés par arbres B

Chaque noeud de l'arbre conserve un pointeur vers l'ensemble séquentiel.

a) Représente la structure d’un nœud dans un arbre B;

b) Un arbre B d’ordre 3 avec des valeurs insérées selon la séquence : 8, 5, 1, 7, 3, 12, 9 et 6

Page 43: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 43

Comparaison des arborescences de type B et B+

Ø Dans une arborescence B+, il faut toujours suivre un cheminement qui va de la racine à un noeud terminal.

Ø Dans une arborescence B, on peut trouver la valeur désirée avantd'atteindre un noeud terminal.

• Une telle recherche est par conséquent plus rapide.

Les avantages des arbres B sur les arbres B+ sont malheureusement contrebalancés par de nombreux inconvénients.

Ø Les noeuds non terminaux et les noeuds terminaux ne sont pas de même dimension. (moins de pointeurs)

Ø L'effacement au sein d'un arbre B est plus compliqué que sur un arbre B+.

Ainsi, la simplicité structurelle des arborescences B+ a la préférence pour la plupart des concepteurs de SGBD.

Page 44: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 44

Fonction de hachage statique

Le défaut de tous les index est qu'il faut les parcourir pour localiser les données auxquelles ils renvoient. Les techniques de hachage nous permettent d'éviter ce handicap.

Ø Elle utilise une technique basée sur le calcul de l'adresse d'une information dans la BD à l'aide d'une fonction dont la variable est la valeur de la clé de tri :

Bi = h (Ki)

Où K : ensemble de toutes les valeurs de clés de tri,B : ensemble de toutes les adresses des données de la BD,h : fonction de hachage (application de K vers B).

Note : Le concepteur de la BD doit fixer à l'origine la dimension de B.

Page 45: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 45

Fonctionnement du hachage statique

Chaque enregistrement est placé en mémoire de la BD àune adresse (ou page, ou bloc) telle qu'évaluée par la fonction de hachage: c'est l'adresse de hachage;

Ø Pour inscrire l'enregistrement une première fois, le SGBD calcule l'adresse de hachage et dicte celle-ci au système d'exploitation des fichiers;

Ø Pour retrouver cet enregistrement, le SGBD…1. calcule de la même façon l'adresse de hachage2. demande au système d'exploitation d'effectuer la

lecture de l'enregistrement (de la page ou du bloc) désiré.

Page 46: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 46

Exemple de fonction de hachage statique

Ex: Supposons que les numéros des agences d'un fournisseur sont les suivants :

• S100, S200, S300, S400, S500et que chaque enregistrement "fournisseur" requiert une page complète (plusieurs blocs).

Page 47: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 47

Exemple de fonction de hachage statique

Une fonction de hachage adéquate pourrait être :

Ø le reste après la division du numéro du fournisseur par la valeur 13,

Pour l’exemple, l'adresse des données calculée correspond aux numéros de page (adresse de hachage) qui sont:Pour le premier fournisseur S100,

100 / 13 = 7.692

et le reste représente l'adresse :

0.692 * 13 = 9 de même pour les autres :

S200 = 5, S300 = 1, S400 = 10 et S500 = 6

Adresse

Page 48: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 48

Particularités des fonctions de hachage

ØUn fichier sur disque peut n'avoir qu'une seule structure de hachage alors qu'il peut avoir plusieurs index.

ØLa séquence d'écriture du fichier de données ne correspond à aucune séquence logique de tri;

Ø Il peut exister des espaces vides de grandeur arbitraire entre les enregistrements;

Ø Il y a possibilité de "collisions"; e.i., il peut y avoir deux clés de tri distinctes K pointant vers la même adresse de hachage!

Page 49: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 49

Exemple de collisions

Exemple :

Si on a un fournisseur S1400, on aura une collision avec le fournisseur S100 car les deux auront la même adresse de hachage : 9

1400 / 13 = 107.692

et le reste représente l'adresse :

0.692 * 13 = 9

Solution :

Cette adresse (9) peut être utilisée comme point de départ d'une recherche séquentielle.

Page 50: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 50

Fonction de hachage statique

Une bonne fonction de hachage remplit l'un des conditions suivantes :

Ø la distribution des clés de tri est uniforme vis-à-vis des paquets;

Ø la distribution des clés est aléatoire, e.i qu'en moyenne, chaque paquet se voit assigner un nombre homogène de valeurs de clé de tri;

Une mauvaise fonction de hachage remplit la condition suivante :

Øplace la majorité des clés dans le même paquet.

Page 51: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 51

Fonction de hachage statique

L'inconvénient majeur du choix d'une fonction de hachage statique est qu'il est pratiquement impossible de modifier ce choix.De plus, si la dimension de l’ensemble de toutes les adresses est excessive, on perd de la place.

Par contre si la dimension de l’ensemble de toutes les adresses est trop faible, alors les paquets contiennent des enregistrements relatifs à des valeurs de clés très diverses, et les performances de la base s'en ressentent. Finalement, il faut prévoir un algorithme de rechange si l'adresse calculée est déjà occupée.

Page 52: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 52

Fonction de hachage statique

a) Exemple d’algorithme de hachage utilisant la fonction mod; b) Exemple d’algorithme de résolution de collision

Page 53: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 53

Fonction de hachage statique

Le besoin de fixer la grandeur de l'ensemble des adresses constitue un problème non négligeable. La plupart des BD ont tendance à grossir avec le temps. Si on utilise une fonction de hachage statique, alors il faut tenir comptes des 3 options suivantes, soit :

Ø garder une fonction de hachage adaptée à la taille originelledes fichiers et les performances de la base se dégraderont lors de sa croissance;

Ø choisir une fonction de hachage adaptée à la dimension attendue des fichiers à moyen ou à long terme; les performances de la base iront en s'améliorant, mais l'espace mémoire est mal utilisée au début de l'exploitation de la base;

Ø réorganiser périodiquement le hachage de la structure pour l'adapter à la dimension courante des fichiers (nouvelle fonction de hachage, calcul des nouvelles adresses, ...). Ce processus est coûteux en temps machine et les fichiers sont inaccessibles pendant la réorganisation.

Page 54: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 54

Fonction de hachage dynamique

Il existe des fonctions de hachage qui autorise la modification dynamique des fonctions qui structures la base lorsque celle-ci croît ou décroît. Il existe plusieurs techniques de hachage dynamique dont le hachage extensible. Cette technique permet de tenir compte de l'évolution de la BD en fractionnant les paquets qui la constituent.

Page 55: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 55

Fonctionnement du hachage extensible

1. Le concepteur choisit une fonction de hachage h qui porte sur un nombre b d'adresses élevées; par exemple 232 (4 milliards). La figure suivante montre les 32 bits qui peuvent servir à l'adressage;

2. Tous ces paquets sont créés à la demande lorsque les enregistrements sont insérés dans la base.

Page 56: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 56

Fonctionnement du hachage extensible

3. À un instant donné, on en utilise i bits avec 0 ≤ i ≤ b, ces i bits sont utilisés en tant que branchement dans un arbre dynamique d'adressage.

4. La dimension de l'arbre croît en fonction du nombre d'enregistrements à ajouter dans la BD.

Page 57: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 57

Comparaison entre l'indexage et le hachage

Pour comparer les méthodes d'indexage et de hachage, il faut répondre aux questions suivantes :

ØLe coût des réorganisations périodiques de l'index ou du hachage est-il acceptable ?

ØQuelles sont les fréquences comparées des insertions et des effacements ?

ØEst-il souhaitable d'optimiser le temps d'accès moyen au prix de l'accroissement du temps d'accès dans le cas le plus défavorable ?

ØQuelles requêtes seront le plus fréquemment faites à la BD ?

Page 58: Chapitre 08 - Indexage et hachage - cours.etsmtl.ca 08 - Indexage et... · C’est la structure de fichier la plus ancienne. Elle est utilisée pour: ... d'adressage indirect auxiliaire

GPA775 Chapitre 8 - Indexage et hachage 58

Comparaison entre l'indexage et le hachage

Pour répondre à ces questions, il faut regarder les avantageset inconvénients des deux méthodes et les appliquer à des problèmes spécifiques.

ØCette étude dépasse le cadre du cours. Cependant, l'expérience a montré que la majorité des concepteurs de SGBD ont opté pour l'indexage.

Ce choix provient des difficultés suivantes :

ØLa difficulté d'obtention de fonctions de hachage statique qui permettent de distribuer de façon aléatoire la répartition des paquets;

ØLa difficulté de la programmation liée à complexité du hachage dynamique.