Académique Documents
Professionnel Documents
Culture Documents
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
40 1 0 90 Pommier 25.99 2
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
70 1 20 Sapin 12.99 1
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
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
Bloc 7
50
Bloc 2 Bloc 6
25 40 45 60
Espace
C1 R1 ... Cn Rn S
libre
Ci : Clé
Espace
P1 C1 P2 ... Ci-1 Pi-1 Ci ... Pn-1 Cn-1 Pn
libre
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
Index secondaire
FBf ~ OrdreMoyenI
H = log OrdreMoyenI (N)
Bloc 0
40 ...
Bloc 0
20 ... 40 ...
Bloc 0
20 ... 40 ... 60 ...
Bloc 0
20 ... 40 ... 60 ...
Bloc 2
40
Bloc 0 Bloc 1
20 ... 30 ... 40 ... 60 ...
Bloc 2
40
Bloc 0 Bloc 1
20 ... 30 ... 40 ... 60 ...
Bloc 2
40
Bloc 0 Bloc 1
20 25 30 40 60
Bloc 2
40
Bloc 0 Bloc 1
20 25 30 40 60
Bloc 2
25 40
Bloc 2
25 40
Bloc 2
25 40
Bloc 2
25 40 60
Bloc 2
25 40 60
Bloc 2
25 40 60
Bloc 7
50
Bloc 2 Bloc 6
25 40 60
Bloc 2
25 40
Bloc 2
25 40
Bloc 2
25 60
Bloc 7
50
Bloc 2 Bloc 6
25 40 45 60
Bloc 7
53
Bloc 2 Bloc 6
25 40 45 60
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 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 7
50 Violation de la
règle du minimum
Redistribution
Bloc 2 Bloc 6
25 40 60
Redistribution
Bloc 2 Bloc 6
25 40 60
Bloc 7
40
Bloc 2 Bloc 6
25 50
Bloc 2 Bloc 6
Violation de la
règle du minimum 25 50
Bloc 7
Violation de la
règle du minimum 40
Bloc 2 Bloc 6
25 50
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 2
40 50
Bloc 2 Bloc 5
25 60
Bloc 2
25 40 60 Arbre-B+
... ...
... ...
... ...
...
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
A B C
A C A B
«A» «C»
A B
«ACA» «ACB»
20 Sapin 12.99
50 Chêne 22.99
2
95 Génévrier 15.99
80 Poirier 26.99
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
p
Division du bloc 01 2 (p = 012)
101112
101112
p
101112
p
Division du bloc 102 (p = 102)
101112
011012
d=3
110002 000012 110102 110112 101002 101012 101102 011112
110012 100102 111012 101112
0002 0012 0102 0112 1002 1012 1102 1112
0 1
100012
0 1
111012
101002 010102 Bloc 1
Pas de lien direct entre suffixe et #bloc
110002 011102
Bloc 0 Bloc 2
100012
0 1
111012
101002 010102 Bloc 1
110002 011102
Bloc 0 Bloc 2
0 1
0 1 0 1
100012
0 1
111012
101002 010102 Bloc 1
110002 011102
Bloc 0 Bloc 2
0 1
0 1 0 1
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
Variation
contrôle de la division par taux d ’occupation
gestion des débordements
taille
50 Chêne 22.99 20
60 Erable argenté 15.99 20
2
43 Magnolia 28.99 5