Vous êtes sur la page 1sur 67

Administration des Bases de Données

Indexage et Hachage
Plan
 Présentation
 Indexage
 Arbre B+
 Arbre B
 Bitmap
 …
 Hachage
 Statique
 Dynamique
 Extensible
 …
93 Administration des Bases de Données 2020-2021
Présentation
 Sélection basée sur une clé d'accès
 recherche associative
 Ex: Chercher le plant dont le noCatalogue = 10
 Solutions :
 En série
 lire tout le fichier en pire cas
 O(N)
 Indexage
 sélection par intervalle
 O(log(N))
 Hachage
 ~O(1)
94 Administration des Bases de Données 2020-2021
Indexage
 Index et clé d'index (index key)
 valeur de la clé =>adresse de(s) l'enregistrement
Numéro
Numéro d'enregistrement
Index de bloc relatif
10 0 10 Cèdre en boule 10.99 0

20 8 40 Epinette bleue 25.99 1

40 1 0 90 Pommier 25.99 2

50 4 60 Erable argenté 15.99 3

60 3 50 Chêne 22.99 4

70 7
81 Catalpa 25.99 5
80 9
95 Génévrier 15.99 6
81 5
70 Herbe à puce 10.99 7
90 2 1
20 Sapin 12.99 8
95 6
80 Poirier 26.99 9

Index dense secondaire

95 Administration des Bases de Données 2020-2021


Fichier séquentiel indexé
Numéro
Numéro d'enregistrement
Index de bloc relatif
10 0 10 Cèdre en boule 10.99 0

70 1 20 Sapin 12.99 1

40 Epinette bleue 25.99 2


0
50 Chêne 22.99 3

60 Erable argenté 15.99 4

70 Herbe à puce 10.99 5

 Non dense 80 Poirier 26.99 6

81 Catalpa 25.99 7
1
 Index plus petit 90 Pommier 25.00 8

95 Génévrier 15.99
 Accès séquentiel rapide 9

 Primaire

96 Administration des Bases de Données 2020-2021


Index séquentiel hiérarchique

Niveau 1 Niveau 2
d'index d'index
10 10 10 Cèdre en boule 10.99
80 40 20 Sapin 12.99
... ... 60
40 Epinette bleue 25.99
80
50 Chêne 22.99
90
... ... 60 Erable argenté 15.99
70 Herbe à puce 10.99

80 Poirier 26.99
81 Catalpa 25.99

90 Pommier 25.00
95 Génévrier 15.99

97 Administration des Bases de Données 2020-2021


Indexage par Arbre-B et variantes
 Arbre-B (B-arbre, B-tree)
 forme d ’index hiérarchique
 équilibré
 O(log(N)) en pire cas
 Réorganisation dynamique
 division/fusion des blocs
 taux d ’occupation minimum de 50%

98 Administration des Bases de Données 2020-2021


Arbre-B+
 Hypothèse initiale : clé simple et unique
 Nœud = bloc

Bloc 7
50

Bloc 2 Bloc 6
25 40 45 60

Bloc 0 Bloc 3 Bloc 1 Bloc 8 Bloc 5 Bloc 4


10 20 25 30 40 43 44 45 48 50 53 60 70

99 Administration des Bases de Données 2020-2021


Structure d ’une feuille
 1. Remplie à moitié au minimum FBMf/2 ≤ n = nombre de clés ≤ FBMf

 2. Clés triées : i < j  Ci < Cj

 3. Clés d'une feuille < clés de la suivante

 4. Au même niveau (équilibré)

Espace
C1 R1 ... Cn Rn S
libre
 Ci : Clé

 Ri : reste de l'enregistrement ou référence

 S : Pointeur sur le bloc suivant dans la liste des feuilles

100 Administration des Bases de Données 2020-2021


Structure d’un bloc interne
 1. Remplie à moitié au minimum:
 OrdreI /2 ≤ n = nombre de pointeurs ≤ OrdreI

 2. Clés triées : i < j  Ci < Cj

 3. Ci-1 <= Clés sous Pi-1 < Ci

Espace
P1 C1 P2 ... Ci-1 Pi-1 Ci ... Pn-1 Cn-1 Pn
libre

C < C1 Ci-1 <= C < Ci Cn-1 <= C

101 Administration des Bases de Données 2020-2021


Recherche dans un arbre-B+
RechercherClé (noBloc, clé, indice)

Entrée
noBloc : typeNuméroBloc {numéro du bloc à chercher; racine au premier appel}
clé : typeClé {la clé à chercher}
Sortie
noBloc : typeNuméroBloc {numéro du bloc où est la clé }
indice : 1..FBMf { si clé trouvée, indice de la clé dans le tableauClés du bloc}
valeur de retour : BOOLÉEN;{vrai si clé a été trouvée}
Pré-condition : arbre n'est pas vide

DÉBUT
lireBloc(fichierArbre-BPlus, noBloc, bloc);
TANT QUE bloc n'est pas une feuille
indice := l'indice de la plus petite clé de tableauClés plus grande que clé (ou n);
noBloc:= tableauEnfants[indice];
lireBloc(fichierArbre-BPlus, noBloc, bloc);
FIN TANT QUE;
SI la clé est présente dans tableauClés
indice := l'indice de la clé dans le tableauClés;
retourner VRAI;
SINON
retourner FAUX
FIN SI
FIN
102 Administration des Bases de Données 2020-2021
Rechercher 43

Bloc 7
50

Bloc 2 Bloc 6
25 40 45 60

Bloc 0 Bloc 3 Bloc 1 Bloc 8 Bloc 5 Bloc 4


10 20 25 30 40 43 44 45 48 50 53 60 70

103 Administration des Bases de Données 2020-2021


Complexité de la recherche et hauteur de l'arbre
 FBMf = 20 et OrdreI = 200
 Hauteur = nombre de niveaux
 Hauteur 2 N  2 * 10 = 20 clés (pire cas)
 Hauteur 3 N  2 * 100 * 10 = 2 000 clés
 Hauteur 4 N  2 * 100 * 100 * 10 = 200 000 clés
 Hauteur 5 N  2 * 100 * 100 * 100 * 10 = 20 000 000 clés
 Hauteur H N  2*OrdreI /2H-2 * FBMf/2 pour H  2
H  2 + log OrdreI /2 (N /(2*FBMf/2))
 O(log N)

104 Administration des Bases de Données 2020-2021


Hauteur moyenne
 H ~ 1 + log OrdreMoyenI (N / FBf)
 OrdreMoyenI = 2/3 OrdreI 
 FBf = 2/3 FBMf 

 Index secondaire
 FBf ~ OrdreMoyenI
 H = log OrdreMoyenI (N)

105 Administration des Bases de Données 2020-2021


Insertion dans un arbre-B+
 FBM = 3, OrdreI = 4

Bloc 0
40 ...

Bloc 0
20 ... 40 ...

Bloc 0
20 ... 40 ... 60 ...

106 Administration des Bases de Données 2020-2021


Débordement et division
 Insertion de 30
 Débordement et la division du bloc 0
 40 est promue
 Nouvelle racine

Bloc 0
20 ... 40 ... 60 ...

Bloc 2
40

Bloc 0 Bloc 1
20 ... 30 ... 40 ... 60 ...

107 Administration des Bases de Données 2020-2021


Insertion de 25

Bloc 2
40

Bloc 0 Bloc 1
20 ... 30 ... 40 ... 60 ...

Bloc 2
40

Bloc 0 Bloc 1
20 25 30 40 60

108 Administration des Bases de Données 2020-2021


Insertion de 10
 Débordement et la division du bloc 0
 25 est promue

Bloc 2
40

Bloc 0 Bloc 1
20 25 30 40 60

Bloc 2
25 40

Bloc 0 Bloc 3 Bloc 1


10 20 25 30 40 60

109 Administration des Bases de Données 2020-2021


Insertion de 70

Bloc 2
25 40

Bloc 0 Bloc 3 Bloc 1


10 20 25 30 40 60

Bloc 2
25 40

Bloc 0 Bloc 3 Bloc 1


10 20 25 30 40 60 70

110 Administration des Bases de Données 2020-2021


Insertion de 50
 Débordement et la division du bloc 1
 60 est promue
Bloc 2
25 40

Bloc 0 Bloc 3 Bloc 1


10 20 25 30 40 60 70

Bloc 2
25 40 60

Bloc 0 Bloc 3 Bloc 1 Bloc 4


10 20 25 30 40 50 60 70

111 Administration des Bases de Données 2020-2021


Insertion de 53

Bloc 2
25 40 60

Bloc 0 Bloc 3 Bloc 1 Bloc 4


10 20 25 30 40 50 60 70

Bloc 2
25 40 60

Bloc 0 Bloc 3 Bloc 1 Bloc 4


10 20 25 30 40 50 53 60 70

112 Administration des Bases de Données 2020-2021


Insertion de 45
 Division du bloc 1
 50 est promue
 Division de la racine Bloc 2
25 40 60

Bloc 0 Bloc 3 Bloc 1 Bloc 4


10 20 25 30 40 50 53 60 70

Bloc 7
50

Bloc 2 Bloc 6
25 40 60

Bloc 0 Bloc 3 Bloc 1 Bloc 5 Bloc 4


10 20 25 30 40 45 50 53 60 70

113 Administration des Bases de Données 2020-2021


Suppression dans un arbre-B+
 Cas simple
 minimum préservé
 pas la première
Bloc 2
25 40

Bloc 0 Bloc 3 Bloc 1


10 20 25 30 40 60 70

Bloc 2
25 40

Bloc 0 Bloc 3 Bloc 1


10 20 25 30 40 60

114 Administration des Bases de Données 2020-2021


Première clé du bloc et pas la première feuille
 Remplacer dans le parent (si pas « aîné »)

Bloc 2
25 40

Bloc 0 Bloc 3 Bloc 1


10 20 25 30 40 60 70

Bloc 2
25 60

Bloc 0 Bloc 3 Bloc 1


10 20 25 30 60 70

115 Administration des Bases de Données 2020-2021


Première clé du bloc et pas la première feuille
 Remonter tant que l'enfant est l ’« aîné »

Bloc 7
50

Bloc 2 Bloc 6
25 40 45 60

Bloc 0 Bloc 3 Bloc 1 Bloc 8 Bloc 5 Bloc 4


10 20 25 30 40 43 44 45 48 50 53 55 60 70

Bloc 7
53

Bloc 2 Bloc 6
25 40 45 60

Bloc 0 Bloc 3 Bloc 1 Bloc 8 Bloc 5 Bloc 4


10 20 25 30 40 43 44 45 48 53 55 60 70

116 Administration des Bases de Données 2020-2021


Violation du minimum : redistribution si possible
 Ajuster séparateur
Bloc 2
40

Bloc 0 Bloc 1
20 25 30 40 60

Bloc 2
30

Bloc 0 Bloc 1
20 25 30 60
117 Administration des Bases de Données 2020-2021
Violation du minimum : fusion
Bloc 2
Violation de la 25 60
règle du minimum

Bloc 0 Bloc 3 Bloc 1


10 20 25 30 60 70
Fusion des deux frères

Bloc 2
60

Bloc 0 Bloc 1
10 25 30 60 70
118 Administration des Bases de Données 2020-2021
Cas de fusion de feuilles et de redistribution au niveau du parent
Bloc 7
50

Bloc 2 Bloc 6
25 40 60 Violation de la
règle du minimum

Bloc 0 Bloc 3 Bloc 1 Bloc 5 Bloc 4


10 20 25 30 40 45 50 53 60 70
Fusion des deux frères

Bloc 7
50 Violation de la
règle du minimum

Redistribution
Bloc 2 Bloc 6
25 40 60

Bloc 0 Bloc 3 Bloc 1 Bloc 5


10 20 25 30 40 45 50 60 70

119 Administration des Bases de Données 2020-2021


Cas de fusion de feuilles et de redistribution au niveau du parent
(suite)
Bloc 7
50 Violation de la
règle du minimum

Redistribution
Bloc 2 Bloc 6
25 40 60

Bloc 0 Bloc 3 Bloc 1 Bloc 5


10 20 25 30 40 45 50 60 70

Bloc 7
40

Bloc 2 Bloc 6
25 50

Bloc 0 Bloc 3 Bloc 1 Bloc 5


10 20 25 30 40 45 50 60 70

120 Administration des Bases de Données 2020-2021


Cas de fusion en cascade
Bloc 7
40

Bloc 2 Bloc 6
Violation de la
règle du minimum 25 50

Bloc 0 Bloc 3 Bloc 1 Bloc 5


10 20 25 30 40 45 50 60 70
Fusion des deux frères

Bloc 7
Violation de la
règle du minimum 40

Bloc 2 Bloc 6
25 50
Fusion des deux frères

Bloc 0 Bloc 1 Bloc 5


10 25 30 40 45 50 60 70

121 Administration des Bases de Données 2020-2021


Cas de fusion en cascade (suite) : réduction de la hauteur

Bloc 7
Violation de la
règle du minimum 40

Bloc 2 Bloc 6
25 50
Fusion des deux frères

Bloc 0 Bloc 1 Bloc 5


10 25 30 40 45 50 60 70

Bloc 2
40 50

Bloc 0 Bloc 1 Bloc 5


10 25 30 40 45 50 60 70

122 Administration des Bases de Données 2020-2021


Arbre-B
 Clés non dupliquées
 Ordre < Bloc 6
Arbre-B
 Hauteur > 40

Bloc 2 Bloc 5
25 60

Bloc 0 Bloc 3 Bloc 1 Bloc 4


10 20 30 50 53 70

Bloc 2
25 40 60 Arbre-B+

Bloc 0 Bloc 3 Bloc 1 Bloc 4


10 20 25 30 40 50 53 60 70

123 Administration des Bases de Données 2020-2021


Autres variantes du concept d'arbre-B
 Redistribuer plutôt que diviser
 occupation moyenne 67% => 86%
 Diviser deux en trois
 Arbre-B*
 Ordre variable
 clés de taille variable
 Arbre B préfixe
 comprimer les clés diminue la hauteur
 Algorithme de chargement en lot
 feuilles consécutives
 taux de remplissage prédéterminé

124 Administration des Bases de Données 2020-2021


Cas d'une clé non unique
 Arbre-B+ primaire sur une clé non unique
 IDE difficile
 Arbre B+ secondaire avec clés répétées
 clé d ’accès + pointeur (unique)
 Arbre B+ secondaire avec collection de références
 listes inversées dans les feuilles
 Arbre B+ secondaire avec référence à une collection d'enregistrements
 Index groupant (“ clustering index ”)
 organisation primaire par grappe et index secondaire sur même clé

 Arbre B+ secondaire avec référence à collection de références


 listes inversées à part
 Arbre B+ avec vecteurs booléens
 index « bitmap »

125 Administration des Bases de Données 2020-2021


Réalisation de l'accès par IDE à l'aide d'une organisation par index
 Index primaire
 IDE = id_fichier, valeur de la clé unique
 nécessite le passage par l ’index
 IDE logique
 index secondaire
 clé d ’index = IDE

126 Administration des Bases de Données 2020-2021


Sélection par intervalle ou préfixe
 Arbre B+
 recherche de la valeur minimale
 parcours des feuilles jusqu ’à la valeur maximale

... ...

... ...

... ...
...

Feuilles à transférer
127 Administration des Bases de Données 2020-2021
Index sur une clé composée
 Clé composée ~ clé simple formée de la concaténation des champs
 Sélection par préfixe de la clé composée

128 Administration des Bases de Données 2020-2021


Index bitmap
indice noPermis sexe couleurYeux bitmap bitmap bitmap bitmap bitmap
sexe = M sexe = F couleurYeux couleurYeux couleurYeux
= bleu = brun = rouge
1 G111 M brun 1 0 0 1 0
2 G555 M bleu 1 0 1 0 0
3 G222 F brun 0 1 0 1 0
4 G888 M brun 1 0 0 1 0
5 G777 F brun 0 1 0 1 0
6 G666 M rouge 1 0 0 0 1
7 G333 F bleu 0 1 1 0 0
8 G444 F brun 0 1 0 1 0
 couleurYeux = brun et sexe = M
 10111001 ET 11010100 = 10010000

129 Administration des Bases de Données 2020-2021


Arbre digital (trie)
 Chaque niveau : position d'un symbole de la clé vue comme une séquence de symboles s1s2…sn

A B C

A C A B

«A» «C»

A B

«AA» «BA» «BB»

«ACA» «ACB»

130 Administration des Bases de Données 2020-2021


Hachage
 Hachage ou adressage dispersé (hashing)
 Fonction h(clé de hachage) => l'adresse d'un paquet
 Fichier = tableau de paquets (bucket)
 ~ARRAY paquet [0..TH-1]

 TH : taille de l'espace d'adressage primaire

 Habituellement paquet = bloc


 Pas d ’index à traverser : O(1) en meilleur cas
 Sélection par égalité (pas intervalle)

131 Administration des Bases de Données 2020-2021


Hachage statique

60 Erable argenté 15.99


90 Pommier 25.99
0
81 Catalpa 25.99
clé = 10
70 Herbe à puce 10.99
40 Epinette bleue 25.99
h(10) = 10 MOD 3 = 1 1
10 Cèdre en boule 10.99

20 Sapin 12.99
50 Chêne 22.99
2
95 Génévrier 15.99
80 Poirier 26.99

132 Administration des Bases de Données 2020-2021


Problème de débordement dû aux collisions
 Méthode de résolution des collisions
 Adressage ouvert
 AC+1, AC+2,....., n-1, 0, 1, ....AC-1
 Chaînage

60 Erable argenté 15.99


90 Pommier 25.99
0
81 Catalpa 25.99

70 Herbe à puce 10.99 52 Pin 18.99


40 Epinette bleue 25.99
1
10 Cèdre en boule 10.99
43 Magnolia 28.99
20 Sapin 12.99
50 Chêne 22.99
2
95 Génévrier 15.99
80 Poirier 26.99

133 Administration des Bases de Données 2020-2021


Hachage Cuckoo
 Combiner 2 organisations par hachage
 - 2 fonctions différentes
 Si collision
 Prendre la place
 Pousser la clé déjà présente dans l’autre organisation
 Répéter au besoin
 Si plus de place
 Réorganiser …
 Garantie de 2 accès
 Occupation sous 50%

134 Administration des Bases de Données 2020-2021


Fonction de hachage
 Répartition uniforme des clés dans [0..TH-1]
 h(clé) = clé MOD TH
 TH est premier
 h(clé) = clé p MOD TH
 TH et p sont relativement premiers
 h(clé) = (∑ si) MOD TH
 si est une sous-séquence des bits de la clé

 Clé non numérique


 représentation binaire vue comme un entier

135 Administration des Bases de Données 2020-2021


Hachage vs indexage
 O(1) en meilleur cas vs O(log(N))
 Pas d ’espace supplémentaire d ’index
 Gaspillage d ’espace si TH trop >
 Performance dégradée si TH trop <
 Gestion plus délicate
 déterminer h et TH
 maintenance : réorganisations
 Clé non numérique ?
 représentation binaire vue comme un entier

136 Administration des Bases de Données 2020-2021


Connaissances à priori sur les clés
 Calculer une fonction de hachage adaptée
 Hachage parfait
 Hachage minimal parfait
 Hachage qui préserve l’ordre

137 Administration des Bases de Données 2020-2021


Calcul d ’espace
 Heuristique : Taux d ’occupation moyen ~ 80%
 TauxOccupation = N/(TH  FB)  0.8
 Taux de débordement moyen sous distribution uniforme [Merrett, 1984 #217] :
 FB = 1 ~ 30%
 FB = 10 ~ 5%
 FB = 100 ~1%

138 Administration des Bases de Données 2020-2021


Hachage dynamique
 Adaptation de TH et h aux variations du volume des données
 ~ arbre-B
 division et fusion de paquets (blocs)
 Deux variantes de base
 linéaire
 extensible

139 Administration des Bases de Données 2020-2021


Hachage linéaire
 Adaptation de TH
 suite d ’expansions
 Début de dième expansion, d  {0, 1, …}
 TH passera de 2d à 2d+1
 adresse du paquet : hd(clé) = bd-1, bd-2,…, b1, b0

101002 111012 110102 011112


d=2
000012 110112
002 012 102 112

p
140 Administration des Bases de Données 2020-2021
Insertion de h(clé) = 101012
101002 111012 110102 011112
 Bloc #012 déborde
000012 110112
002 012 102 112  Division du bloc p = #002 (pas #012)
 p := p+1
p
Division du bloc 002
FONCTION AdresseLinéaire (clé)
DÉBUT
101012 SI hd(clé) >= p Retourner hd(clé)
SINON Retourner hd+1(clé) FINSI
FIN

111012 110102 011112 101002


000012 110112
0002 012 102 112 1002

Zône primaire Zône d'expansion

141 Administration des Bases de Données 2020-2021


Insertion de h(clé) = 101112
101012
 Bloc #112 déborde
111012 110102 011112 101002
000012 110112
0002 012 102 112 1002

p
Division du bloc 01 2 (p = 012)

101112

000012 110102 011112 101002 101012


110112 111012
0002 0012 102 112 1002 1012

142 Zône primaire Administration des


ZôneBases de Données
d'expansion 2020-2021
Insertion de 110002, 110012 et 101102

101112

000012 110102 011112 101002 101012


110112 111012
0002 0012 102 112 1002 1012

p
101112

110002 000012 110102 011112 101002 101012


110012 101102 110112 111012
0002 0012 102 112 1002 1012

Zône primaire Zône d'expansion


143 Administration des Bases de Données 2020-2021
Insertion de 100102
101112
 Bloc #102 déborde et est divisé
110002 000012 110102 011112 101002 101012
110012 101102 110112 111012
0002 0012 102 112 1002 1012

p
Division du bloc 102 (p = 102)

101112

110002 000012 110102 011112 101002 101012 101102


110012 100102 110112 111012
0002 0012 0102 112 1002 1012 1102

144 Administration des Bases de Données 2020-2021


Zône primaire Zône d'expansion
Insertion de 011012
101112  Bloc #1012 déborde
 zone d ’expansion !
110002 000012 110102 011112 101002 101012 101102  Fin de l ’expansion
110012 100102 110112 111012
0002 0012 0102 112 1002 1012 1102  p := 0
p  d := d+1 = 3
Division du bloc 112

011012
d=3
110002 000012 110102 110112 101002 101012 101102 011112
110012 100102 111012 101112
0002 0012 0102 0112 1002 1012 1102 1112

145 Administration des Bases de Données 2020-2021


Zone primaire
Variantes du hachage linéaire
 Variante du contrôle de la division
 algorithme de base
 débordement => division : taux d ’occupation ~ 60%
 division/fusion contrôlée par taux d ’occupation
 Variante de gestion des débordements
 hachage linéaire au niveau suivant
 Variante de division
 biais dans les chaînages (à droite de p)
 expansions partielles
 diviser n blocs en n+1
 fonction de hachage exponentielle
 Gestion de l ’espace d ’adressage primaire
 préserver la contiguïté de l ’espace malgré expansions ?

146 Administration des Bases de Données 2020-2021


Hachage extensible
 Ajoute un niveau d ’indirection
 Répertoire d'adresses de paquets
 espace supplémentaire
 accès disque supplémentaire pour répertoire
 antémémoire

 Bloc qui déborde est divisé


 pas de dégradation due au chaînage
 pire cas : 2 transferts

147 Administration des Bases de Données 2020-2021


Analogie avec arbre digital
 Répertoire vu comme arbre digital
 Chemin = suffixe

0 1

100012
0 1
111012
101002 010102 Bloc 1
 Pas de lien direct entre suffixe et #bloc
110002 011102
Bloc 0 Bloc 2

148 Administration des Bases de Données 2020-2021


Insertion de h(clé) = 100112
 Débordement et division du bloc #1
 Utilisation d ’un bit de plus
0 1

100012
0 1
111012
101002 010102 Bloc 1
110002 011102
Bloc 0 Bloc 2

0 1

0 1 0 1

101002 010102 100012 100112


110002 011102 111012
Bloc 0 Bloc 2 Bloc 1 Bloc 3
149 Administration des Bases de Données 2020-2021
«Remplacer» l'arbre digital par un répertoire
 « Compléter » l ’arbre
0 1

100012
0 1
111012
101002 010102 Bloc 1
110002 011102
Bloc 0 Bloc 2

0 1

0 1 0 1

101002 010102 100012


110002 011102 111012
Bloc 0 Bloc 2 Bloc 1
150 Administration des Bases de Données 2020-2021
Arbre digital => un répertoire
 Bijection chemin <-> indice

0 1 Sens
de
0 1 0 1 lecture
des
101002 010102 100012 indices
110002 011102 111012
Bloc 0 Bloc 2 Bloc 1
Profondeur
globale du 002 012 102 112
répertoire (d)
2

Profondeur
locale du
bloc
101002 100012 010102
2 1 2
110002 111012 011102
Bloc 0 Bloc 1 Bloc 2
151 Administration des Bases de Données 2020-2021
Insertion de h(clé) = 100112 avec répertoire

Profondeur
globale du 002 012 102 112
répertoire (d)
2

Profondeur
locale du
bloc
101002 100012 010102
2 1 2
110002 111012 011102
Bloc 0 Bloc 1 Bloc 2
Profondeur
globale du 002 012 102 112
répertoire (d)
2

Profondeur
locale du
bloc
101002 100012 010102 100112
2 2 2 2
110002 111012 011102
Bloc 0 Bloc 1 Bloc 2 Bloc 3
152 Administration des Bases de Données 2020-2021
Cas de dédoublement de répertoire : insertion de h(clé) = 101102

Profondeur
0 1 globale du 002 012 102 112
répertoire (d)
100012 2
0 1
111012 Profondeur
101002 010102 Bloc 1 locale du
bloc
110002 011102 101002 100012 010102
2 1 2
Bloc 0 Bloc 2 110002 111012 011102
0 1 Bloc 0 Bloc 1 Bloc 2
100012
0 1
111012
101002
110002
0 1
Bloc 1
Profondeur locale dépasse
Bloc 0 010102 011102 profondeur globale
101102
Bloc 2 Bloc 3

0 1
0002 0012 0102 0112 1002 1012 1102 1112
3
0 1 0 1

101002 100012 010102 011102


0 1 0 1 0 1 0 1 2
110002
1
111012
3 3
101102
Bloc 0 Bloc 1 Bloc 2 Bloc 3
101002 010102 011102 100012
110002 101102 111012
Bloc 0 Bloc 2 Bloc 3 Bloc 1

153 Administration des Bases de Données 2020-2021


Hachage extensible (suite)
 Occupation d ’espace
 comportement oscillatoire assez prononcé
 entre .53 et .94
 moyenne : ln 2 = .69

 Variation
 contrôle de la division par taux d ’occupation
 gestion des débordements

154 Administration des Bases de Données 2020-2021


Réalisation de l'accès par IDE avec le hachage
 Hachage statique
 bloc d ’ancrage fixe
 IDE = idFichier, #blocAncrage, #séquence
 HASH CLUSTER d ’Oracle
 applicable dans le cas non unique
 Cas d ’une clé de hachage unique
 IDE = id_fichier, valeur de la clé unique
 nécessaire avec hachage dynamique

155 Administration des Bases de Données 2020-2021


Hachage sur une clé non unique et effet de grappe
 Regroupement des mêmes valeurs de clé
 v1 = v2  h(v1) = h(v2)

taille

20 Sapin 12.99 15 52 Pin 18.99 15


90 Pommier 25.99 6 80 Poirier 26.99 6
0
81 Catalpa 25.99 15
40 Epinette bleue 25.99 15
70 Herbe à puce 10.99 1
95 Génévrier 15.99 1
h(taille) = taille MOD 3 1
10 Cèdre en boule 10.99 1

50 Chêne 22.99 20
60 Erable argenté 15.99 20
2
43 Magnolia 28.99 5

156 Administration des Bases de Données 2020-2021


Hachage secondaire
 Hachage sur
 (clé de hachage, IDE)

157 Administration des Bases de Données 2020-2021


Tableau comparatif des organisations
Critère Sériel Arbre-B+ Arbre-B+ Hachage Hachage
primaire secondaire statique dynamique
Sélection par égalité sur O(N/FB) O(log (N)) O(log (N)) Meilleur cas Meilleur cas
clé unique Cas moyen : :O(1) :O(1)
O(N/FB/2) Pire cas : Pire cas :
O(N/FB) O(N/FB)
Sélection par égalité sur O(N/FB) O(log (Card(clé))+ Approche par Meilleur cas : Meilleur cas :
clé non unique Sel/FB) duplication O(Sel/FB) O(Sel/FB)
O(log (N)+ Pire cas : Pire cas :
Sel) O(N/FB) O(N/FB)
Sélection par intervalle O(N/FB) O(log (Card(clé))+ O(log (N)+ O(N/FB) O(N/FB)
Sel/FB) Sel)
Itération sérielle O(N/FB) O(N/FB) O(N/FB) O(N/FB)
Itération séquentielle O(tri) O(N/FB) O(N) O(tri) O(tri)
Insertion/suppression O(1) O(log N) O(log N) Meilleur cas Meilleur cas
:O(1) :O(1)
Pire cas : Pire cas :
O(N/FB) O(N/FB)
Taux d'occupation Maximal En moyennne : Ajouter à ~80% ~69% (ln 2)
mémoire secondaire approche 100% 66% (2/3) l'organisation À ajuster Peut augmenter
primaire Pire cas non au prix d'une
borné diminution de
performance.
Autres considérations Support difficile Peut y avoir Distribution Disponibilité
de l'accès par plusieurs index des clés par restreinte
IDE et donc des secondaires sur fonction de
organisations la même table hachage ?
secondaires Problème avec
tables volatiles
Stress du DBA
158 Administration des Bases de Données 2020-2021

Vous aimerez peut-être aussi