Télécharger la présentation
1
Gestion de Fichiers Arbres B
2
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.
3
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.
4
Exemple d’un arbre B P W D M T A B C G I N U R S 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 explique les répétitions dans l’arbre).
5
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).
6
Recherche dans un arbre B
P W D M T A B C G I N U R S problème 1: Chercher la clé L problème 2: Chercher la clé S
7
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.
8
Insertion dans un arbre B: division
C D T S Après l’insertion de C, S, D, T: Insertion de A A
9
Insertion dans un arbre B: division récursive
P W D M T A B C G I N U R S D M P W A B C D G I M N P S T U W Insertion de R
10
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é.
11
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.
12
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 : * m/2 Niveau : * m/2 * m/2 = 2 * m/2 2 : * m/2 * m/2 * m/2 = 2 * m/2 3 …. d : 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
13
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.
14
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 !
15
Effacement d’un arbre B: exemple
I P Z D G I M P T X Z A B C D J K L M Q R S T Y Z E F G H I N O P U V W X problème 1: Effacer C problème 2: Effacer P problème 3: Effacer H
16
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
17
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.
18
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.
19
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.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.