Gestion de Fichiers GF-12: Comment Gerer les Indexes qui ne tiennent pas en Memoire de Maniere Efficace?: II. Arbres B (Base sur les Sections de Folk, Zoellick & Riccardi, File Structures, An Object-Oriented Approach with C++;)
2 Resume du Cours sur les Arbres B Description Generale et Example Recherche dans un Arbre B Insertion dans un Arbre B Quelques Considerations Formelles sur les Arbres B Effacement dans les Arbres B Meilleure Utilisation du Storage Redistribution pendant l’Insertion et division 2-3 Arbres B* Garder les pages en memoire Tampon Arbres B Virtuels Arbres B a enregistrements et Cles a longueur variable.
3 Arbres B: Description Generale Les arbres B sont construits de bas en haut plutot que de haut en bas. De cette maniere, ils permettre de resoudre le probleme des arbres pagines: avec les arbres B, on permet a la racine d’emerger plutot que d’avoir a la choisir sans avoir vu toutes les donnees et essayer de la changer si elle n’est pas optimale. Les arbres B sont aussi des indexes a niveaux multiples, mais ils resolvent le probleme de l’insertion et l’effacement a cout lineaire. Les arbres B sont, maintenant, la maniere standard de representer les indexes.
4 Example d’un Arbre B PW DMP TW A BCD G IM NP U W RST Note: les references a l’enregistrement n’apparaissent que dans les feuilles de l’arbre. Les noeuds internes ne sont que des indexes de niveau superieur (ce qui explique les repetitions dans l’arbre).
5 Comment les Arbres B Fonctionnent-ils: Idees Principales Chacun des noeuds d’un arbre B est un enregistrement d’indexe. Chacun de ces enregistrements a le meme nombre maximum de paires de cle/reference. Ce nombre s’appelle l’ordre de l’arbre B. Ces enregistrements ont aussi un nombre minimum de paires de cle/reference qui est, typiquement, la moitie de l’ordre. Lorsque l’on ajoute une nouvelle cle dans un noeud qui n’est pas plein, on doit simplement mettre ce noeud a jour et, peut-etre, mettre a jour les noeuds superieurs recursivement. Si, par contre, on ajoute une nouvelle cle dans un noeud deja plein, ce noeud est divise en deux nouveaux noeuds, chacun contenant la moitie des cles du noeud originel. La cle a la valeur la plus eleve dans le noeud originel est promue au noeud superieur. Ceci peut provoquer une nouvelle division.
6 Recherche dans un Arbre B P W D M P TW ABCD GIM NP U W RST Probleme 1: Chercher la cle L Probleme 2: Chercher la cle S
7 Insertion dans un Arbre B Faire une recherche jusqu’au bas de l’arbre afin de trouver la location ou la cle doit etre inserree. Ajouter la cle, detecter s’il y a debordement d’un noeud deja plein, diviser le noeud present et tous les noeuds sur le cheminement recursif vers le haut, si necessaire. Creer une nouvelle racine si la racine presente a du etre divisee.
8 Insertion dans un arbre B: Pas de Division et Division Contenue CD TS Apres l’Insertion de C, S, D, T: Insertion du A D T ACDS T
9 Insertion dans un Arbre B: Division Recursive P W D M P T W ABCD GIM NPUW RST D M P W A B C DG I MN PS T U W Insertion du R
10 Definitions Formelles des Proprietes d’un Arbre B Dans un Arbre B d’ordre m, Chaque page a un maximum de m descendants. Chaque page, a part la racine et les feuilles, a au moins m/2 descendants. La racine a au moins deux descendants (a moins que ce ne soit une feuille). Toutes les feuilles apparaissent au meme niveau. Le niveau des feuilles forme un indexe ordonne et complet du fichier de donnees associe.
11 Profondeur de la Recherche au Pire des Cas I Etant donne 1,000,000 de cles et un arbre B d’ordre 512, quel est le maximum nombre d’acces au disque necessaire pour localiser une cle dans l’arbre? En d’autres termes quelle profondeur aura l’arbre? Chaque cle 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 II Pour chaque niveau d d’un arbre B, le nombre minimum de descendants partant de ce niveau est 2 m/2 d-1 Pour un arbre de N cles 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: Regles pour l’Effacement d’une cle k d’un noeud n I Si n a plus du nombre minimum de cles dans un noeud et k n’est pas la cle a la valeur la plus elevee dans n, il suffit d’effacer k de n. Si n a plus que le minimum nombre de cles et k est la cle a la valeur la plus elevee dans n, il faut effacer k et modifier les indexes de plus haut niveau afin de refletter le fait que n a une nouvelle cle a la valeur la plus elevee.
14 Effacement d’un Arbre B: Regles pour l’Effacement d’une cle k d’un noeud n II Si n a exactement le nombre minimum de cles et l’un des noeuds fraternels, f, de n a peu de cles, fusionner n avec f et effacer une cle du noeud parent. Si n a exactement le nombre minimum de cles et l’un des noeuds fraternels, f, de n a des cles de plus, redistribuer en mettant certaines des cles de f en n, et modifier les noeuds de niveaux superieurs afin de refletter cette re-distribution.
15 Effacement d’un Arbre B: Example I P Z D G IM PT X Z A B C D J K L M Q R S T Y Z E F GH IN O P U V W X Probleme 1: Effacer C Probleme 2: Effacer P Probleme 3: Effacer H
16 Redistribution pendant L’Insertion La redistribution pendant l’insertion est un moyen d’eviter—ou, tout du moins, reporter—la creation de pages nouvelles. La redistribution nous permet de mettre certaines des cles debordant d’une page dans une autre page (moins pleine), plutot que de diviser un page debordante. Les arbres B* formalisent cette idee (voir diapo suivante)
17 Arbres B*: Proprietes Les proprietes d’un arbre B* sont les suivantes: Chaque page a un maximum de m descendants. Chaque page, a part la racine, a au moins (2m-1)/3 descendants. La racine a au moins deux descendants (a moins que ce ne soit une feuille). La difference principale entre un arbre B et un arbre B* est donc la deuxieme regle.
18 Arbres B Virtuels Le fait qu’un arbre B a trois niveaux ne veut pas necessairement dire qu’il faut faire trois acces au disque afin de recuperer une cle On peut faire mieux que cela en gardant certaines parties de l’arbre B en memoire. On peut creer une memoire tampon pour pages (noeuds) de l’arbre B qui peut garder plusieures pages en memoire (5, 10 ou, peut-etre, encore plus). Si la page desiree n’est pas en memoire, on va la chercher sur storage secondaire et l’amene en memoire, remplacant par ce faire une autre page. On peut utiliser une strategie de remplacement telleque LRU ou une strategie basee sur la hauteur de la page.
19 Arbres B et Enregistrements et Cles a Longueur Variable Les arbres B peuvent etre etendus de maniere a permettre a la longueur des cles et des enrgistrements de varier. Dans ce case, un arbre B doit etre modifie et n’a plus d’ordre m clairement defini comme avant. Il faut donc de nouvelles conventions pour cet arbre plus flexible. Ceci demontre que la structure de l’arbre B discute dans cette section n’a pas besoin d’etre aussi rigide que notre presentation l’a suggere. Notre discussion etait seulement un point de depart.