Ich habe mich mit den Definitionen von T-Bäume und B-/B+ Bäume. Aus Veröffentlichungen im Internet habe ich entnommen, dass B-Bäume in hierarchischen Speichern wie Festplattenlaufwerken und Cache-Speicher besser funktionieren.
Was ich nicht verstehen kann, ist, warum T-Bäume auch für flache Speicher verwendet wurden/werden?
Sie werden als platzsparende Alternative zu RBL-Bäumen angepriesen.
Im ungünstigsten Fall enthalten alle Blattknoten eines T-Baums nur ein Element, und alle internen Knoten enthalten die zulässige Mindestmenge, die nahezu voll ist. Dies bedeutet, dass im Durchschnitt nur die Hälfte des zugewiesenen Platzes genutzt wird. Wenn ich mich nicht irre, ist dies die gleiche Auslastung wie im schlimmsten Fall von B-Bäumen, wenn die Knoten eines B-Baums zur Hälfte gefüllt sind.
Unter der Annahme, dass beide Bäume die Schlüssel lokal in den Knoten speichern, aber Zeiger verwenden, um auf die Datensätze zu verweisen, besteht der einzige Unterschied darin, dass B-Bäume Zeiger für jeden der Zweige speichern müssen. Dies würde im Allgemeinen einen Overhead von bis zu 50 % oder weniger verursachen (im Vergleich zu T-Bäumen), je nach Größe der Schlüssel. Dies entspricht in etwa dem Aufwand, der bei AVL-Bäumen zu erwarten ist, wenn man davon ausgeht, dass es keine übergeordneten Zeiger gibt, die Datensätze in den Knoten eingebettet sind und die Schlüssel in den Datensätzen eingebettet sind. Ist dies der erwartete Effizienzgewinn, der uns davon abhält, stattdessen B-Bäume zu verwenden?
T-Bäume werden normalerweise auf AVL-Bäumen implementiert. AVL-Bäume sind ausgeglichener als B-Bäume. Kann dies mit der Anwendung von T-Bäumen in Verbindung gebracht werden?