• Aucun résultat trouvé

Structures arborescentes

4.4 Structures de stockage et d’accès

4.4.1 Structures arborescentes

Une gestion efficace de la mémoire auxiliaire est exigée

Les structures de stockage dans les systèmes de bases de données relationnelles doivent être conçues de manière à gérer efficacement les données stockées sur des unités de mémoire secondaire. Avec des bases de données de grande taille, l'application pure et simple des structures de mémorisation des données résidentes au stockage externe de données sur des unités de mémoire auxiliaire devient problématique. En d'autres termes, nous devons modifier ces structures de mémorisation ou en concevoir de nouvelles afin de

WRITE_SET(TRX_2)

READ_SET(TRX_1)

a

b

c

minimiser le nombre d'accès aux unités de mémoire externe lors des opérations de lecture ou d'écriture de données dans les tables.

Choix de la structure arborescente

Les structures arborescentes conviennent au stockage des clés d'accès ou des enregistrements de données. Lorsque le volume de données devient important, nous associons les nœuds (le nœud racine et les nœuds intermédiaires) et les feuilles d'un arbre non plus à des clés ou des enregistrements de données, mais à des pages de données entières (data pages, en anglais). Il faut ensuite parcourir l'arbre en question pour localiser un enregistrement de données recherché.

Choix de l’arbre binaire

Pour la gestion des données en mémoire centrale, nous construisons normalement des arbres binaires dans lesquels le nœud racine et chaque nœud intermédiaire se scinde en deux sous-arbres.

Ce type d'arbres ne peut pas être appliqué tel quel aux grandes bases de données pour stocker des clés d'accès ou des enregistrements de données. La profondeur de l'arbre binaire augmente particulièrement vite s'il faut stocker des tables volumineuses. Or, les arbres de grande taille sont inefficaces pour chercher et lire des tables stockées sur des unités de mémoire externe, car ils demandent un nombre d'accès aux pages important.

Comment réduire les accès ?

La hauteur (ou la profondeur) d'un arbre qui mesure la distance entre le nœud racine et les feuilles détermine le nombre d'accès aux unités de mémoire externe. Pour réduire le plus possible la fréquence des accès externes dans un système de bases de données, nous cherchons à construire des structures de stockage arborescentes qui vont croître en largeur plutôt qu'en profondeur. Une importante structure arborescente de cette catégorie s'appelle arbre multiple, dit aussiarbre B (arbre équilibré) (Figure 4-11).

Un arbre multiple comporte plus de deux sous-arbres

Dans un arbre multiple, le nombre de sous-arbres partant du nœud racine ou d'un nœud intermédiaire est généralement supérieur à deux. Les pages de données associées aux nœuds intermédiaires ou aux feuilles ne doivent pas rester vides. Il faut autant que possible les remplir de valeurs d'une clé d'accès ou d'enregistrements de données.

C'est pourquoi le taux de remplissage des pages, requis la plupart du temps, est d'au moins 50% (à l'exception de la page associée au nœud racine).

Définition de l’arbre B Arbre multiple (B-tree, en anglais)

Les deux propriétés suivantes caractérisent un arbre multiple, appelé aussi arbre B d'ordre n :

„ il est entièrement équilibré (chaque chemin connectant la racine à une feuille quelconque a une même longueur fixe) ;

„ chaque nœud (excepté le nœud racine) et chaque feuille de l'arbre possède au moins n mais au plus 2*n entrées dans la page de données associée.

La deuxième propriété de l'arbre multiple peut encore s'interpréter comme suit : d'une part, puisque chaque nœud, sauf la racine, contient au moins n entrées, il possède au moins n sous-arbres.

D'autre part, chaque nœud admet au plus 2*n sous-arbres, car il contient au maximum 2*n entrées.

Exemple d’un arbre B d’ordre 2 Considérons à titre d'exemple notre table EMPLOYÉ dont la clé

est le numéro d'employé E#. Nous utilisons cette clé pour construire une structure d'accès qui sera un arbre multiple d'ordre n = 2, représenté dans la figure 4-11. Par conséquent, les nœuds et les feuilles de l'arbre ne doivent pas contenir plus de quatre entrées. Nous admettons implicitement que les pages associées aux nœuds et aux feuilles contiennent non seulement les valeurs de la clé choisie, mais aussi des pointeurs qui renvoient aux pages de données où sont stockés les enregistrements de données proprement dits. L'arbre construit à la figure 4-11 représente donc un arbre d'accès, et non point une technique de gestion des tuples ou enregistrements de données dans la table EMPLOYÉ.

Construction d’un arbre équilibré Dans notre exemple, le nœud racine de l'arbre multiple A1

contient les quatre valeurs de la clé E# en ordre croissant, E1, E4, E7 et E19. Pour insérer une nouvelle valeur de clé E3, nous devons scinder le nœud racine parce qu’il n'admet plus d'entrées additionnelles. L'éclatement doit s'effectuer de manière à produire un arbre équilibré. La valeur de clé E4 reste associée au nœud racine, car elle partage l'ensemble des valeurs restantes en deux parties égales. Le sous-arbre de gauche contient des valeurs de clé telles que «E# est inférieur à E4» (c'est-à-dire E1 et E3 dans notre cas) tandis que le

sous-arbre de droite contient des valeurs satisfaisant la condition «E#

est supérieur à E4» (c'est-à-dire E7 et E19). Nous procédons de la même manière pour insérer d'autres valeurs de clé sans changer la hauteur de l'arbre.

Pour rechercher une valeur de clé particulière, le système de bases de données procède comme suit : soit E15 la valeur à rechercher dans l'arbre multiple A4 à la figure 4-11. Le système la compare tout d'abord aux entrées du nœud racine. E15 est comprise entre les valeurs de clé E4 et E18, le système choisit donc le sous-arbre

EMPLOYÉ

la racine Arbre A1

Scinder

approprié (qui est ici une feuille) et continue sa recherche.

Finalement, il trouve l'entrée désirée dans la feuille choisie. Dans cet exemple simple, le coût de recherche de la valeur de clé E15 équivaut seulement à deux accès pour atteindre d'abord la page associée au nœud racine et ensuite la page associée à une feuille.

La hauteur de l’arbre détermine le temps d’accès La hauteur de l'arbre multiple détermine le temps d'accès à une

valeur de clé ainsi qu'aux données identifiées par cette valeur. Il est possible de réduire le temps d'accès en augmentant le nombre de valeurs de clé (degré de branchement) par nœud dans un arbre multiple.

L’arbre B* est orienté feuilles Une autre méthode consiste à construire un arbre multiple

orienté feuilles (aussi connu sous le nom d'arbre B*). Dans cette structure, les enregistrements de données ne sont jamais stockés dans des nœuds intérieurs mais toujours dans les feuilles de l'arbre. Tous les nœuds contiennent uniquement des valeurs de clé afin de réduire le plus possible la profondeur de l'arbre.