Räumliche Indexstrukturen

Werbung
Räumliche Indexstrukturen
Geoinformationssysteme
Speicherung geometrischer Objekte
●
Punkte
●
Linien/Linienzüge
●
Polygone
Geoinformationssysteme
Spezielle Anfragen:
Wo befindet sich der zu Punkt X am nächsten
gelegene Punkt?
Welche Polygone grenzen an das Polygon, in
dem Punkt X liegt, an?
Geoinformationssysteme
●
●
Klassische, relationale Datenbanken nicht
geeignet
Keine Möglichkeit, effizient die gewünschten
Queries auszuführen
Lösung:
Räumliche Indexstrukturen
Indexstrukturen
●
●
●
Keine lineare Ordnung vorhanden, diese wird
aber zur Indexierung benötigt
Datenraum wird in Blöcke zerlegt
Speicherung der Blöcke in einem Index mit
Nachbarschaftserhaltung
Zerlegung in Blockregionen
●
Keine simple Aufgabe
●
Probleme vor allem bei Polygonen und Linien
verschiedene Lösungsmöglichkeiten:
●
Clipping
●
Punkttransformationen
●
Überlappung
Clipping
●
Objekte werden jedem Block zugewiesen, den
sie schneiden
Nachteil:
●
Duplikate entstehen
Punkttransformationen
●
Überführung eines n-dimensionalen Rechtecks
in einen 2n-dimensionalen Punkt möglich
Nachteil:
●
Schlechte Nachbarschaftserhaltung durch
Umwandlung
Überlappung
●
Das Überlappen von Blockregionen wird erlaubt
●
Duplikate werden vermieden
●
●
●
Leicht schlechtere Suchperformance, da zum
Teil mehrere Blöcke durchsucht werden
müssen
Ggü. Clipping vereinfachtes Update von
Objekten
Performance hängt wesentlich vom
verwendeten Algorithmus zur Aufteilung ab
Raumfüllende Kurven
●
Blöcke müssen unter Beibehaltung der
Nachbarschaft von mehreren Dimensionen auf
eine gemappt werden
Lösung:
Raumfüllende Kurven
Z-Kurve (Z-Order)
●
●
●
Sehr einfach zu
berechnen
Liefert gute Nachbarschaftserhaltung
Kann problemlos auf
beliebig viele
Dimensionen
erweitert werden
Z-Kurve (Z-Order)
Berechnung durch Interleaving:
(x1x0b, y1 y0b)
x1y1x0y0b
Beispiel:
(5, 3)
(0101b, 0011b)
39
0010 0111b
Z-Kurve (Z-Order)
Nachteil:
●
Nur Räume mit gleicher Ausdehnung in jede
Dimension ergeben lückenlosen Index
Hilbert-Kurve
●
●
Erfordert wesentlich
mehr Rechenleistung
zur Berechnung
Bessere Nachbarschaftserhaltung ggü.
Z-Kurve
Datenstrukturen
Möglichkeiten:
●
Quadtrees
●
R-Bäume und Varianten
Quadtree
●
●
Einfache Möglichkeit, geometrische Objekte
effizient zu speichern
Wird in Verbindung mit der Z-Order genutzt
Quadtree
●
●
Kompletter Datenraum wird zunächst als
einzelner Block definiert
Beim Hinzufügen von Elementen wird ein Block
in 4 neue Blöcke aufgeteilt, wenn Maximalzahl
innerhalb des Blocks überschritten wurde
Quadtree
Vorteile durch Abspeicherung in Z-Order:
●
●
●
Indizes der Parent- und Child-Knoten durch BitShifting zu errechnen
Auch Indizes der Siblings können mit wenigen
bitweisen Operationen ermittelt werden
Auf den eingelesenen Pages befinden sich
Knoten, die auch im Raum nah beieinander
liegen
Quadtree
Nachteil:
●
Clipping wird benötigt, was zu Duplikaten führt
und den Baum u.U. Stark vergrößert
R-Baum
●
Verbindet Duplikatfreiheit mit kurzen Suchzeiten
●
Ist Höhenbalanciert (an den B-Baum angelehnt)
●
Knoten werden durch das minimale umgebende
Rechteck (Bounding-Box) spezifiziert
R-Baum
Suchen:
●
●
●
Eingabe für die Suche: Rechteck
Ermitteln, mit welchen Knoten sich das
Rechteck schneidet
Rekursives Traversieren dieser Knoten
R-Baum
Einfügen:
●
●
●
●
Von der Wurzel beginnend überprüfen, welche
der Bounding-Boxes am wenigsten vergrößert
werden müsste, um das Objekt einzufügen
Bei gleicher Eignung von Knoten wird derjenige
mit der kleinsten Fläche ausgewählt
Fortsetzen des Verfahrens bis zum Blatt
Ist kein Platz mehr im Blatt vorhanden, wird ein
Split durchgeführt
R-Baum
R-Baum
R-Baum
R-Baum
Split:
●
●
●
Ziel ist es, 2 Blätter/Knoten zu erstellen, die
eine minimale Gesamtfläche der BoundingBoxes aufweisen
Exakte Methode, jede mögliche Kombination
vergleichen, unbrauchbar, da Laufzeit O(2M)
Heuristiken möglich
R-Baum
Heuristik 1:
●
●
●
●
Auswahl der 2 Elemente, die, wenn sie zu einer
Gruppe gehören würden, den meisten Platz
verschwenden
Zuteilung dieser Elemente zu den 2 neuen
Gruppen
Hinzufügen des Elements, das in einer Gruppe
den meisten unnützen Leerraum erzeugen
würde
Laufzeit: O(M²)
R-Baum
Heuristik 2:
●
●
●
Die 2 Elemente, welche die ursprüngliche
Bounding-Box aufspannen werden den 2 neuen
Gruppen hinzugefügt
Jedes weitere Element wird der Gruppe
hinzugefügt, dessen Bounding-Box dadurch am
wenigsten wächst
Laufzeit: O(M)
R-Baum
●
Laut GUTTMAN besteht kein nennenswerter
Unterschied zwischen der Qualität beider
Heuristiken, weshalb letztere auf Grund der
geringeren Laufzeit empfohlen wird
R*-Baum
●
BECKMANN stellt fest, dass Minimierung der
Fläche bei einem Split nicht immer optimal ist
Vorschlag für neue Minimierungskriterien:
●
Minimierung der Fläche der Bounding-Boxes
●
Minimierung der Überschneidungen
●
Minimierung des Umfangs
●
Verbesserung der Speichernutzung
R*-Baum
●
●
●
Weiterer Vorschlag: Anstelle des
Zusammenführens unterbesetzter Knoten nach
einem Delete, werden diese komplett neu
eingefügt
Verringert ungünstige Baumstrukturen, die
durch das schrittweise Einfügen von Elementen
entstehen können
Der R*-Baum zeigt gegenüber dem R-Baum
einen deutlichen Performance-Gewinn
Herunterladen