2017-10-02 3 views
0

Ich habe studiert B-Bäume für die Speicherung von etwa 10k Strings-Datenbank jede Zeichenfolge mit einer eindeutigen ID, die ich denke, kann als mein Schlüssel handeln. Aber jede Implementierung, die ich gesehen habe, zeigt nur Schlüssel in einem B-Baum, nicht die Werte. Ich bin sicher, dass B-Tree, wenn er als Karte fungiert, Werte mit Schlüsseln verknüpfen muss, aber ich kann nicht verstehen, ob sie innerhalb des Knotens des Baums zusammen mit einem Schlüssel gespeichert wurden. Beispielsweise.Wo sind die Werte für B-Tree Schlüssel gespeichert?

 ||key3| |key6|| 
    /  |   \ 
    / ||key4| |key5|| \ 
/      \ 
||key1| |key2||   ||key7| |key8|| 

 ||k3,v3| |k6,v6|| 
    /  |   \ 
    / ||k4,v4||k5,v5|| \ 
/      \ 
||k1,v1| |k2,v2||   ||k7,v7| |k8,v8|| 

Ich bin nicht sicher, wie und wo die Werte gespeichert sind.

Antwort

0

In jedem einzelnen Knoten, sowohl interne und Blatt, zusammen mit Schlüsseln.

In einem B + -Tree sind alle Schlüssel in Blattknoten verfügbar. Wenn Sie also einen Blattknoten aufteilen, können Sie die Schlüssel nur an Ihre Eltern übergeben und die Werte für sich behalten. In einem B-Baum wiederholen sich die Schlüssel jedoch nicht, Sie müssen also Werte in internen Knoten haben.

Sie können eine Schlüssel/Wert-Map verwenden und bei baumspezifischen Funktionen über ihren Schlüssel iterieren. Da Sie Ihre Schlüssel sortiert halten müssen, sollten Sie eine sortierte Map verwenden, wie TreeMap in Java oder einfache std :: map für C++. (Python hat so etwas in der Standardbibliothek nicht.) Sie helfen auch dabei, einen Knoten einfach aufzuteilen und Dinge auf einen neuen Knoten zu übertragen.

+0

Also, wenn ich 10K Satz von Strings speichern möchte, hat jeder Satz rund 10 Wörter und eines der Wörter ist Unique ID, die 2. Darstellung ist richtig, um einen B-Baum zu bauen? Ja, ich freue mich darauf, eine sortierte Implementierung zu machen. Kann ich einen SortedHashMap-internen Knoten verwenden, um die Schlüssel zu speichern? Können Sie auf irgendeine Visualisierung hinweisen, um den Aufbau von B-Tree für Informationen zu verstehen, die in einem externen Speicher wie einer Datei und nicht im Hauptspeicher gespeichert sind? – djay

+0

IMO, zweite Darstellung stimmt. Habe noch nie von SortedHashMap gehört, über welche Sprache sprichst du? Soweit ich weiß, ist es unmöglich, Hash-Karten zu sortieren. zur Visualisierung, https://www.cs.usfca.edu/~galles/visualization/BTree.html. Das wurde uns beigebracht. –

+0

von SortedHashMap, ich betone zu Zweifel, dass ich B-Tree-Knotenschlüssel in sortierter Reihenfolge speichern kann, dh. aufsteigende Reihenfolge, aber die Schlüssel werden benötigt, um durch Hashing zu gehen, da sie lange Ganzzahlen der Länge mehr als 20 sind. Ein anderer Ich schaute auf TreeMap, es scheint alles zu tun. Ich sagte vorher außer Hashing. – djay

Verwandte Themen