7
votes

Les btrees et les arbres B + stockent-ils uniquement des données aux feuilles?

Les arbres B et B + ne stockent que des données à leurs feuilles? Je suppose qu'ils utilisent leurs nœuds internes pour rechercher les données requises.

est que c'est le cas ou stockez-ils des données dans chaque nœud?


1 commentaires

B + arbres stocker uniquement les données dans la feuille. Les arbres B peuvent stocker des données dans des nœuds internes.


3 Réponses :


1
votes

Toutes les données sont dans les feuilles.

wiki sur B + .


0 commentaires

7
votes

nœuds non-feuillets "enregistrements" contiennent

  • Un pointeur (un nœud "adresse" de Tremples) à un nœud au niveau suivant dans l'arborescence
  • la valeur de la clé du premier (ou de la dernière, en fonction de la mise en œuvre) enregistrée dans ce nœud

    ces «enregistrements» non-feuille sont répertoriés dans l'ordre des touches afin que, en balayant (ou à la recherche binaire dans), un nœud non-feuille, on sait quel nœud au niveau suivant vers le bas peut contient le Valeur recherchée.

    Les enregistrements de nœuds de feuilles contiennent des enregistrements de données complètes: la valeur clé et quoi que ce soit d'autre.

    Par conséquent, les données "fortes>" réelles "ne sont contenues que dans les nœuds de feuilles, les nœuds non-feuilles ne contiennent que [une copie de] les valeurs de clé. pour une très petite proportion des données (cette proportion dépend du nombre moyen d'enregistrements de données trouvés dans un nœud feuille).

    Ceci est illustré dans l'image suivante du Article Wikipedia sur B + Arbres simple BTREE

    Le nœud non-feuille, en haut, (le seul dans cet arborescence simpliste) ne contient que deux enregistrements de nœud non-feuillettes, chacun avec une copie d'une valeur de clé (couleur bleuâtre) et un pointeur sur le nœud correspondant. (couleur grise). Cet arborescence n'a que deux niveaux, donc les "enregistrements" dans le nœud racine pointent sur les nœuds de feuilles. On peut imaginer qu'il existe des niveaux supplémentaires (au-dessus de l'arbre supérieur illustré ci-dessous, appelez-le le "3-5 noeud"); Si tel était le cas, le nœud ci-dessus contiendrait (avec d'autres enregistrements similaires), un enregistrement avec une valeur de clé 3 avec un pointeur sur le nœud "3-5".
    Notez également que seules les valeurs de clé 3 et 5 sont contenues dans des nœuds non-feuillettes (c'est-à-dire que même toutes les valeurs de clé sont reproduites dans les nœuds non-feuilles).
    BTW dans cet exemple, les nœuds non-feuilles contiennent la clé de l'enregistrement dernier dans le nœud suivant (fonctionnent également si l'enregistrement premier a été utilisé à la place, une légère différence dans le manière que la logique de recherche est ensuite implémentée).

    Les nœuds de la feuille contiennent la valeur de la clé (en couleur bleuâtre aussi) et l'enregistrement de données correspondant (D1, D2 ... montré en gris). Le pointeur de Red-ISH montré à la fin de chaque nœud de la feuille sur le nœud de la feuille suivant, c'est-à-dire celui contenant l'enregistrement de données très suivant dans l'ordre clé; Ces pointeurs sont utiles pour "numériser" une gamme d'enregistrements de données.


0 commentaires

1
votes

Il y a une certaine confusion sur les arbres et les arbres B +. B + Arbres stockez uniquement les données sur les nœuds de feuilles comme des pointeurs. Cela signifie que les données doivent être stockées ailleurs. Btrees peut stocker des données sur chaque nœud. Il ya des avantages et des inconvénients pour chacun. J'ai remarqué que certains sites montrent des btrees exactement les mêmes que les arbres B +. En général, Btrees vaut mieux tenir les données réelles et les arbres B + sont beaucoup plus efficaces en tant qu'index.


0 commentaires