fh-hof der r-baum richard göbel. fh-hof r-baum - literatur a. guttman 1984: "r-trees: a...
TRANSCRIPT
FH-Hof
Der R-Baum
Richard Göbel
FH-Hof
R-Baum - Literatur
A. Guttman 1984:"R-Trees: A Dynamic Index Structure for Spatial
Searching”, Proc. ACM SIGMOD Conference, Boston,
pages 47 - 57, 1984
Viele Verbesserungen und Erweiterungen, z.B.:
1987: Sellis, Roussopoulos, Faloutsos: R+-Tree
1990: Beckmann, Kriegel, Schneider, Seeger: R*-tree
1996: Berchtold, Keim, Kriegel: X-Tree:
1997: Leutenegger, Edgington, Lopez: STR Tree
Packing
Verschiedene Implementierungen in kommerziellen
Datenbanksystemen in den letzten 10 Jahren
FH-Hof
R-Baum - Konzept
Ein Knotens des B-Baums repräsentiert ein
Segment einer sortierten Liste von Werten.
Ein Knoten des R-Baums repräsentiert
Segmente in sortierten Listen jeder Spalte
Column A
Column B
FH-Hof
Eigenschaften des R-Baums
Baum mit Verzweigungsgrad größer als 2
Knoten des Baumes werden Blöcken der
Festplatte zugeordnet
Der R-Baum ist vollständig balanciert
Algorithmen für das Einfügen und Löschen sind
ähnlich wie beim B-Baum
Suchverfahren entspricht dem allgemeinen
Suchansatz
FH-Hof
Beispiel für einen zweidimensionale R-Baum
X
Y
FH-Hof
Einfügen eines Punktes
Bestimme mit Hilfe des Suchverfahrens ein
Blattknoten für den neuen Punkt.
Falls verschiedene Pfade existieren (aufgrund
von Überlappungen) dann wähle einen Pfad
aus.
Falls kein passender Nachfolger bei der Suche
gefunden wird:
Vergrößere den Hyperquader für den Nachfolger
für den die Vergrößerung minimal ist.
Falls ein Blattknoten nicht mehr ausreichend
Kapazität enthält:
Spalte den Knoten und ggf. Elternknoten auf.
FH-Hof
Löschen eines Punktes
Bestimme mit Hilfe des Suchverfahrens alle
Blattknoten für den zu löschenden Punkt
Lösche den Punkt aus einem Blattknoten.
Verkleinere bei Bedarf alle Hyperquader auf
dem Pfad zu dem betroffenen Blattknoten.
Unterschreitet der Blattknoten die minimale
Anzahl von Elementen, dann lösche diesen
Blattknoten:
verteile die Einträge auf Geschwisterknoten
oder füge die betroffenen Punkte neu ein
FH-Hof
Optionen für die Implementierung
Auswahl eines Pfades für das Einfügen
Aufteilen eines Knotens
Verteilen der Einträge für das Löschen eines
Knotens
Reorganisation eines Baums?
FH-Hof
Kriterien für die Optimierung eines R-Baums
Überlappungen:
Anzahl der Überlappungen minimieren
Volumen der Überlappungen minimieren
Volumen der Knoten minimieren
Abweichungen der Hyperquader von
Hyperwürfeln minimieren (gleiche Ausdehnung
aller Dimensionen)
FH-Hof
Aufteilen des Knotens
Ursprünglicher R-Baum führt drei Verfahren ein:
linearer Aufwand
quadratischer Aufwand
exponentieller Aufwand
Verfahren mit quadratischem Aufwand scheint
guter Kompromiss zu sein
FH-Hof
Aufteilung eines Knotens- quadratisches Verfahren
Bestimme zwei Elemente als Startpunkte (Saat)
Idee: Wähle Elemente die auf keinen Fall in
einem Knoten enthalten sein sollten
Vergleiche dazu die minimalen Hyperquader für
je zwei Elemente
Wähle zwei Elemente mit dem größten
Hyperquader
Ordne die weiteren Elemente schrittweise zu
Ordne die offensichtlichen Elemente zuerst zu
Wähle die Zuordnung mit dem geringsten
zusätzlichen Raum
FH-Hof
Wann ist eine Zuordnung offensichtlich?
Berechne für jedes Element:
den zusätzlichen leeren Raum bei Vergrößerung
des Hyperquaders der beiden neuen Knoten
die Differenz des leeren Raumes für die beiden
neuen Knoten
Element mit maximaler Differenz wird
zugeordnet
FH-Hof
Beispiel: Aufspalten eines inneren Knotens
FH-Hof
Finden der Startelemente
FH-Hof
Bewertung eines Elements
104-9-4 = 91
32-6-9=17
91-17=74
FH-Hof
Bewertung der anderen Elemente
91-17=74
85-24=61
90-24=66
86-38=48
FH-Hof
Schrittweise Zuordnung der Elemente
85-38=47
64-29=35
60-38=22
24-19=5
54-38=16
19-15=4
FH-Hof
Aufspalten eines Blatts - Spezialfall des bisherigen Verfahrens
110-6 = 104
96-5 = 91 72-7 = 65
30-30 = 0
48-35 = 13
50-24=26
40-40 = 0
80-15=65
60-8 = 52
121-4=117
104-6 = 98
94-5 = 89 68-7 = 61
30-26 = 4
44-35 = 9
46-24=22
40-36=4
80-11=69
60-12=48
94-4 = 90 68-8 = 60
26-24 = 2
44-29=15
46-18=28
36-34=2
74-11=63
54-12=52
68-4 = 64
26-20 = 6
44-25=19
46-30=16
36-30=6
70-11=59
50-12=38
26-16=10
44-21=23
46-42=4
42-36=6
66-11=55
70-12=58
64-16=48
48-21=27
42-34=8
42-24=18
66-24=42
48-20=28
50-34=16
50-24=26
50-24=2634-30=4
30-24=6
30-24=630-10=20
FH-Hof
Minimalkapazität berücksichtigen
Verfahren garantiert keine gleichmäßige
Verteilung
Sonderbehandlung bei Unterschreitung der
minimalen Kapazität
Das Verfahren wird rechtzeitig abgebrochen
Die verbleibenden Elemente werden dem Knoten
mit der kleineren Anzahl von Elementen
zugeordnet
Ergebnis ist bei Abbruch nicht optimal!
FH-Hof
Aufspalten eines Knoten: andere Verfahren
Verfahren mit linearen Aufwand
Wähle zwei Knoten bezüglich eines
vorgegebenen Kriteriums aus (mit einem
„Scan“)
Ordne die verbleibenden Knoten in beliebiger
Reihenfolge zu
Verfahren mit exponentiellem Aufwand
Überprüfe alle Verteilungen auf zwei Knoten
Aufwand im schlechtesten Fall: 2n-2
FH-Hof
Erweiterung der R-Baums für Regionen
In den Baum werden statt Punkte vollständige
Hyperquader eingefügt
Anpassung der Verfahren offensichtlich
Interessant für räumlich ausgedehnte Daten
Statt 2d Dimensionen werden nur d
Dimensionen benötigt
FH-Hof
Algorithmen für den R-Baum: Grundlagen
Darstellung von Hyperquadern für die
Suchregion und die Knoten der Indexstruktur
Volumen eines Hyperquaders
Überlappung von Hyperquadern
Umschreibender Hyperquader
Überlappungsbereich
FH-Hof
Darstellung eines Hyperquaders
Ober- und Untergrenze
Volumen
[ , ]l uc c c ,1
,
ld
l
l d
c
c
c
,1
,
ud
u
u d
c
c
c
, ,[1, ]
u i l ii d
c c
FH-Hof
Überlappung
[ , ], [ , ] :l u l u l u l ub b b c c c b c c b
FH-Hof
Umschreibender Hyperquader
,1 ,1 ,1 ,1
, , , ,
min , max ,
, ,
min , max ,
l l u u
l u
l d l d u d u d
b c b c
a a
b c b c
FH-Hof
Überlappungsbereich
,1 ,1 ,1 ,1
, , , ,
max , min ,
, ,
max , min ,
l l u u
l u
l d l d u d u d
b c b c
a a
b c b c
, , , ,[1, ] : max , min ,l i l i u i u ii d b c b c mit:
FH-Hof
Verbesserung des R-Baums: Ideen
Vermeiden von Überlappungen durch
Aufteilung von Knoten (R+-Baum)
Optimierung der Form der Hyperquader mit
möglichst gleicher Ausdehnung in jeder
Dimension (R*-Baum)
Verfahren zur Auswahl eines Pfades
Verfahren zum Aufspalten eines Knotens
Effiziente Verfahren zum Aufspalten eines
Knotens (z.B. Verfahren von Ang und Tan)
Erzeugung eines optimalen R-Baums für eine
vorgegebene Menge von Einträgen
FH-Hof
Vermeidung von Überlappungen durch Aufteilung von Knoten (R+-Baum)
FH-Hof
Lineares Verfahren zum Aufspalten eines Knotens nach Ang und Tan
Aufspaltung erfolgt bezüglich einer Dimension
Zunächst wird die Aufteilung für jede
Dimension getestet
Wähle die günstigste Dimension:
Differenz der Anzahl von Elementen in den
beiden neuen Knoten ist klein (Priorität 1)
Überlappung zwischen den beiden neuen Knoten
ist gering (Priorität 2)
Volumen der neuen Knoten ist gering (Priorität
3)
FH-Hof
Zuordnung eines Elements nach Ang und Tan
Überprüfe für jedes Element:
den Abstand des Untergrenze des Elements zu
der Untergrenze des übergeordneten Knotens
den Abstand der Obergrenze des Elements zu
der Obergrenze des übergeordneten Knotens
Ordne das Element entsprechend des
minimalen Abstands einer von zwei Mengen zu
FH-Hof
Beispiel für das Verfahren nach Ang und Tan - Teil 1
FH-Hof
Beispiel für das Verfahren nach Ang und Tan - Teil 2
?
FH-Hof
Beispiel für das Verfahren nach Ang und Tan - Teil 3
FH-Hof
Beispiel für das Verfahren nach Ang und Tan - Teil 4
FH-Hof
Erzeugung eines „optimalen“ R-Baums
Analyse einer festen Datenmenge
Erzeugung eines R-Baums für diese
Datenmenge
Optimierung bezüglich eines vorher
festgelegtem Kriteriums
Typen von Verfahren:
Bottom-Up: verschiedene
Top-Down: FH Hof
FH-Hof
Bottom-Up-Verfahren
Ordne die einzelnen Punkte den Blättern eines
R-Baums zu
Erzeuge aus den Blättern schrittweise die
weiteren Knoten der Indexstruktur
Zuordnung von Punkten zu Blättern:
über Sortierfunktion (Interleaving, Hilbertkurve,
etc.)
Sort Tile Recursive
FH-Hof
Beispiel: Zuordnung über 2D-Hilbertkurve
FH-Hof
Sort Tile Recursive - Ansatz
Idee: Teile jede Dimension in etwa gleich viele
Teile auf (Gitterstruktur)
Beispiel:
Teile eine zweidimensionale Struktur zunächst in
(n/v) Segmente auf (v: Kapazität)
Sortiere die Einträge bezüglich der ersten
Dimension und verteile die Einträge auf die
Segmente
Teile entsprechend jedes Segment in (n/v)
Blattknoten auf (Sortierung bezüglich der
zweiten Dimension)
FH-Hof
Sort Tile Recursive - Beispiel