arbres B

publicité
Gestion de Fichiers
Arbres B
Plan du cours sur les arbres B








Description générale et exemple
Recherche dans un arbre B
Insertion dans un arbre B
Quelques considérations formelles sur les arbres B
Effacement dans les arbres B
Meilleure utilisation du stockage  redistribution
pendant l’insertion et division 2-3  arbres B*
Garder les pages en mémoire tampon  arbres B
virtuels
Arbres B à enregistrements et clés à longueur variable.
2
Arbres B: description générale



Les arbres B sont construits de bas en haut plutôt
que de haut en bas. De cette manière, ils permettent
de résoudre le problème des arbres paginés: avec les
arbres B, on permet à la racine d’émerger plutot que
d’avoir à la choisir sans avoir vu toutes les données
et essayer de la changer si elle n’est pas optimale.
Les arbres B sont aussi des indexes à niveaux
multiples, mais ils résolvent le problème de
l’insertion et l’effacement à coût linéaire.
Les arbres B sont, maintenant, la manière
standard de representer les indexes.
3
Exemple d’un arbre B
P W
D M P
A
B
C
N
D
G
T W
I
M
P
R
U
W
S
T
Note: les références à l’enregistrement n’apparaissent
que dans les feuilles de l’arbre. Les noeuds internes ne
sont que des indexes de niveau supérieur (ce qui
4
explique les répétitions dans l’arbre).
Fonctionnement des arbres B:
idées principales



Chacun des noeuds d’un arbre B est un enregistrement
d’indexe. Chacun de ces enregistrements a le même
nombre maximum de paires de clé/référence. Ce
nombre s’appelle l’ordre de l’arbre B. Ces
enregistrements ont aussi un nombre minimum de
paires de clé/référence qui est, typiquement, la moitié de
l’ordre.
Lorsque l’on ajoute une nouvelle clé dans un noeud qui
n’est pas plein, on doit simplement mettre ce noeud à
jour et, peut-être, mettre à jour les noeuds supérieurs
récursivement.
Si, par contre, on ajoute une nouvelle clé dans un noeud
déjà plein, ce noeud est divisé en deux nouveaux
noeuds, chacun contenant la moitié des clés du noeud
originel. La clé à la valeur la plus élevée dans le noeud
originel est promue au noeud supérieur. Ceci peut
provoquer une nouvelle division (réaction en chaine).
5
Recherche dans un arbre B
P
D M
A
B
C
P
T
D
G
N
I
W
M
W
U
P
R
S
W
T
• problème 1: Chercher la clé L
• problème 2: Chercher la clé S
6
Insertion dans un arbre B



Faire une recherche jusqu’au bas de l’arbre afin
de trouver l’emplacement où la nouvelle clé doit
être inserrée.
Ajouter la clé, détecter s’il y a débordement
d’un noeud déjà plein, diviser le noeud présent
et tous les noeuds sur le cheminement récursif
vers le haut, si nécessaire.
Créer une nouvelle racine si la racine présente
a du être divisée.
7
Insertion dans un arbre B: division
Après l’insertion de
C, S, D, T:
C D
S
T
Insertion de A
D
A
C
D
T
S
T
8
Insertion dans un arbre B: division
récursive
D
A
B
C
D
G
I
M
M
P
N
W
P
S
T
U
W
Insertion de R
P W
D M
A
B C
P
D
G
T W
N
I
M
P
U W
R S T
9
Definitions formelles des propriétés
d’un arbre B
Dans un arbre B d’ordre m,
 Chaque page a un maximum de m descendants.
 Chaque page, à part la racine et les feuilles, a au
moins m/2 descendants.
 La racine a au moins deux descendants (à moins
que ce ne soit une feuille).
 Toutes les feuilles apparaissent au même niveau.
 Le niveau des feuilles forme un indexe ordonné et
complet du fichier de données associé.
10
Profondeur de la recherche au pire
des cas I




Etant donne 1,000,000 de clés et un arbre B d’ordre
512, quel est le maximum nombre d’acces au disque
necessaire pour localiser une clé dans l’arbre? En
d’autres termes quelle profondeur aura l’arbre?
Chaque clé apparait dans une feuille  Quelle est la
hauteur maximale d’un arbre de 1,000,000 de feuilles?
La hauteur maximale sera atteinte si toutes les pages
(ou noeuds) de l’arbre a le nombre minimum de
descendant permis.
Pour un arbre B d’ordre m, le nombre minimum de
descendants de la page racine est de 2. Il est de
m/2 pour toutes les autres pages.
11
Profondeur de la recherche au pire
des cas

Pour chaque niveau d d’un arbre B, le nombre minimum de
descendants partant de ce niveau est
Niveau 1(racine):
Niveau 2
:
Niveau 3
2
2 * m/2
2 * m/2 * m/2 = 2 * m/2 2
:
4
:
….
d
:
2 * m/2 * m/2 * m/2 = 2 * m/2 3
2 m/2 d-1
 Pour un arbre de N clés dans ses feuilles, nous avons
N  2 m/2 d-1
 d  1 + log m/2 (N/2)
 Pour m = 512 et N = 1,000,000, nous obtenons donc:
d  3.37
12
Effacement d’un arbre B: règles pour
l’effacement d’une clé k d’un noeud n


Si n a plus du nombre minimum de clés dans
un noeud et k n’est pas la clé à valeur la plus
élevée dans n, il suffit d’effacer k de n.
Si n a plus que le minimum nombre de clés et
k est la clé à la valeur la plus élevée dans n, il
faut effacer k et modifier les indexes de plus
haut niveau afin de refletter le fait que n a
une nouvelle clé à valeur la plus elevee.
13
Effacement d’un arbre B: règles pour
l’effacement d’une clé k d’un noeud n



Si n a exactement le nombre minimum de clés et l’un
des noeuds fraternels, f, de n a peu de clés, fusionner
n avec f et effacer une clé du noeud parent.
Si n a exactement le nombre minimum de clés et l’un
des noeuds fraternels, f, de n a des clés de plus,
redistribuer en mettant certaines des clés de f dans n,
et modifier les noeuds de niveaux supérieurs afin de
refletter cette redistribution.
Note: ces deux règles ne disent pas quand on doit
fusionner, et quand on doit redistribuer !
14
Effacement d’un arbre B: exemple
I
D
A
B
C
E
G
J
D
F
I
G
M
K
H
L
I
P
Z
P
M
T
Q
R
N
X
S
T
O
P
 problème 1: Effacer C
 problème 2: Effacer P
 problème 3: Effacer H
Z
Y
Z
U
V
W
15
X
Redistribution pendant l’insertion



La redistribution pendant l’insertion est un
moyen d’éviter—ou, tout du moins, reporter—la
création de pages nouvelles.
La redistribution nous permet de mettre certaines
des clés débordant d’une page dans une autre
page (moins pleine), plutôt que de diviser un page
débordante.
Les arbres B* formalisent cette idée
16
Arbres B*: propriétés
Les propriétés d’un arbre B* sont les suivantes:




Chaque page a un maximum de m descendants.
Chaque page, à part la racine, a au moins
(2m-1)/3 descendants.
La racine a au moins deux descendants (à
moins que ce ne soit une feuille).
La différence principale entre un arbre B et un
arbre B* est donc la deuxieme règle.
17
Arbres B virtuels



Le fait qu’un arbre B a trois niveaux ne veut pas
nécessairement dire qu’il faut faire trois accès au disque
afin de récuperer une clé  On peut faire mieux que cela
en gardant certaines parties de l’arbre B en mémoire.
On peut créer une mémoire tampon pour pages
(noeuds) de l’arbre B qui peut garder plusieurs pages en
mémoire (5, 10 ou, peut-être, encore plus).
Si la page desirée n’est pas en mémoire, on va la chercher
sur stockage secondaire et l’amener en mémoire,
remplaçant ainsi une autre page. On peut utiliser une des
stratégies de remplacement connue telle que LRU ou
une stratégie basée sur la hauteur de la page à cette fin.
18
Arbres B: enregistrements et clés à
longueur variable




Les arbres B peuvent être étendus de manière à
permettre à la longueur des clés et des
enregistrements de varier.
Dans ce cas, un arbre B doit être modifié et n’a plus
d’ordre m clairement défini comme avant.
Il faut donc de nouvelles conventions pour cet arbre
plus flexible.
Ceci démontre que la structure de l’arbre B discuté
dans cette partie du cours n’a pas besoin d’être aussi
rigide que notre présentation l’a suggéré. Notre
discussion était seulement un point de départ.
19
Téléchargement