Article de reference

Arbre B

{{Cite conference|last1=Bayer|first1=R.|last2=McCreight|first2=E.|book-title=Proceedings of the 1970 ACM SIGFIDET (Now SIGMOD) Workshop on Data Description, Access and Control -...

informatique , un arbre B est une structure de données arborescente auto-équilibrée qui maintient des données triées et permet des recherches, un accès séquentiel, des insertions et des suppressions en temps logarithmique . L'arbre B généralise l' arbre binaire de recherche , en autorisant les nœuds à avoir plus de deux enfants.

En autorisant un plus grand nombre d'enfants sous un même nœud qu'un arbre binaire de recherche auto-équilibré classique , l'arbre B réduit sa hauteur et répartit les données dans un nombre réduit de blocs distincts. Ceci est particulièrement important pour les arbres stockés sur un support de stockage secondaire (par exemple, un disque dur), car ces systèmes présentent une latence relativement élevée et traitent des blocs de données relativement volumineux ; d'où l'utilisation de l'arbre B dans les bases de données et les systèmes de fichiers . Cet avantage demeure majeur lorsque l'arbre est stocké en mémoire, car les systèmes informatiques modernes dépendent fortement des caches du processeur . Comparée à la lecture depuis le cache, la lecture depuis la mémoire après un défaut de cache est nettement plus lente.

laboratoires de recherche de Boeing , Rudolf Bayer et Edward M. McCreight ont inventé les arbres B pour gérer efficacement les pages d'index des grands fichiers à accès aléatoire. Leur hypothèse de base était que les index seraient si volumineux que seules de petites portions de l'arbre pourraient tenir en mémoire vive. L'article de Bayer et McCreight, « Organization and maintenance of large ordered index » a été diffusé pour la première fois en juillet 1970, puis publié dans Acta Informatica .

Bayer et McCreight n'ont jamais expliqué la signification du B , le cas échéant ; Boeing , balanced , between , broad , bushy et Bayer ont été proposés. À la question : « Que signifie le B dans B-Tree ? », McCreight a répondu :

Tout le monde le fait !

Vous n'imaginez pas où une simple conversation à l'heure du déjeuner peut mener. Bref, Rudy et moi étions là, à déjeuner. Il fallait trouver un nom pour le truc… On travaillait chez Boeing à l'époque, mais on ne pouvait pas l'utiliser sans consulter les avocats. Alors voilà, il y a un B.

Cela a un rapport avec l'équilibre B. Il y a un autre B.

Rudy était l'auteur principal. Rudy (Bayer) avait plusieurs années de plus que moi et avait publié bien plus de titres que moi. Voilà donc un autre B.

Et donc, à table, nous n'avons jamais réussi à déterminer s'il y en avait une qui paraissait plus sensée que les autres.

Ce que Rudy aime à dire, c'est que plus vous réfléchissez à ce que signifie le B dans B-Tree, mieux vous comprenez les B-Trees !

Définition

Selon la définition de Knuth , un arbre B d'ordre m est un arbre qui satisfait les propriétés suivantes :

  1. Chaque nœud possède au plus m enfants.
  2. Chaque nœud, à l'exception de la racine et des feuilles, a au moins ⌈ m /2⌉ enfants.
  3. Le nœud racine possède au moins deux enfants, sauf s'il s'agit d'une feuille.
  4. Toutes les feuilles apparaissent au même niveau.
  5. Un nœud non-feuille avec k enfants contient k 1 clés.

Les clés de chaque nœud non-feuille servent de valeurs de séparation pour diviser ses sous-arbres. Par exemple, si un nœud interne possède 3 nœuds enfants (ou sous-arbres), il doit avoir 2 clés : 1 et 2. Toutes les valeurs du sous-arbre le plus à gauche seront inférieures à 1 , toutes les valeurs du sous-arbre du milieu seront comprises entre 1 et 2 , et toutes les valeurs du sous-arbre le plus à droite seront supérieures à 2 .

Nœuds internes
Internal nodes (also known as inner nodes) are all nodes except for leaf nodes and the root node. They are usually represented as an ordered set of elements and child pointers. Every internal node contains a maximum of U children and a minimum of L children. Thus, the number of elements is always 1 less than the number of child pointers (the number of elements is between L−1 and U−1). U must be either 2L or 2L−1; therefore, each internal node is at least half full. The relationship between U and L implies that two half-full nodes can be joined to make a legal node, and one full node can be split into two legal nodes (if there's room to push one element up into the parent). These properties make it possible to delete and insert new values into a B-tree while also adjusting the tree to preserve its properties.
The root node
The root node's number of children has the same upper limit as internal nodes but has no lower limit. For example, when there are fewer than L−1 elements in the entire tree, the root will be the only node in the tree with no children at all.
Leaf nodes
In Knuth's terminology, the "leaf" nodes are the actual data objects/chunks. The internal nodes that are one level above these leaves are what would be called the "leaves" by other authors: these nodes only store keys (at most m-1, and at least m/2-1 if they are not the root) and pointers (one for each key) to nodes carrying the data objects/chunks.

A B-tree of depth n+1 can hold about U times as many items as a B-tree of depth n, but the cost of search, insert, and delete operations grows with the depth of the tree. As with any balanced tree, the cost grows much more slowly than the number of elements.

Some balanced trees store values only at leaf nodes and use different kinds of nodes for leaf nodes and internal nodes. B-trees keep values in every node in the tree except leaf nodes.

Differences in terminology

The literature on B-trees is not uniform in its terminology.

Bayer et McCreight (1972) , Comer (1979) et d'autres auteurs définissent l' ordre d'un arbre B comme le nombre minimal de clés dans un nœud non racine. Folk et Zoellick soulignent l'ambiguïté de cette terminologie, le nombre maximal de clés étant incertain. Un arbre B d'ordre 3 peut contenir au maximum 6 clés ou 7 clés. Knuth (1998) contourne ce problème en définissant l' ordre comme le nombre maximal d'enfants (soit un de plus que le nombre maximal de clés)

Le terme « feuille » est également sujet à controverse. Bayer et McCreight (1972) considéraient le niveau feuille comme le niveau de clés le plus bas, tandis que Knuth le définissait comme le niveau inférieur. De nombreuses implémentations sont possibles. Dans certaines architectures, les feuilles peuvent contenir l'enregistrement de données complet ; dans d'autres, elles ne contiennent que des pointeurs vers cet enregistrement. Ces choix ne sont pas fondamentaux pour le concept d'arbre B.

Par souci de simplicité, la plupart des auteurs supposent qu'un nœud peut contenir un nombre fixe de clés. L'hypothèse de base est que la taille de la clé et celle du nœud sont toutes deux fixes. En pratique, des clés de longueur variable peuvent être utilisées.

description informelle

Un arbre B Bayer & McCreight 1972 ) d'ordre 5 Knuth 1998 )

Structure des nœuds

Comme pour les autres arbres, les arbres B peuvent être représentés comme une collection de trois types de nœuds : racine , interne (ou intérieur) et feuille .

Veuillez noter les définitions de variables suivantes :

  • Tous les nœuds feuilles ont le même nombre d'ancêtres (c'est-à-dire qu'ils sont tous à la même profondeur).

Chaque nœud interne d'un arbre B a le format suivant :

structure interne des nœuds
pt 0k 0partie 1pr 0k 1partie 2pr 1...k K -1pt Kpr K -1
structure de pointeur de nœud interne
structure des nœuds feuilles
pr 0k 0pr 1k 1...pr K -1k K -1
structure de pointeur de nœud feuille
Type de nœudnombre de clésnombre de nœuds enfants
MinMaxMinMax
nœud racine lorsqu'il s'agit d'un nœud feuille0
Nœud interne
nœud feuilledegré minimal (ou facteur de branchement) de l'arbre. Un facteur de 2 garantit la possibilité de diviser ou de fusionner les nœuds.