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.
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
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. –
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