web-dev-qa-db-fra.com

Quel serait le nombre maximum d'enregistrements pouvant être indexés avec un arbre B de trois niveaux? B + arbre?

J'apprends des organisations de structure d'arbres dynamiques et comment concevoir des bases de données.

Considérez un SGBD avec les caractéristiques suivantes:

  • pages de fichiers avec taille 2048 octets
  • pointeurs de 12 octets
  • hauteur de page de 56 octets

Un indice secondaire est défini sur une page de 8 octets. Quel serait le nombre maximum d'enregistrements pouvant être indexés avec un arbre B de trois niveaux? Et avec trois niveaux B + arbre?

Voici deux exemples de ces arbres:

B tree

B+ tree

Ma tentative

B + arbres

J'ai lu que

B + arbres sont moins profond qu'un arbre B. Parce que seul l'ensemble de la touche la touche la plus élevée noté comme k dans chaque noeud de feuille, sauf le dernier, est stocké dans les nœuds non-feuilles, organisés comme un arbre B. Relational DBMS Internals, Chapitre 5: Organisations de structure des arbres dynamiques, p.46

Par conséquent, il y a une différence, quelque chose que nous stockons dans les nœuds d'un arbre B est stocké dans les feuilles d'un arbre B +. Ainsi, à mon esprit c'était (M-1)h ( m étant la commande et H Étant la hauteur), à mesure que chaque nœud contienne au plus (M-1) clés à un autre nœud. Mais cela n'est pas lié au nombre d'octets.

Pourtant, j'ai trouvé dans le livre mentionné ci-dessus le tableau suivant:

tree minmax height according to the size of pages

Donc serait-il 203.7 Nombre d'enregistrements?

B arbres

Pour eux, dans la mesure où certaines valeurs sont stockées dans le nœud, je dois faire une division par le nombre de nœuds. Et je suis coincé là-bas.

De nombreuses options de mise en œuvre sont disponibles pour les développeurs des algorithmes d'arbres BTREE et B + qui affecteront la réponse ici. Dans une barde simpliste, tous les nœuds ont la même taille et lorsqu'un noeud déborde de la scission en deux nœuds à moitié plein, aucune autre redistribution de clé ne se produise. Comme il sera en moyenne un nombre de nœuds de distribution uniforme entre à moitié plein et complet, le facteur de remplissage moyen sera de 75%. Vous pouvez calculer tout le reste de cela.

Des implémentations réelles peuvent toutefois redistribuer des clés dans un ou deux nœuds adjacents supplémentaires, ce qui augmente le facteur de remplissage moyen. De plus, une implémentation peut détecter (ou être notifiée) qu'une insertion en vrac de touches pré-triées se produit et modifiera l'algorithme divisé pour laisser une traînée de nœuds complets avec uniquement le nœud final incomplet; Les avantages de ce comportement devraient être évidents.

Dans un arbre B +, toutes les valeurs essentielles sont présentes dans les nœuds de feuilles - de sorte qu'un arbre B + aura autant de nœuds de feuilles que l'équivalent BTREE a des nœuds globalement. L'arborescence B + aura également des nœuds internes contenant les clés utilisées comme des séparateurs et la même répétition des valeurs survient dans l'arborescence. Les implémentations réelles peuvent toutefois tronquer ces clés pour s'adapter davantage (ce qui modifie le ventilateur radicalement, en particulier au niveau de la racine), et bien sûr la redistribution de la clé peut également être effectuée.

De nombreuses implémentations utilisent des nœuds racines agrandies et certaines autorisent également d'autres nœuds de se développer dans des pages supplémentaires, afin de réduire les tracas de la redistribution des clés et de la touche, et de gérer de très grandes valeurs clés.

Enfin, de nombreuses implémentations ont abrégé le processus de fusion de nœuds sur la suppression, au point de ne pas supprimer les nœuds qui deviennent vides. Il existe un certain nombre de cas de bord méchants avec des arbres B + concernant la fusion (considérez où vous supprimez une petite clé d'une feuille, où cette clé a été utilisée comme séparateur; maintenant vous devez remplacer ce séparateur avec la valeur suivante pouvant être grande et provoque la scission du nœud interne!), il peut donc être plus facile de simplement le laisser tomber, et tout impact de la performance n'est pas une préoccupation. Donc, le facteur de remplissage réel dépend non seulement des clés, mais également de l'histoire.

Le résultat est que la question que vous essayez de répondre n'est jamais demandée à un intérêt académique. Il n'est presque jamais pertinent pour de vraies implémentations.

1
cliffordheath