Für einen B-Baum der Ordnung m muss jeder Knoten außer der Wurzel m-1 bis 2m-1 Elemente enthalten, wobei jedes Element mindestens ein Schlüssel und möglicherweise auch einige zusätzliche Daten (z. B. ein Wert) ist. Dennoch muss jeder Knoten eine konstante Gesamtgröße aufweisen, die ausgewählt wird, um eine gute Leistung auf dem zugrunde liegenden Blockgerät bereitzustellen. Was passiert also, wenn Ihre Elemente variable Größe haben?Wie werden B-Baum-Invarianten beibehalten, wenn Elemente in der Größe variieren?
SQLite3 scheint für Anheften zusätzlichen Block große Stücke auf seinen Knoten über ein System zu haben, und MySQL können Sie die Größe Ihrer Datensätze deklarieren (zB können Sie Ihre Felder eingeben nicht nur Zeichenfolgen sein, aber Strings unter gewissen Größe) . Welche anderen Lösungen gibt es? Und was denken die Leute darüber, wenn sie sich gegenseitig auswählen?
bearbeiten: Und durch den vorhergehenden Satz, ich meine, was Datenbank-Entwickler darüber nachdenken, wenn entscheiden, ihre B-Bäume einen Weg, über den anderen zu implementieren?
(I in einem Datenbanken Natürlich bin gerade jetzt, also ist ich mehr daran interessiert, in der Theorie und Design Winkel als in Details von bestimmten Systemen.)
Ah, richtig, ich meine, "was denken Datenbank-Entwickler über die Implementierung ihrer B-Bäume auf die eine oder andere Weise?" Editiert für Klarheit jetzt, danke! – Wang
B-Tree's sind mit der Erstellung von Indizes verbunden. Entwickler müssen das Konzept von Clustered- und Non-Clustered-Indizes für T-SQL, Hash- und b * Tree-Cluster und Hash-Cluster für Oracle verstehen. Indizes sind wichtig zu verstehen und ich empfehle Ihnen, ein Buch zu finden, das Kapitel zu diesem Thema enthält. –