R-Baum eine dynamische Index-Strukur für räumliche Daten

Werbung
Seminar:
Support for Non-Standard DataTypes in DBMSs im
WS 03/04 Prof. Scholl, Jens Teubner
Vortrag:
R-Baum eine dynamische Index-Struktur
für räumliche Suche
Gabriele Wilke-Müller
Universität Konstanz, FB Informatik und
Informationswissenschaft
Inhalt
1. Aufbau und Eigenschaften von R-Bäumen
2. Beispiel eines R-Baumes
3. Operationen auf R-Bäume
1. Suchen
2. Einfügen
3. Löschen
4. Updaten
5. Splitten
4. Unterschiede zum R+-Baum
5. Performance
6. Erweiterungen zum R-Baum
R- Baum eine Indexstruktur für räumliche Suche
2
Anwendungen
Herkömmliche Indexstrukturen wie B-Bäume und B+Bäume können nur eindimensionale Daten verwalten.
Für räumliche Daten bedarf es einer Indexstruktur, die
auch mehrdimensionalen Daten speichern und effizient
suchen können.
Wo werden R-Bäume angewandt?
– Molekularbiologie
– GIS Kartografie Verwaltung von 2d- und 3dLandkarten (Spatial Extender IBM)
• Finde alle Landstücke innerhalb 10 km zu einem
best. Punkt
– CAD-Anwendungen
R- Baum eine Indexstruktur für räumliche Suche
3
Aufbau R-Bäumen
• dynamische Indexstruktur (Insert, Update, Delete)
• hoch-balancierte Indexstruktur
• Die Datenstruktur besteht aus:
– Datenseiten sind die Blattknoten und speichern
Punktdaten (geclustert), Datenobjekte .
– Directoryseiten, die inneren Knoten speichern
Directory-Einträge.
Strukturiert räumliche Daten mit Hilfe von sog.
Minimum Bounding Rectangles.
R- Baum eine Indexstruktur für räumliche Suche
4
Eigenschaften von R-Bäumen (Gutmann,1984)
1. Alle Blätter haben zwischen m und M Indexeinträge.
m  M/2
2. Für jeden Index-Eintrag (I,tuple-id) in einem Blatt ist I
das kleinste umgebende Rechteck, das das ndimensionale Datenobjekt beihaltet.
3. Jeder Knoten, der kein Blattknoten ist, hat zw. m und M
Söhne.
4. Für jeden Eintrag (I,child-pointer) in einem Knoten, der kein
Blattknoten ist, ist I das kleinste Rechteck, das die
Rechtecke im Kindknoten beihalten.
5. Die Wurzel hat mindestens zwei Söhne.
6. Alle Blätter erscheinen auf derselben Höhe.
R- Baum eine Indexstruktur für räumliche Suche
5
Beispiel für einen R-Baum
R1
R3
R5
R11
root
R10
R4
R6
R1 R2 R3
R2 R7
R4 R5 R6
R8
R9
R7 R8 R9
R10 R11
root
R- Baum eine Indexstruktur für räumliche Suche
6
Operation auf R-Bäume
•
•
•
•
•
Suchen
Einfügen
Updaten
Löschen
Splitten
R- Baum eine Indexstruktur für räumliche Suche
7
Suchen
• Der Baum wird von der Wurzel zu den Blättern rekursiv
durchsucht. (ähnlich B-Baum)
• Es wird immer ein Pfad durchlaufen. Wenn der gesuchte
Datensatz nicht in diesem Unterbaum ist, wird der
nächste Suchpfad durchlaufen.
• Willkürliche Pfadauswahl
• Keine Garantie für eine gute Performance
• Worst Case alle Pfade (durch Überlappungen)
• Suchalgorithmen, um irrelevante Regionen
abzuschneiden.
R- Baum eine Indexstruktur für räumliche Suche
8
Suchalgorithmus (Gutmann, 1984)
Gegeben sei ein R-Baum mit einer Wurzel T. Gesucht werden
alle Index-Einträge, die das Suchrechteck S schneiden.
S1 Suche in Teilbäumen
Wenn T kein Blatt ist, prüfe jeden Eintrag darauf, ob dieser S
überschneidet,
 überschneidende Einträge setze Suche in deren Söhnen fort.
S2 Suche in Blattknoten
Wenn T ein Blatt ist, prüfe alle Einträge darauf, ob sie S
schneiden. Wenn ja, so ist dies der gesuchte Eintrag.
.
R- Baum eine Indexstruktur für räumliche Suche
9
Suchen
R1
R3
R5
R11
R10
R4
root
R1 R2
R6
R2 R7
R7 R8 R9
S1 Suche in Teilbäumen
R8
R9
S
root
Wenn T kein Blatt ist, prüfe jeden Eintrag darauf,
ob dieser S überschneidet,
 überschneidende Einträge setze Suche in deren
Söhnen fort.
S2 Suche in Blattknoten
Wenn T ein Blatt ist, prüfe alle Einträge darauf, ob sie S
schneiden. Wenn ja, so ist dies der gesuchte Eintrag.
R- Baum eine Indexstruktur für räumliche Suche
10
Einfügen
Typische Vorgehensweise:
• Nach best. räumlichen Kriterien wird die beste Kindseite
gesucht (ChooseLeaf)
• Der Punkt wird dort eingefügt, wenn Platz ist
• Wenn kein Platz ist, wird die Seite aufgesplittet im
Rahmen einer Überlaufbehandlung (SplitNode)
– min. Überlappung, toter Raum mögl. klein
• Vater-Intervall muss dem neuen Objekt angepaßt
werden (AdjustTree)
• Wenn durch Splitten Wurzel erreicht, erstelle Wurzel,
deren Kinder die zwei resultierenden Konten sind.
R- Baum eine Indexstruktur für räumliche Suche
11
Einfügen
R1
R2
R3
R5
R11
R10
R4
R2 R7
.i
R8
R9
R6
R2 R7
R2 R7
.i
R8
.i
R9
root
R8
R- Baum eine Indexstruktur für räumliche Suche
R9
12
Einfügen
R1
R3
R5
R11
R10
R4
R2 R7
R7-1
.i
R8
R9
R6
R2 R7
root
.i
R8
R9
root
R4 R5 R6
R1 R2 R3
R7 R7-1 R8 R9
R- Baum eine Indexstruktur für räumliche Suche
R10 R11
13
Löschen
• Blatt wird gesucht, das zu löschenden Eintrag enthält
(mit FindLeaf)
• Eintrag wird aus dem Blatt gelöscht (Delete Record)
• Baum wird verdichtet (mit CondenseTree), falls der
Knoten nun zu wenige Einträge hat.
• Die Einträge, die aus dem Blattknoten entfernt wurden,
werden wieder eingefügt (siehe Einfügen).
• Hat die Wurzel nur noch einen Sohn – Sohn wird neue
Wurzel
R- Baum eine Indexstruktur für räumliche Suche
14
Löschen
• Eintrag ist in R9
• Eintrag wird gelöscht – nichts passiert
• Zu wenig Einträge in R9 – R9 wird gelöscht
R2 R7
R8
R2
R9
R7
CondenseTree
R8
root
R1 R2 R3
R4 R5 R6
R- Baum eine Indexstruktur für räumliche Suche
R7
R8
R10 R11
15
Updaten
• Wird ein Datensatz aktualisiert wird, dass sein umgebendes
Rechteck sich verändert, so muss der Indexeintrag gelöscht,
aktualisiert und wieder neu eingefügt werden.
R- Baum eine Indexstruktur für räumliche Suche
16
Splitten eines Knotens SplitNode
• Soll ein neuer Eintrag in einen vollen Knoten erfolgen,
müssen die M+1 Einträge auf zwei Knoten aufgeteilt
werden.
• Bei nachfolgenden Suchvorgänge sollten nicht beide
Teilbäume durchsucht werden.
• Minimale Gesamtfläche der beiden Rechtecke. Der tote
Raum soll minimiert werden.
schlechter Split
R- Baum eine Indexstruktur für räumliche Suche
guter Split
17
Algorithmen für den Split
• Exhaustive Algorithmus
Alle möglichen Splits bilden, Gesamtfläche errechnen,
beste auswählen
– Anzahl der Möglichkeiten 2M-1.
• Quadratic-Cost Algorithmus Versuch Aufteilung mit
kleinen Flächen zu finden, kleinstmöglichste Fläche nicht
garantiert.
Kosten des Algorithmus O(M2)
• Linear-Cost Algorithmus
Linear zu M und zur Anzahl der Dimensionen. Ähnlich
dem Qudratic-Cost Algorithmus unterscheidet sich in
einer Prozedur.
R- Baum eine Indexstruktur für räumliche Suche
18
Quadratic-Cost Algorithmus
• M+1 Index-Einträge in 2 Gruppen aufteilen
– QS1 Wähle den ersten Eintrag für jede Gruppe
Algorithmus PickSeeds ausführen, um 2 Einträge als
erste Elemente der Gruppen zu finden.
– QS2 Prüfe ob der Algorithmus fertig ist.
Beende Algorithmus, wenn alle Einträge zugewiesen
wurden. Wenn 1 Gruppe zu wenig Einträge hat,
weise ihr die restlichen zu, um m zu erreichen.
– QS3 Wähle Eintrag und weise ihr einer Gruppe zu.
PickNext Algorithmus aufrufen, um nächsten
zuzuweisenden Eintrag zu wählen. Wähle Gruppe
nach folgender Strategie:
R- Baum eine Indexstruktur für räumliche Suche
19
Quadratic-Cost Algorithmus
Strategie:
1. Wähle die Gruppe, deren Verzeichnisrechteck am
wenigsten vergrößert werden muss.
2. Wähle die Gruppe deren Verzeichnisrechteck kleiner ist.
3. Wähle die Gruppe, die weniger Elemente hat.
4. Wähle eine beliebige Gruppe.
Fahre fort mit QS2
R- Baum eine Indexstruktur für räumliche Suche
20
Quadratic-Cost Algorithmus
• PickSeeds
Wähle die 2 Elemente, die Startelemente in den beiden
Gruppen sein sollen.
– PS1 Berechne die verschwendete Fläche des
Verzeichnisrechtecks, wenn 2 Elemente gruppiert
werden.
Für jedes Paar von Einträgen E1 und E2, erzeuge das
MBR J, welches E1.I und E2.I enthält.
d = Fläche (J) – Fläche(E1.I) – Fläche(E2.I)
– PS2 Wähle das verschwenderischste Paar
Wähle das Paar mit dem größten d.
R- Baum eine Indexstruktur für räumliche Suche
21
Quadratic-Cost Algorithmus
• PickNext
Wähle verbleibenden Eintrag, um ihm einer Gruppe
zuzuordnen.
– PN1 Berechne die Kosten für jeden noch nicht
zugeordneten Eintrag.
Berechne d1 und d2 = Flächenzuwachs des
Verzeichnisrechtecks, wenn es den Eintrag enthalten
würde.
– PS2 Wähle den Eintrag mit d1 - d2 am größten.
R- Baum eine Indexstruktur für räumliche Suche
22
Linear-Cost Algorithmus
• PickSeeds unterscheidet sich vom Quadratic-Cost Algr.
• LinearPickSeeds
– LPS1 Finde die Extremrechtecke über alle
Dimensionen
Finde in jeder Dimension die Rechtecke mit der höchsten
und der niedrigsten Koordinate.
– LPS2 Berechne Abstand und normalisiere ihn.
Über die gesamte Breite der Rechteckmenge wird wird
entlang der entspr. Dimension geteilt.
– LPS3 Wähle das extremste Paar
Wähle das Paar mit der größten normalisierten
Separierung in einer Dimension.
R- Baum eine Indexstruktur für räumliche Suche
23
PickNext
• Wähle einen verbleibenden Eintrag, um ihn einer
Gruppe zuzuordnen.
– PN1 Berechne die Kosten für jeden Eintrag
d1 = Flächenzuwachs des Verzeichnisrechtecks der
ersten Gruppe, wenn es E enthalten würde. Berechne
d2.
– PN2 Wähle den Eintrag mit d1 - d2 am größten.
R- Baum eine Indexstruktur für räumliche Suche
24
Beispiel Lineares PickSeeds
5
5
D
A
E
13
B
8
C
14
bzgl. x: A, E: d1 = 5 d1* = 5/14
bzgl. y: C, D: d2 = 8 d2* = 8/13
Da d1 < d2 wird C, D gewählt
R- Baum eine Indexstruktur für räumliche Suche
25
Kosten für Seitenzugriffe
• Effiziente Suche in R-Bäumen – minimale
Überlappungen, minimalen toten Raum
F
A
D
E
K
G
S
H
E
root
B
J
A B C
I
C
N
M
L
D E F G
H I J K
L M N
keine Überlappungen nur,
wenn Datenpunkte im voraus
bekannt.
R- Baum eine Indexstruktur für räumliche Suche
26
R+-Baum
root
F
A
D
GS
P
H
E
K
B
J
A B C P
I
C
N
M
L
D E F G
I J K L MN G H
• Struktur gleich R-Baum
• Überlappungen nicht zugelassen
(Datenrechtecke werden geteilt,
in mehreren Blättern enthalten
• + schnelleres Suchen
• - Baum wird höher
R- Baum eine Indexstruktur für räumliche Suche
27
R+-Baum Operationen
Unterschiede zum R-Baum:
Suchen: R+-Baum keine Überlappungen, schneller
Einfügen: Datenobjekt kann in mehreren Blättern
eingefügt werden. Überlaufende Knoten werden
gesplittet.
Löschen: Baum wird durchsucht, in welchem Blatt sich
Objekt befindet, dann wird es aus Blatt entfernt.
Es gibt keine minimale Anzahl m.
Evtl. mehrere Einträge löschen
Splitten: Das Splitten setzt sich abwärts fort. Bsp. Wenn A
Vater von B ist und B Vater von C, dann müssen
diese ebenfalls gesplittet werden. (da keine
Überlappungen)
R- Baum eine Indexstruktur für räumliche Suche
28
Performance
• Der Hauptvorteil von R+-Baum verbesserte
Suchleistung. Vor allem Punktanfragen (bis zu > 50 %
Zugriffsersparnis).
• Die Effizienz von R-Bäumen leidet unter wenigen großen
Datenobjekten. R+-Bäume splittet diese Datenräume in
viele kleinere.  schnellere Suchen.
• Hauptproblem des R-Baumes ist die schlechte
Performance vor allem in hochdimensionalen Räumen.
R- Baum eine Indexstruktur für räumliche Suche
29
Erweiterungen des R-Baumes
• Der R*-Baum ermöglicht weitere Effizienzsteigerung
durch einen ausgekügelten Splitalgorithmus.
• X-Baum (eXtended node) Weiterentwicklung d. R*Baums für hochdimensionale Räume. (supernodes)
• Der TV-Baum (Telescope vector) besitzt ähnliche
Struktur wie R-Baum, spezielle für Vektoren entwickelt.
• Der sog. Cell-Baum benutzt statt Rechtecken Polygone.
• SS-Baum (Similarity Search) statt MBRs werden Kugeln
als Seitenregion benutzt.
• SR-Baum benutzt die Kombination aus einem Rechtecke
(MBR) und einer Kugel als Seitenregion.
R- Baum eine Indexstruktur für räumliche Suche
30
Abschlußfolie
• R-Bäume – Indexstruktur für räumlich Daten
• Vorteil: nicht nur Punktanfragen, sondern
Bereichsanfragen.
• Gewisse Nachteile (Suchperformance) Überlappungen
– Deshalb R+-Baum
R- Baum eine Indexstruktur für räumliche Suche
31
Herunterladen