Ich bin ziemlich vertraut mit einem B-Baum, da ich die Datenbanken hauptsächlich mit Strom, Klimaanlage und Festplattenspeicher versorgen muss. Ich verbinde mich mit einer doppelten (doppelten [dh ey]?) Verknüpften Liste.
Heute erwähnte einer der Entwickler beim Mittagessen einen R-Baum.
Ich hüpfte auf Wikipedia und fing an zu lesen. Es klang schrecklich wie ein größerer B-Baum. Leider ist es schwierig zu verstehen, worüber einige meiner Mitarbeiter sprechen, wenn sie keinen tiefen mathematischen Hintergrund haben.
Ich hatte gehofft, jemand könnte ein paar Unterschiede zwischen einem B-Baum und einem R-Baum klären. Ich werde die Jungs wahrscheinlich sowieso fragen, aber es gibt keine Garantie, dass sie meine Frage beantworten. Höchstwahrscheinlich werden sie anfangen, über Gott weiß was zu streifen. . .
quelle
Antworten:
Ein R-Baum kann als Verallgemeinerung eines B-Baums angesehen werden. Wenn ein B-Baum einen O (log n) -Zugriff über einen "begrenzten Bereich" der darin enthaltenen Schlüssel bereitstellt, bietet ein R-Baum einen O (log n) -Zugriff über einen "K-dimensionalen Bereich" der darin enthaltenen Schlüssel.
Wenn Sie Postleitzahlen Kreisnamen zuordnen möchten, können Sie einen B-Baum verwenden, da Sie ihn fragen können: "Was sind alle Landkreise mit Postleitzahlen zwischen 60000 und 61000?" Ein B-Tree wäre jedoch schlecht geeignet, um GPS-Koordinaten für Abfragen wie "Was sind alle Grafschaften innerhalb von 100 Meilen von Chicago?" Zu Kreisnamen abzubilden, da er seine Schlüssel nur in einer einzigen Dimension bestellt. Ein R-Tree teilt seine Schlüssel nach überlappenden Begrenzungsrahmen auf. Daher ist es eine natürliche Möglichkeit, Schlüssel zu speichern, wenn Sie in mehreren Dimensionen abfragen müssen.
quelle
Die meisten Baumstrukturen können auf eine Art verknüpfte Liste reduziert werden, solange Sie ignorieren, wie die Liste aufgebaut ist (insbesondere, wie Elemente hinzugefügt und entfernt werden und wie die Knoten gegebenenfalls neu ausgeglichen werden). Es ist im Wesentlichen der Einfüge- / Lösch- / Abrufalgorithmus, der eine Datenstruktur von einer anderen unterscheidet.
Knoten in einem R-Baum enthalten im Allgemeinen einen Begrenzungsrahmen, mit dem Sie Standorte effizient indizieren können, wenn Sie nach Datensätzen "in der Nähe" eines bestimmten Standorts suchen möchten. Elemente in einem B-Baum haben eine einfachere Reihenfolge; Sie können direkt vergleichen, ob etwas größer oder gleich einem anderen Element ist. In einem R-Baum dient jeder Eintrag dazu, zu bestimmen, welche Elemente in einem Begrenzungsrahmen enthalten sind.
Mit einem B-Tree können Sie effizient nach bestellbaren Elementen im Sekundärspeicher (wie einer Festplatte) suchen, und mit einem R-Tree können Sie effizient nach Elementen suchen, die sich "an" oder "in der Nähe" eines bestimmten Punkts oder Begrenzungsrahmens befinden im sekundären Speicher.
quelle