Auswahl-Abfragen mit Hilfe von B-Bäumen und B+-Bäume

Ich Schreibe ein Programm zum abrufen der Anzahl der Objekte in einem bestimmten Bereich, und ich bin mit der B-Baum-Datenstruktur zu implementieren, meine Lösung ist, als die Anzahl der Objekte, die nicht in den Arbeitsspeicher passen. Stieß ich auf mehrere Artikel, die sagen, dass B+ – Bäume sind weit überlegen, als B-Bäume für Bereichsabfragen und werden von allen gängigen Datenbank-Implementierungen. Ich war nicht in der Lage zu verstehen, warum B+ – Bäume sind besser als bei den B-Bäumen, da alle Daten auf dem Blatt und es wird h (Höhe des Baumes) Festplatten-Zugriffe abrufen der Knoten, und führen Sie die Auswahl-Abfrage, während in der B-Baum der Intervall kann sich auf den übergeordneten Knoten und die Festplatten-Zugriffe würden somit minimiert. Außerdem, wenn ich eine Abfrage wie die Rückkehr # von Objekten eines bestimmten Schlüssel, dann kann ich in der Lage sein zu suchen, den Schlüssel vor dem Abstieg ganz nach unten, um die Blätter im B+ – Bäume. Warum müssen Sie dann sagen, dass B+-Bäume effizienter als B-Bäume für range-Abfragen? Wenn ich ein Programm schreiben, Bereichs-Abfragen sollte nicht mit B-Bäumen werden die richtigen Daten Struktur? Vielen Dank im Voraus für Ihre Antworten!

InformationsquelleAutor jackalope | 2016-06-09



One Reply
  1. 1

    Praktische B-Baum und B+ – Baum-Implementierungen neigen dazu, haben die Knoten eine Feste Größe in byte, dass ist ausgewählt so passen Sie die Seitengröße der Architektur oder einer anderen Vorrichtung, wie die cluster-Größe auf der Festplatte. Ein typischer Wert wäre 4096 bytes.

    Einen B+ – Baum passen viel mehr Schlüssel in einem internen Knoten, weil es keinen Platz für die Daten zu erfassen. Das gibt die höhere Anzahl der Verzweigungen (niedrigere Baumhöhe) und bessere cache-Nutzung, da ein Satz von index-Seiten (interne Knoten) ‚Deckel‘, die mehr Abfragen, als wäre der Fall für einen B-Baum.

    Ein zweiter Vorteil des B+ – Bäumen ist, dass die Schlüssel in internen Knoten sind nur für das routing von Suchanfragen auf dem rechten Blatt. Sie brauchen nur zu trennen, die Dinge auf den Links von den Dingen, die Ihr Recht, aber Sie haben nicht zu entsprechen, die tatsächliche Aufzeichnung Schlüssel. Dies bedeutet, dass Sie können oft verkürzt werden, und es bedeutet auch, dass Löschvorgänge nicht weitergegeben werden aus der Blatt-Ebene in den index-layer (d.h., sobald Sie eine gelöschte Schlüssel vom Blatt, Sie sind fertig – keine Notwendigkeit, alles löschen aus inneren Knoten, außer für das, was passiert natürlich während des rebalancings).

    Auch, in einem typischen B+ – Baum die Blatt-Knoten Zeiger auf den linken und rechten Geschwister. Dies bedeutet, dass Sie können Durchlaufen über einen Bereich von Datensätzen zu Fuß eine verkettete Liste von Seiten, statt nur die knifflige iteration Logik typisch für B-Bäume.

    in der B-Baum der Intervall kann sich auf den übergeordneten Knoten und die Festplatten-Zugriffe würden somit minimiert

    Zu legen, dass die Theorie, um sich auszuruhen, abzuschätzen, wie viele Schlüssel insgesamt befinden sich in den inneren Knoten eines B-Baum, und wie viele Schlüssel insgesamt befinden sich in den Blattknoten. Dieses Verhältnis sagt Ihnen, wie oft kann die Suche beenden früh, vor dem Abstieg alle den Weg in die Blattebene. Hinweis: die early-out-Szenario ist nur anwendbar für Abfragen, in denen die genaue Schlüssel passiert, präsent zu sein im Baum; sonst wird eine anständige zu der Blattebene ist unvermeidlich.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.