3. Z-Ordering: Eine raumfüllende Kurve für - Angizeh: Iran

Werbung
Rheinische Friedrich-Wilhelms-Universität. Bonn
Institut für Informatik III
Ausarbeitung
Unterstützung räumlicher Anfragen mit
konventionellen Indexstrukturen
Jamshid Azizi
Matr. Nr. :1125220
Bonn, Juni 2001
Betreuer: Dr. Thomas Bode
[email protected]
[email protected]
Inhaltsverzeichnis
1. Einleitung ................................................................................................................ 2
2. Anforderungen an ein räumliches Datenbanksystem ............................................. 3
2.1 Oracle8i Spatial ................................................................................................. 4
2.2 Räumliche Datenmodellierung .......................................................................... 4
2.3 Räumliche Indizierung....................................................................................... 4
2.4 Oracle8i interMedia Text Data Cartridge (OiMTDC)......................................... 5
2.5 Oracle8i Spatial Data Cartdridge ...................................................................... 6
2.6 Oracle8i Visual Information Retrieval Data Cartdridge (OVIRDC)..................... 7
3. Z-Ordering: Eine raumfüllende Kurve für Objekte mit äumlicher Ausdehnung ....... 7
3.1 Nachteile der Hybridlösung ............................................................................... 7
3.2 Z-Ordering......................................................................................................... 8
3.2.1 Z-Ordering in Punktdatenbanksystemen .................................................... 8
3.3.2 Anfrageablauf im Z-Ordeing ....................................................................... 9
3.2.3 Eine Einfache Methode für Polygondatenbanken ..................................... 10
3.3 Ein-Wert-Approximation .................................................................................. 10
3.4 Optimierte Redundanz .................................................................................... 11
3.5 Alternative Techniken...................................................................................... 12
4. Indexauswertung .................................................................................................. 12
4.1 Implementierung und Prädikatfilterung............................................................ 13
4.2 Indizierung für GIS Applikationen .................................................................... 15
4.3 Durchführung .................................................................................................. 18
5. Zusammenfassung ............................................................................................... 19
Literaturverzeichnis .................................................................................................. 21
1. Einleitung
Mit dem Anstieg der Speicherkapazitäten und Prozessorleistungen können immer größere Datenmengen verarbeitet werden, deren Charakter sich gleichzeitig verändert. Bei der Speicherung von
gleichartigen Daten beschränkten sich Abfragen nur darauf, ob die gesuchten Daten in der Datenbank vorhanden sind oder nicht, oder ob Daten mit gewissen Eigenschaften in einem vorgegebenen
Intervall liegen oder nicht. Mit zunehmender Komplexität der Daten steigen die Ansprüche an deren
Bearbeitung (Echtzeitverarbeitung, Hypertext oder Multimedia). Die stärkere Verbreitung des Internet
ermöglicht und erfordert, dass Daten nicht nur aus lokalen Datenbanken abgefragt werden. Für die
komplexe Bearbeitung von weltweiten Problemen (z.B. im Umweltbereich) ist es sinnvoll und absolut
2
notwendig, überall auf der Welt verteilte Datenbanken noch effektiver miteinander zu vernetzen. Die
Verwaltung und Bearbeitung räumlicher Datenobjekte stellt hohe Anforderungen an Datenbanken.
Solche Datenobjekte bedecken oft komplizierte Bereiche im multidi-mensionalen Raum und können
daher nicht mehr sinnvoll durch Punkte dargestellt werden. Beispielsweise repräsentieren politische
Bezirke auf Landkarten Bereiche mit einer Fläche ungleich Null im zweidimensionalen Raum. Eine
häufige Operation ist dann die Suche nach allen Objekten innerhalb eines vorgegebenen Gebietes.
Zum Beispiel alle Bezirke zu finden, die - zumindest zum Teil - innerhalb einer 50-Kilometer-Zone um
einen speziellen Punkt liegen. Diese Art der räumlichen Suche wird oft in der Computergrafik, in CADSystemen oder auch in allen Arten von geographischen Informationssystemen verwendet. Dafür
wurden mehrdimensionale Datenstrukturen entwickelt, für die eine effiziente Suchmethode benötigt
wird. Ein Index, der auf den räumlichen Daten der Objekte basiert, wäre daher wünschenswert. Die
Indexstrukturen eindimensionaler Datenbanken sind für eine räumliche Suche ungeeignet. So sind
z.B. Strukturen, die auf exakte Gleichheit von Werten aufbauen (beispielsweise Hash-Tables)
unbrauchbar, weil eine Bereichssuche benötigt wird. Strukturen, die eine eindimensionale Ordnung
von Indexwerten verwenden, wie z.B. B-Bäume [Kem 99]*, funktionieren ebenfalls nicht, weil der
Suchbereich multidimensional ist.
Um räumliche Indexstrukturen in kommerzielle Datenbankmanagementsysteme (DBMS) zu integrieren, sind herkömmliche relationale Datenbanken nicht ausreichend funktionsfähig.
In Kapitel 2 wird die Bearbeitung von räumlichen Daten innerhalb eines DBMS durch Oracel8i Spatial
erläutert.
In Kapitel 3 wird beschrieben, wie Daten aus dem multidimensionalen Raum übertragen werden.
Bisher gelang keine gute Übertragung bei Rechtecken und Polygonen. Es muss eine Objektduplizierung verhindert werden und ein Überlappen von Z-Elementen möglich sein. Ziel ist ein neues
Kodierungsschema für die Z-Elemente und eine Optimierung des Algorithmus im Anfrageprozess.
In Kapitel 4 soll gezeigt werden, wie durch die Indizierung von nutzerdefinierten Typen mit nutzerdefinierten Prädikaten eine effizientere Abfrage und Suche der nutzerdefinierten Objekte erreicht
werden kann.
2. Anforderungen an ein räumliches Datenbanksystem
Anders als
traditionelle erfordern räumliche Anwendungen, dass die Datenbanken komplexe
Datentypen wie Punkte, Linien und Polygone verstehen. Folglich müssen relationale Datenbanken in
mehreren Gebieten erweitert werden, um die Speicherung und Wiederverwendung von räumlichen
Daten zu verbessern.
Jedes Datenbanksystem, das versucht, sich mit räumlichen Anforderungen zu befassen, muss mit
folgenden Funktionen ausgestattet sein:
1. Satz räumlicher Datentypen zur Darstellung einfacher und komplizierter räumliche Datentypen
und auf diesen basierenden Operationen
2. Räumlichen Typen und Operationen an ihrer Spitze sollten Teil der Standardsprache sein
(wird für Zugang und Veränderung von nicht räumlichen Daten in diesem System benötigt).
So müsste SQL im Fall von relationalen Datenbanksystem so erweitert werden [Dit 01]*, dass
es in der Lage ist, räumliche Typen und Operationen zu unterstützen.
3
3. Die Systeme sollten Leistungssteigerungen (Indizierung) anstreben, um räumliche Abfragen,
Parallelbearbeitung u.ä. zu ermöglichen.
2.1 Oracle8i Spatial
Oracle8i Spatial [Rav&Sha 99]* stellt eine komplett offene, auf Standards basierende Architektur für
die Bearbeitung von räumlichen Daten innerhalb eines Datenbankmanagementsystems (DBMS) zur
Verfügung. Benutzer können die gleiche Fragesprache (Industrie-Standard SQL) benutzen, um auf die
räumlichen Daten und alle anderen Daten in der Datenbank zuzugreifen. Die Funktionalität, die durch
Oracle8i Spatial zur Verfügung gestellt wird, ist komplett im Datenserver
von Oracle integriert.
Benutzer der räumlichen Daten erreichen Zugang zu Standard Oracle8i, sowie eine flexible client/server Architektur und Objektfähigkeiten (robustes Datenmanagement, Datenvollständigkeit, Wiederverwendbarkeit, Sicherheitseigenschaften), welche virtuell mit anderen Strukturen nicht zu erreichen
sind. Oracle8i Spatial schafft Voraussetzungen für das Mischen von GIS- (Geographisches Informationssystem) und MIS- (Management Informationssystem) Datenspeichern und es ermöglicht,
eine einheitliche Datenmanagementstruktur für alle Daten des Unternehmens zu implementieren. Das
Oracle8i Spatial [Rav&Sha 99]* stellt eine skalierbare integrierte Lösung für Managementstrukturen
und räumliche Daten innerhalb des Oracle Servers dar.
2.2 Räumliche Datenmodellierung
Oracle8i Spatial unterstützt 3 einfache geometrische Typen und Geometrien, die aus einer Sammlung
dieser 3 Typen zusammengestellt sind. Die 3 Typen sind Punkt (i), Linie (ii) und N-Punkt Polygon (iii),
wobei all diese einfachen Typen zweidimensional (2-D) sind. Nachfolgend sollen die einzelnen Typen
definiert werden. Ein zweidimensionaler (2-D) Punkt ist ein Element, das aus zwei Ordinaten (X,Y)
besteht. Linien bestehen aus einem oder mehreren Punktpaaren, welche die Liniensegmente
definieren. Alle zwei Punkte im Liniensegment können entweder durch eine gerade Linie oder durch
einen Kreisbogen miteinander verbunden sein. Das heißt Linien können aus geraden Liniensegmenten, aus Bogensegmenten oder einer Mischung von beiden zusammengesetzt sein. Polygone
sind aus verschiedenen Linien zusammengesetzt, die einen geschlossenen Ring formen und den
Innenraum des Polygons einschließen.
2.3 Räumliche Indizierung
Die Einführung der räumlichen Indizierungsfähigkeiten in die Oracle Datenbankmaschine ist eine
Schlüsselfähigkeit. Ein räumlicher Index funktioniert mehr als jeder andere Index als ein Mechanismus, der die Suche in den Tabellen (oder Datenräumen) auf räumliche Kriterien beschränkt. Ein
Index muss in der Lage sein, effizient Fragen abzuarbeiten und Objekte in einem Datenraum zu
finden, die einen Anfrageraum überlappen. Dies wird üblicherweise durch ein Fragepolygon definiert.
Der Index muss Paare von Objekten innerhalb zweier Datenräume finden, die räumlich miteinander
interagieren.
Definition: Ein räumlicher Index in einer räumlichen Umgebung (cartridge) ist ein logischer Index
[Ra&Sh 99]*. Die Zugänge zum Index sind von der Platzierung der Geometrie in einem Koordi-
4
natenraum abhängig. Die Indexwerte befinden sich in einer anderen Domain. Indexzugänge nehmen
Werte von einer linear angeforderten Ganzzahldomain an, während Koordinaten für eine Geometrie
Paare von Ganzzahlen, floating oder Zahlen mit doppelter Genauigkeit sein können.
2.4 Oracle 8i interMedia Text Data Cartridge (OiMTDC)
OiMTDC unterstützt eine „Voll-Text-Indizierung“ von Textdokumentationen. Der Textindex ist ein
umgewandelter Index, der eine Ereignisliste für jeden Petrinetzknoten in jedem der Textdokumente
speichert. Der umgewandelte Index wird in einer indexorganisierten Tabelle gespeichert. Er wird in der
Tabelle bearbeitet (Einsetzen, Aktualisieren und Löschen) in der definierte Textindex modifiziert wird.
Die Textcartdridge definiert einen Operator „CONTAINS“ der als Input eine Textspalte und ein
Schlüsselwort nimmt. Dies kehrt als richtig oder falsch zurück, je nachdem ob das Schlüsselwort in der
Textspalte enthalten ist. Die Vorteile dieses ausgedehnten Indizierungsbearbeitungsrahmens sind
nach einer Auswertung von gleichen Anfragen vor und nach Oracle8i erkennbar.
Beispiel 1. Nehmen wir folgende Anfrage an:
SELECT * FROM docs WHERE Contains (resume, ’Oracle’);
Im Vergleich zum Zustand von Oracle8i war der Textindizierungscode (obwohl er logisch betrachtet
ein Teil vom Oracle Server war) dem Anfrageoptimierer nicht als ein gültiger Zugangspfad bekannt. In
Folge dessen wurden Textanfragen immer als zweistufige Prozesse angesehen.
1. Reihen, die die Aussage erfüllen, werden identifiziert. Die Feldnamen der Reihen von allen
relevanten Reihen werden in einer temporären Ergebnistabelle (genannt Ergebnis)
geschrieben.
2. Die Originalanfrage wird als Resultat aus der Originalanfrage (minus den Textoperator) und
der temporären Ergebnistabelle, bestehend aus allen Feldnamen der
Reihen
die den
Textoperator erfüllen wie folgt gebildet:
SELECT d.* FROM docs d, results r WHERE d.rowid = r.rid;
In Oracle 8i bei dem man die ausgedehnte Indizierungsmethode nutzt, wird die Anfrage in einem
Schritt (in Fließbandform- Einrichtung zur überlappten Befehlsausführung) durchgeführt. Der
Textindizierungsblock wird zur vorherbestimmten Zeit bei dem Kern des Programmes aufgerufen. Es
gibt keinen Bedarf für eine temporäre Ereignistabelle, weil die Feldnamen der relevanten Reihen
durch das ODCI Interface zum Server zurückströmen. Das beinhaltet gleichzeitig, dass es keine
zusätzlichen Verbindungen gibt, die in diesem Durchführungsmodell dargestellt werden müssen.
Ausserdem müssen nicht alle Reihen, welche die Textaussage erfüllen identifiziert werden, bevor die
erste Ergebnisreihe zu ihrem Benutzer zurückgekehren kann. Die Textanfrage wurde so erweitert,
dass sie I/O reduziert, weil keine temporäre Ergebnistabelle notwendig ist. Sie reduziert die benötigte
Zeit, weil die Reihen, welche die Textanfrage erfüllen nach Anforderung identifiziert werden. Die
Textanfrage wurde verbessert, weil die Zahl der Verbindungen dadurch reduziert wurde, dass es keine
5
zusätzlichen Verbindungen mit der temporären Ergebnisstabelle gibt. Die Reduzierung der Zahl der
Verbindungen bewirkt eine höhere Effektivität des Optimierers, da der Suchraum reduziert wurde. Es
konnte eine mehr als 10-fache Verbesserung der Darstellung für bestimmte suchintensive Anfragen
nach der Inegration, die den ausgedehnten Indexrahmen benutzt, festgestellt werden.
2.5 Oracle8i Spatial Data Cartdridge
Die Oracle8i räumliche cartdridge erlaubt dem Nutzer den räumlichen Index und die Anfragen an die
räumlichen Daten zu speichern. Die räumlichen Daten
modelliert. Ein räumlicher
sind als ein Objekttyp SDO-GEOMETRY
Index kann auf einer SDO- Geometrie Spalte aufgebaut werden. Der
räumliche Index besteht aus einer Sammlung von Verteilungen, die zu jedem räumlichen Objekt
dazugehören, diese Sammlung wird in der Oracle-Tabelle gespeichert. Der räumliche Index ist eine
Instanz eines räumlichen Indextypes, der die Routinen für das Kreieren, Pflegen und Befragen des
räumlichen Index definiert. Der räumliche Indextyp unterstützt einen Operator, der als „Overlaps“
bezeichnet wird. Dieser legt fest, welche Geometrien von 2 gegebenen Ebenen einander überlappen.
Beispiel 2. eine räumliche Anfrage ist von folgender Form:
SELECT r.gid, p.gid FROM roads r, parks p WHERE overlaps (r,p);
Der ausgedehnte Indizierungsrahmen hat die Nutzung des Magnetbandes (cassett) von Oracle
wesentlich verbessert. Vor Oracle8i musste der Benutzer explizit das PPISQL [Dit 01]* Paket aufrufen,
um einen Index zu kreieren oder den räumlichen Index zu pflegen, welcher der DML-(Data
Manipulation Language) Operation zur grundlegenden räumlichen Tabelle folgt.
Mit diesem Rahmen
wird der räumliche Index impliziet gepflegt, so als wäre er ein eingebauter Index. Auch mit dem ausgedehnten Indizierungsrahmen wird die Logik der Nutzung des Index um die anfragen zu bearbeiten,
in die Indexroutinen eingeschlossen und der Endnutzer wird nicht mit den Details der
Indeximplementierung belastet. Vor Oracle8i musste die räumliche Anfrage wie folgt formuliert
werden:
SELECT DISTINCT r.gid, p.gid FROM roads_sdoindex r, parks_sdoindex p
WHERE (r.grpcode = p.grpcode) AND (r.sdo_code BETWEEN p.sdo_code
AND p.sdo_maxcode OR p.sdo_code BETWEEN r.sdo_code AND r.sdo_maxcode)
Der Nachteil dieser Methode ist, das der Anfragealgorithmus, der geschützt (geregelt) sein kann,
muss dem Nutzer erklärt werden, die innere Logik muss also ein extra SQL Statement ausgedrückt
werden. Vom Nutzer wird erwartet, dass er die Details der Speicherstruktur für den Index kennt. In
Ergänzung zur erheblichen Vereinfachung der Anfragen, erlaubt der Oracle8i Rahmen eine
Veränderung der zugrundeliegenden räumlichen Indizierungsmethoden, ohne vom Endnutzer zu
fordern, dass er seine Anfragen ändert. Die Darstellung von räumlichen Daten welche den ausgedehnten Indizierungsrahmen nutzen war genauso gut wie die Darstellung der vorherigen
Implementierung.
6
2.6 Oracle 8i Visual Information Retrieval Data Cartdridge (OVIRDC)
Das OVIRDC unterstützt eine inhaltsgestützte Wiederbenutzung von Abbildungen. Eine Abbildung
wird als ein ORDImage Objekttyp modelliert. Ein BLOB Attribut speichert die Reihenbytes der
Abbildung. Die Abbildungsweise unterstützt den Aufbau von Imageindexen. Für den Grund des
Aufbaus von Indexen wird jede Abbildung in eine Signatur umgeformt. Diese ist eine Abstrahierung
des Inhaltes der Abbildung in Form von visuellen Attributen. Ein Satz von Ziffern, der eine grobe
Repräsentation der Signatur ist, wird dann in einer Tabelle gespeichert, welche die Indexdaten
repräsentiert. Diese Cartdridge unterstützt den Operator Similar. Dieser Operator sucht nach einer
Abbildung, die der Anfragebildung ähnlich ist. Den Nutzen der ausgedehnten Indexierung kann man
nach der Analyse der Durchführung von einer gleichen Abbildungsanfrage vor und nach Oracle 8i
erkennen.
Nehmen wir folgende Anfrage an:
SELECT * FROM images T WHERE VIRSumilar (T.img.Signature, querySignature,
‘globalcolor =0.5, localcolor= 0.0, texture=0.5, structure =0.0’, 10,1);
Nach
Auslösen
der
vorherigen
Oracle8i
hat
die
Abbildungs
Cartdridge
keine
Indizierungsunterstützung. Also musste der Operator wie eine Tabellenanfrage untersucht werden.
Der Abbildungsvergleich musste für jede Reihe gemacht werden. In Oracle8i, bei dem der
ausgedehnte Indizierungsrahmen benutzt wird, kann der VIRSimilar in 3 Phasen untersucht werden.
Die erste Phase ist ein Filter, der eine Reihenfolgenanfrage in der Indexdatentabelle erzeugt. Die
zweite Phase ist ein weiterer Filter, der eine Berechnung des Ausmaßes des Abstandes durchführt.
Die dritte Phase verwirklicht den aktuellen Abbildungsvergleich. Auf diese Weise wird das komplexe
Problem der hochdimensionalen Indizierung auf entschieden einfachere Komponenten heruntergebrochen. Außerdem sind die ersten beiden Phasen des Filterns sehr selektiv. Sie führen zu einer
großen Reduzierung des Datensatzes bei dem noch ein Abbildungsvergleich durchgeführt werden
muss. Die Durchführung der Imageanfrage wurde durch den Mehrebenenfilterprozess anstelle eines
Abbildungsvergleiches für jede Reihe verbessert. Auch erfolgte eine Optimierung der Ranganfrage zur
Indexdatentabelle, die Indizies nutzt.
Also ist es in Oracle8i jetzt möglich, einen Abbildungsvergleich
von Tabellen, die Millionen von Reihen besitzen durchzuführen, etwas was vorher nicht möglich war.
3. Z-Ordering: Eine raumfüllende Kurve für Objekte mit äumlicher
Ausdehnung
Im geographischen Informationssystem werden bisher thematische Attribute (Niederschlagsmenge) in
relationalen Datenbanksystemen und räumliche Attribute außerhalb der Datenbank in File-basierten
multidimensionalen Indexstrukturen gespeichert (Hybridlösung).
3.1 Nachteile der Hybridlösung
Schwierige Integrierung der auf zwei Arten gespeicherten Daten.
7
Wenn es nicht gelingt eine Update-Operation in der relationalen Datenbank durchzuführen, gibt es
einen Konkurenzkonflikt, d.h. im räumlichen Index darf keine Veränderung durchgeführt werden, um
die Konsistenz zu garantieren.
Darfür müsste ein zeitaufwendiges Übergabeprotokoll für heterogene Datenbanksysteme implementiert werden. Außerdem haben Filesysteme und Datenbanksysteme üblicherweise unterschiedliche
Methoden zur Datensicherheit Backup und Parallelenzugang.
Die filebasierte Speicherung garantieret nicht die physische und logische Datenunabhängigkeit, so
dass Veränderung in laufenden Anwendungen kompliziert sind.
Eine Möglichkeit die Nachteile zu überwinden, bietet das objektrelationale Datenbanksystem, da es
durch applikationsspezifische Datentypen (called data cartridges or data blades) erweitert werden
kann. Die Idee ist Daten-Cartides für räumliche Attributen zu definieren und räumlichen Attribute in die
Datenbank zu übernehmen. Für die Daten intensiven GIS-Systeme ist es notwendig multidimensionalen Indexstrukturen in die Datenbank zu integrieren. Das erfordert ein Zugang zum
Blockmanagement des Datenbanksystems. Das ist bei den meisten kommerziellen Datenbanksystemen nicht gewährleistet, z.B. der gültige Universalserver von Oracel stellt keine Dokumentation
für das blockorientierte Interface zu Verfügung. Die Daten-Cartridges erlauben nur einen Zugang zu
Beziehungen über das SQL-Interface, so sind also objektrelationale Datenbanksysteme nicht hilfreich
für unsere Integrationsprobleme. Man kann schlussfolgern, dass unabhängig davon, ob man
objektrelationale Datenbanksysteme oder nur relationale Datenbanksysteme benutzt, der einzige
Weg, um räumliche Attribute innerhalb der Datenbank zu speichern der ist, sie in dem relationalen
Modell abzubilden. Eine frühe Lösung für das Management von multidimensionalen Daten in
Beziehung basiert auf raumfüllenden Kurven.
Raumfüllende Kurven bilden Punkte eines multidimensionalen Raumes in eindimensionalen Werten
ab. Dabei werden Distanzen bewahrt, d.h., wenn zwei Punkte in multidimensionalen Raum eng
beieinander liegen, liegen sie auch in eindimensionalen Raum eng beieinander. Die Suche nach
übereinstimmenden Objekten ist normalerweise begrenzt auf ein bestimmtes Gebiet in dem eingebetteten Raum. Das Konzept der raumfüllenden Kurven wurde erweitert, um mit Polygonen arbeiten
zu können. Diese Idee basiert auf der Zerlegung der Polygone entsprechend der raumfüllenden
Kurve. Ein Nachteil dieser Methode ist ihre Empfindlichkeit gegenüber einer passenden Auswahl der
Auflösungsparameter. Daher muss nach einer Methode zur Anwendung der raumfüllenden Kurven für
räumlich erweiterte Objekte gesucht werden, welche nicht auf der Zerlegung basiert.
3.2 Z-Ordering
Z-Ordering basiert auf der rekursive Zerlegung des Datenraumes, wie er von der raumfüllende Kurve
zur Verfügung gestellt wird.
3.2.1 Z-Ordering in Punktdatenbanksystemen
Wir nehmen einen Punkt an, von einem zweidimensionalen Einheitsquadrat [0..1]².
8
Der Algorithmus teilt das Einheitsquadrat in vier Quadranten von gleicher Größe auf, welche
kanonisch nummeriert sind von null bis drei. (sieh Abb. 3.1)
23
22
2
3
0
1
2 212 212
20 210
21211
0
3
1
Abbildung 3.1 Z-Ordering in Punktdatenbanksystemen
Wir notieren die Zahl des Quadranten und teilen diesen Quadranten in seine vier unter Quadranten.
Das wird rekursiv wiederholt bis eine bestimmte Grundauflösung erreicht wurde. Die feste Zahl der
rekursiven Wiederholung wird als Auflösungsniveau „g“ bezeichnet. Dann hören wir auf und nutzen die
erhaltene Reihenfolge von „g Ziffern“ (genannt Quadrantenreihenfolge) als Anordnungsschlüssell für
die Punkte ( wir ordnen lexikographisch). Jede Quadrantenreihenfolge bezeichnet eine Region des
Datenraumes, die wir als Element bezeichnen. Z.B. steht die Reihenfolge <00> für ein Element mit der
Seitenlänge 0.25, welches die untere linke Ecke in dem Datenraum berührt. Elemente bei der
Basisauflösung, welche durch die Quadrantenreihenfolge mit der Länge „g“ repräsentiert werden,
werden Zellen genannt. Wenn ein Element e1 in einem anderen Element e2 enthalten ist, dann ist die
dazugehörige Quadrantenreihenfolge Q(e2 ) ist ein Präfix von Q(e1 ). Je länger ein Quadrantenreihenfolge ist, desto kleiner ist das dazugehörige Element. In dem Einheitsquadrat wird die Fläche
von einem Element durch eine Reihenfolge mit der Länge „l“ (1/4) l repräsentiert. In einem
Punkdatenbanksystem werden nur Zellen mit der Basisauflösung genutzt. Deshalb besitzen alle
Quadrantenreihenfolgen die gleiche Länge und wir können die Quadrantenreihenfolgen als Ziffern
interpretieren , die in einem Vierergruppensystem (Basis 4) vorkommen. Die Interpretierung von
Reihenfolgen als Ziffern erleichtert ihr Management im Index und verändert nicht die Reihenfolge der
Punkte, weil die lexikographische Ordnung der weniger gleichen Beziehung von Ziffern entspricht. Die
Punkte werden in einer reihenfolgeerhaltenden und eindimensionalen Indexstruktur wie dem B+-Baum
[Kem 99]* gesteuert.
3.3.2 Anfrageablauf im Z-Ordeing
Wir nehmen an, eine Fensteranfrage mit einem spezifisierten Fenster. Der Datenraum ist unterteilt in
seine vier Quadranten. Jeder Quadrant wird auf Überlappung mit der Anfragefenster überprüft. Wenn
der Quadrant sich nicht mit dem Anfragefenstern überlappt, muss nichts getan werden. Wenn der
Quadrant komplett in dem Anfragefenstern eingeschlossen ist, müssen wir alle Punkte von der
9
Datenbank wiedergewinnen, die Quadrantenreihenfolge von diesem Element als Präfix von ihrem
Schlüssel haben. Wenn die Schlüsseln als Ganzzahlen dargestellt werden, müssen wir ein Intervall
von Unterreihenfolgenziffern wiedergewinnen. Alle restlichen Quadranten, welche durch das Fenster
überlappt werden, aber nicht komplett im Fenster eingeschlossen sind („wirkliche“ Schnittpunkte)
werden rekursiv aufgeteilt, bis die Basis Auflösung erreicht wird.
3.2.3 Eine Einfache Methode für Polygondatenbanken
Um das Konzept des Z-Ordering für das Management von Objekten mit räumlichen Ausdehnung
(Rectangels oder Polygonen) auszudehnen, müssen wir das Problem betrachten, dass ein gegebenes
Polygon sich mit vielen Zellen schneiden. Eine einfache Methode könnte darin bestehen, jede Zelle,
welche durch das Objekt bedeckt wird, in der Datenbank zu speichern. Offensichtlich bewirkt diese
Methode einen riesigen Speicheraufwand, es sei denn, das grundlegende Rasterfeld ist sehr grob.
Deshalb sind mehrere Methoden vorgeschlagen wurden, um den Aufwand zu reduzieren, wenn ein
feineres Rasterfeld benutzt wird.
3.3 Ein-Wert-Approximation
Die Objekten werden an das kleinste Element, welches des vollständige Objekt einschließt
angenähert (sieh Abb. 3.2).
22 23
2
0
3
1
20
21
32
33
30 31
02 03
12 13
00 01
10 11
Abbildung 3.2 Z-Ordering in Polygondatenbanksystemen
In diesem Fall wird unser rekursiver Algorithmus für die Ermittlung der Quadrantenreihenfolge wie folgt
modifiziert:
Teilen Sie den gegenwärtigen Datenraum in vier Quadranten. Wenn genau ein Quadrant durch das
Objekt geschnitten wird, fahren Sie rekursiv mit diesem Quadranten fort. Wenn mehr als ein Quadrant
geschnitten wird, dann hören Sie auf. Benutzen Sie die Quadranten Reihenfolge, welche zu diesem
Punkt als an Ordnungsschlüssel gebracht wurde. Diese Methode hat der offensichtliche Vorteil, das
jeder Gegenstand durch einen einzelnen Schlüssel, und nicht durch ein Satz von Schlüssel wie in
unserer einfachen Methode dargestellt wird. Aber diese Methode enthält auch mehrere Nachteile. Der
erste Nachteil ist, dass die Quadrantenreihenfolgen in dieser Approximation verschiedene Längen
haben, abhängig von der Auflösung des kleinsten enthaltenen Quadranten. So ist unsere einfache
Interpretierung als ein numerischer Wert nicht möglich. Schlüssel müssen als Strings mit unterschiedlicher Länge und lexikographisch verglichen, gespeichert werden, was weniger effizient ist, als
der numerische Vergleich. Das zweite Problem ist, das Objekt nur sehr unzureichend abgebildet
werden. So wird zum Beispiel jedes Polygon, welches eine der achsenparallelen Linien in der Mitte
10
des Datenraumes (die Linie x= 0.5 und die Linie y= 0.5) durchschneidet, kann nur durch die leere
Quadrantenreihenfolge approximiert werden. Wenn das Polygon, das approximiert werden muß, sehr
groß ist scheint eine Approximation durch eine leere Reihenfolge oder durch eine sehr kurze
Reihenfolge gerechtfertigt zu sein. Für kleine Polygone ist der Verhältnisannäherungsfehler zu groß.
Der relative Raum Aufwand für die Objektapproximation ist so unbegrenzt. In Wirklichkeit sind die
Objekte, welche sich durch die leeren Quadrantenreihenfolgen angenähert haben, Kandidaten für jede
Anfrage, die der Nutzer stellt. Je mehr Objekte mit kurzer Quadrantenreihenfolge in der Datenbank
gespeichert werden, um so schlechter ist die Trennschärfe (die Auswahlkraft) des Index.
3.4 Optimierte Redundanz
Um einen unbegrenzten Approximationsaufwand zu verhindern, schlägt Orenstein [Böh 99]* eine
Kombination der einfachen Methode und der Ein-Reihenfolge Darstellung vor.
Er adoptiert die Idee von der Aufspaltung der Objekte von der einfachen Methode, aber er zerlegt
nicht unbedingt jedes Objekt bis die Basisauflösung erreicht ist. Stattdessen schlägt er zwei
verschieden Kriterien vor (bezeichnet als größenbegrenzt und fehlerbegrenzt) um die Zahl der
Quadranten zu kontrollieren, in die ein Objekt zerlegt wird. Jedes Unterobjekt wird in dem Index
gespeichert, in dem man seine Quadrantenreihenfolge benutzt, die als String dargestellt wird. Ob
gleich diese Konzept eine Objektduplizierung einschließt (welche nach Orenstein als Redundanz
bezeichnet wird), ist die Zahl der Datensätze, welche in dem Index gespeichert werden, nicht direkt
durch die Rasterauflösung wie in der einfachen Methode determiniert. Anders als in der EinReihenfolge Methode, ist es nicht notwendig, kleine Objekte durch leere Reihenfolgen oder durch sehr
kurze Reihenfolgen zu repräsentieren. Übereinstimmend mit Orenstein ist eine Aufspaltung in 2-4
Teile typisch für eine zufriedenstellende Suchleistung. Orensteins Methode erleichtert die Probleme
der zwei vorher genannten Methoden, aber eine Doppelbeseitigung ist immer noch erforderlich und
die Schlüssel sind immer noch Reihenfolgen mit unterschiedlicher Länge. Orenstein begründet den
optimalen Grad der Redundanzen nur experimentell. Eine analytische Lösung wurde von Gaede (Gae
95) vorgeschlagen, der die Komplexität der gespeicherten Polygone identifizierte, beschrieben durch
ihre Parameter und ihre fractale Dimension, als den Hauptparameter für die Optimierung. Einweitere
Problem, das entsteht, wenn Redundanzen erlaubt sind, entsteht in Verbindung mit dem zweiten Filter
in einer Mehr-Schritt-Umgebung. Informationen welche für ein schnelles Filtern von falschen Hits
benutz werden können, so wie die ergänzende herkömmliche Approximation (Minimum Boundaring
Rectangles MRB) sollten wegen ihrer hohen Speicherfähigkeit keine Subjekt der Duplizierung sein.
Um eine Duplizierung einer solchen Information zu verhindern, muss dies in einer separaten Tabelle
gespeichert werden, welche ergänzende Verbindungen im Frageprozess enthält. Eine weiter
Konseqenz aus der Analyse von Gaede ist, dass die Anzahl der Intervalle, welche von der
Fragenfenstern generiert werden, proportional zur Zahl der Rasterzellen ist, welche von der Grenze
des Anfragefensters geschnitten werden. Das bedeutet, dass eine zu feine Auflösung der Raster zur
einer großen Zahl von Intervallen führt und auf diese Weise das Ausführungsverhalten beeinfluss,
wenn eine relationale Datenbank genutzt wird. Der Grund ist, dass die Intervalle durch der
Datenbankserver transferriert und bearbeitet werden müssen, was nicht vermeidbar ist, wenn die Zahl
der Intervalle sehr hoch ist.
11
3.5 Alternative Techniken
Verschiedene Verbesserung des Z-Orderingkonzept sind sehr gut bekant (sieh Abb. 3.3 [Böh 99]*).
a) Hilbert
b) Peano(Z-Order)
c) Gray-Codes
d) Z-Mirror
e) U-Index
Abbildung 3.3 Verschiedene Verbesserung des Z-Orderingkonzept
Einige Autoren schlagen die Nutzung von verschiedene kurven so wie z.B. die Graycodes, die Hilbert
Kurve oder andere Variationen. Viele Studien bevorzugen die Hilbert Kurve unter der Vorschläge,
wegen ihrer besseren Distanzbewahrungsfähigkeit [Böh 99]* schlägt eine große Auswahl von
Raumfüllenden kurven vor und macht eine vergleichende Darstellungsstudie, in dem er einer
relationale Implementierung nutzt. Auch diese Darstellungsbewertung enthält nicht eine wesentliche
Verbesserung der Darstellung der Hilbert Kurve oder andere Raumfüllende Kurven über Z-Ordering.
Daher nutzen wir die Peano/Morton Kurve, weil sie einfacher zu berechen ist.
4. Indexauswertung
Die Indexauswertung wird von Frageoptimierern durchgeführt, um jeden Index für eine effiziente
Fragedurchführung nutzen zu können. Traditionell müssen Frageoptimierer in der Lage sein, nur
einfache relationale Operatoren für die Indizierung auszunutzen, solange der dazugehörige Wertebereich einfach bestimmt werden kann. Für die Indexausnutzung mit nutzerdefinierten Prädikaten,
muss der Anfragekompiler in der Lage sein, diese relationalen Operatoren zu finden um sie nutzen zu
können. Die Bestimmung der verwendeten Funktionen muss folgendermaßen spezifiziert sein,
Entweder kann die Funktion als Prädikat genutzt werden und wenn es so ist, muss sie herausfinden,
welche Suchmethode benutzt werden kann, wenn bestimmte Operatoren Suchargumente sind. Für
Details zu der Syntax von Prädikaten siehe Abschnitt 4.1.
Beispiel 4.1 Beachten wir folgendes Beispiel:
CREAT TABLE customer (name varchar(20), id integer, …, xyloc location);
...
CREAT INDEX locationIndx on customer(xyloc);
…
SELECT * FROM customer WHERE within(xyloc, circle(…));
Für die Anfrage in Bsp. 4.1. wird angenommen, dass „within“ als Prädikat definiert wurde, dass eine
dazugehörige Suchmethode hat, wenn der zweite Operant ein Suchargument ist. Der Anfragekompiler
kann aus zwei Gründen einen Indexscan auswählen, um von der Tabelle „customer“ Aufzeichnungen
zu erhalten. Der erste ist, dass es einen Index auf einem „xyloc“ Attribut gibt. Der zweite Grund ist,
12
dass der Fragekompiler erkennt, dass der 2. Operant von „within“ begrenzt ist und erkennt, dass
„within“ ein Prädikat mit einer Suchmethode ist, wenn der 2. Operant ein Suchargument ist. Der
Indexscan wird die dazugehörige Suchmethode nutzen, um einen Satz von Suchschlüsseln zu
generieren. Diese stellen den kleinsten Satz von Gitterzellen dar, die den Kreis im 2. Operanten
bedecken. Der Satz von Suchschlüsseln wird von der zugrundeliegenden Suchmethode genutzt, um
die relevanten Aufzeichnungen von der Tabelle „customer „ wiederzugewinnen.
4.1 Implementierung und Prädikatfilterung
Der Hochniveaurahmen zur Indexierung von nutzerdefinierten Typen wurde in IBM DB2 implementiert.
Neben der Indexverwaltung, nutzerdefinierten Prädikaten und der Indexauswertung, stellt die
Implementierung auch eine Nutzerkontrolle über die mehrstufige Bewertung von nutzerdefinierten
Prädikaten durch Filterung zur Verfügung. Das vermeidet die potentiell teure Bewertung der nutzerdefinierten Prädikate und reduziert sowohl die I/O und die CPU-Kosten. Abbildung 4.1 zeigt die Syntax
für die Indexerweiterung mit der assoziierten Schlüsseltransformation und Suchmethoden. Die
semantische Beziehung, welche zur Suchmethode korrespondiert, wird nicht ausdrücklich spezifiziert.
Die CREATE INDEX EXTENSION
Anweisung legt eine parametrische Indexauswertung fest. Eine parametrische Indexauswertung wird
als Instanz gebildet, wenn ein Index in einer Tabelle kreiert wird, der CREATE INDEX Anweisungen
nutzt. Die Parameter der Indexerweiterung können für eine Spezifizierung genutzt werden, z.B. die
Zahl der Ebenen und die Größe einer Gitterzelle in einem mehrstufigen Zellindex. Die
Schlüsselaspekte
der
Indexerweiterung schließen die Schlüsseltransformationsfunktion ein, indiziert durch KEYTRANSFORMATION INVOKATION und die dazugehörigen Such-Methoden. Jede Suchmethode enthält eine
Suchschlüsselerstellungsfunktion indiziert durch SEARCH KEY PRODUCTION, die einen Satz von
Suchschlüsseln berechnet, wenn die Suchargumente und eine Indexfilterfunktion indiziert durch
Indexfilter gegeben sind, die in der Indexkomponente genutzt werden. Die Nutzerkontrolle über den
Indexfilter ist ein leistungsstarkes Konzept. Es stellt eine frühzeitige Filterung zur Verfügung, in der der
Indexschlüssel genutzt wird. Das verhindert die I/O Kosten für die Wiedergewinnung von Daten,
welche offensichtlich nicht die Suchkriterien erfüllen, solange die Daten nicht von einer Diskette
wiedergewonnen werden können, die den Indexscan nutzt bis der Indexschlüssel festgelegt ist. Das
ermöglicht das Nutzen multipler Indexierungsmechanismen in einer einzigen Suchkombinierung. dies
geschieht, in dem ein Indexfilter geplugged wird, der eine ergänzende Suche darstellt, in dem eine
externe Suchmaschine genutzt wird. Abbildung 4.2 zeigt die Syntax von nutzerdefinierten Funktionen,
die als Prädikate dienen können. Jede Prädikatspezifikation indiziert eine optionale Filterfunktion und
die dazugehörige Suchmethode für verschiedene Sucheigenschaften. Der Datenfilter dient dazu, die
potentiell teure Bewertung der Prädikate durch ein Herausfiltern der Aufnahmen, die das Prädikat
nicht erfüllen , zu verhindern, in dem man eine einfache und billigere Operation nutzt. In
EXPLOITATION RULE indizieren die Parameter, die auf WHEN KEY folgen, ein Suchargument. Das
optionale Schlüsselwort EXACTLY das dem AS PREDICATE folgt, benötigt eine kleine Erklärung.
<creat index extension> ::=
13
CREAT INDEX EXTENSION <header> <index maintenance > <index search>
<header> ::= <indexExtensionName> ({<parmName> <parmType>}+)
<index maintenace> ::=
WITH INDEX KEYS FOR ({ <colName> <colType>}+)
/*index columns*/
GENERATED BY <key transform>
<index search> ::=
WITH SEARCH METHODS FOR INDEX KEYS
({<colName> <colType>}+){<search method>}+
<searchmethod> ::=
WHERE <searchmethodName> USING ({<colName> <colType>+) /*search arguments*/
REANGE THROUGH <search key producer>
CHECK WITH <index filter>
<creat index> ::=
CREAT [UNIQUE] INDEX <index Name> ON <table Name>
({<colName> [ASC | DESC]}+)
USING <indexExtensionName> ({<constant>}+)
Abbildung 4.1 Syntax für die Indexerweiterung mit der assoziierten Schlüsseltransformation und
Suchmethoden [Che 99]*
<creat function> ::=
CREAT FUNCTION <functionName> {<parmName> <dataType>}+
<predicate specification>+
<predicate specification> ::=
AS PREDICATE [EXACTLY]
[FILTER BY <data filter>]
[<index exploitation>]
<index exploitation> ::=
SEARCH BY INDEX EXTENSION <indexExtensionName> <exploitation rule>*
<exploitation rule> ::=
WHERE KEY ({<paramName>}+) /*search target*/
USE <searchmethodName> ({<paramName>}+)
Abbildung 4.2 Syntax von nutzerdefinierten Funktionen [Che 99]*
Wenn ein Indexscan ausgeführt wird, der ein Prädikat nutzt, wird die dazugehörige Suchmethode, die
eine nutzerdefinierte Funktion ist, aufgerufen. Sie berechnet einen Scan von Suchschlüsseln für die
Suchziele, indem sie Suchargumente nutzt. Die Suchschlüssel werden zu den zugrundeliegenden
Zugangsmethoden gesendet, um die relevanten Aufnahmen wiederaufzurufen. Der Indexfilter ist
verbunden mit der Suchmethode, die bei Vorhandensein angewendet wird, bevor die Aufnahmen von
der Diskette wiederverwendet werden. der relationale Datenbankmanager wendet den Datenfilter an,
14
der mit der Prädikatspezifizierung verbunden ist. Zum Abschluss werden die Aufnahmen bewertet,
indem man das Prädikat nutzt,
das den Datenfilter passiert hat. Wenn der Indexfilter und der
Datenfilter nur eine Annäherung an das Prädikat ermöglichen, z.B. bei räumlichen Applikationen,
dann ist der letzte Schritt der Prädikatbewertung notwendig. In anderen Anwendungen als der
Dokumentensuche können die Filter exakt den Satz von Antworten berechnen, der das Prädikat
erfüllt. Der letzte Schritt der Prädikatbewertung sollte in diesem Falle nicht ausgeführt werden. Das
Schlüsselwort exakt indiziert eine solche Situation.
Abbildung 4.3 zeigt die Architektur der Implementierung in DB2. Sie kann jede zugrundeliegende
Zugangsmethode, die verfügbar ist, verdrängen. die rechtwinkligen Boxen stellen Plätze dar, wo
nutzerdefinierte Funktionen in eine Unterstützung der nutzerdefinierten Suchen eingeschaltet werden.
Die Schlüsseltransformation wird im Indexmanager zur Indexverwaltung aufgerufen, wenn die Tupels
in der Tabelle eingefügt, gelöscht oder aktualisiert werden. Der Anfragekompiler nutzt Spezifikationen
von nutzerdefinierten Prädikaten für eine Indexausnutzung. Während der Suche, die auf einem
nutzerdefinierten Prädikat beruht, wird die dazugehörige Suchmethode durch den relationalen
Datenmanager
aufgerufen,
um
einen
Satz
von
Suchschlüsseln
zu
generieren.
Für
das
Wiederaufrufen, das auf nutzerdefinierten Prädikaten beruht, sind 2 Filter in der Architektur
eingeschlossen. Der Grund ist die Verhinderung einer potentiell teuren Bewertung
von nutzer-
definierten Prädikaten. Die Indexfilter filtern Aufnahmen heraus, bevor sie von den Puffern innerhalb
des relationalen Datenbankmanagers wiederhergestellt werden, Die Datenfilter im relationalen
Datenbankmanager stellen eine Chance der kosteneffizienten Filterung vor einer teuren Bewertung
der Prädikate dar.
Query
Query Compiler:
Predicate Specification
Index EXploitation
Insert/Delete/Update
Relational
Search Keys
Predicate Ecal
Data Mgr:
Search
Table Update
Data Filter
Methods
Index Mgr:
Search Keys
Key Transform
Index Update
Search
Index Filter
Table
Access Methods
Abbildung 4.3 Architektur der Implementierung in DB2 [Che 99]*
4.2 Indizierung für GIS Applikationen
Im traditionellen GIS wird die Indizierung von räumlichen Daten durch einen Satz von
systemgebundenen APIs (application programming interface) ermöglicht. Wenn eine Anfrage das
Suchen von räumlichen Daten beinhaltet, werden die räumlichen Daten für die Indexauswertung
transformiert. Die resultierende Anfrage
wird zur Optimierung und Bewertung zur Datenbank
15
gesendet. Das Fehlen der Integration von räumlichen Indizes in der Datenbankmaschine führt zu
Integritätsproblemen und falschen Treffern bei der Darstellung. Unser Hochniveauindexierungsrahmen
hat eine räumliche Indizierung in einer Datenbank ermöglicht und nutzt außerdem Vorteile der
spezifischen Suchmethoden, die in GIS entwickelt wurden für die folgenden nutzerdefinierten Typen:
CEART TYPE envelop As (xmin int, ymin int, xmax int, ymax int);
CREAT TYPS shape AS (gtype varchar(20), mbr envelop. Numpart sint,
numpoint sint, geometry BLOB(1M))
NOT INSTANTIABLE;
CREAT TYPE point UNDER shape;
CREAT TYPE line UNDER shape;
CREAT TYPE polygon UNDER shape;
Beispiel bei denen Formen als Unterstützungstypen für verschiedene Untertypen dienen, sowie Linien
und Polygone. Zwei Tabellen werden in der Datenbank definiert, eine speichert die Informationen über
Schulen und die andere beinhaltet Informationen über die Haushalte des Einzugsgebietes.
CREAT TABLE schools AS (name varchr(20), district varchar(20),
address varchar(20), area ahape
PRIMARY KEY (name, district));
CREAT TABLE households AS (address varchar(20), annualincome int,
location shape);
Die folgende Anfrage versucht, das durchschnittliche Einkommen der Haushalte, das als eine
attendance von den spezifischen Schulen zu berechnen.
SELECT avg(h.annualincome) FROM houses h, schools s
WHERE s.name = ‚Armstrong Elementary‘ AND s.district = ‚Highland Park‘ AND
Within(h.location, s.area);
Um der effizienten Ausführung dieser Frage zu folgen, benötigen wir eine Indexerweiterung. Diese
erhalten wir, indem wir die nutzerdefinierte Schlüssseltransformation und Suchmethode für geographische Formen einschließen und indem wir einen Index in die Tabelle Haushalt einsetzen. Außerdem
müssen wir die Prädikate für „within“ spezifizieren und die dazugehörigen Suchmethode nutzen. Das
folgende Statement bestimmt die Indexauswertung über den Typ geographische Formen. Es nutzt
einen mehrstufigen Gitterindex für die geographische Form.
CREAT INDEX EXTENSION gridshape (levels varchar(20) FOR BIT DATA)
WITH INDEX KEYS for (sh shape) GENERATED BY gridkeys (
Levels, sh..mbr..xmin, sh..mbr..ymin,
sh..mbr..xmax, sh..mbr..ymax)
WITH SEARCH METHODS FOR INDEX KEYS (level,int , gx int, gy int, xmin int,
Ymin int, xmax int, ymax int)
WHERE search_within USING (area shape)
RANGE THROUGH gridrange(
Levels, area..mbr..xmin, area..mbr..ymin,
16
area..mbr..xmax, area..mbr..ymax)
CHECK WITH checkdüplicte(
Levels, loc..mbr..xmin, loc..mbr..ymin,
loc..mbr..xmax, loc..mbr..ymax)
CHECK WITH mbroverlap(
Xmin, ymin, xmax, ymax,
loc..mbr..xmin, loc..mbr..ymin,
loc..mbr..xmax, loc..mbr..ymax );
Die Indexerweiterung spezifiziert die Funktion für die Schlüsseltransformation, Gitterstücke und
Zweisuchmethode (DB2). Sie nutzt die doppelte Datennotierung für die Zugang zu Attributen von
Objekten des nutzerdefinierten Typs. Eine ist für die Suche in einem spezifischen Gebiet, die andere
ist für das Auffinden von geographischen Formen, die eine spezifische Lokalisierung haben. Beide
Suchmethoden nutzen die gleiche Funktion, den Gitterwertebereich, um ein Set von Indexen für
potentielle Suchziele zu generieren. Jede Suchmethode hat ihre eigene Filterfunktion. Alle Funktionen
werden durch die nutzerdefinierte Funktion beachtet, wenn Definitionen gegeben werden. Wir sind
soweit, einen Index für die Lokalisationsspalte der Tabelle zu erstellen.
CREAT INDEX houselocIDX ON households(location)
USING gridshape (’10 100 1000‘);
Die Parameter sind von drei Ebenen von verschiedenen Gitterzellengrößen. Für die Indexerweiterung
benötigen wir Prädikate und die zugehörige Suchmethode die folgende Spezifizierung nimmt das
„within“ als ein Prädikat.
CREAT FUNCTION within(s1 shape, s2 shap) RETURNS int
LANGUAGE C ... EXTERNAL NAME ‚/lib/gislib!within‘
AS PREDICATE
FILTER BY mbrwithin (s1..mbr..xmin, s1..mbr..ymin, s1..mbr..xmax, s1..mbr..ymax,
s2..mbr..xmin, s2..mbr..xmin, s2..mbr..xmax, s2..mbr..ymax)
SELECT BY INDEX EXTENSION gridshape
WHEN KEY (s1) USE search_within(s2)
WHEN KEY (s2) USE search_contain(s1);
Die letzten drei Zeilen indizieren, das Suchen, die auf Prädikate von „within“ basieren, durchgeführt
werden, indem sie eine Indexerweiterung gridshape nutzen, wenn das erste Argument S1 ein
Suchziel ist, soll man die Suchmethode search_ within mit S2 als Suchargument nutzen. Der
Anfragekompiler ist in der Lage, einen Plan zu generieren, der den Vorteil vom Zugangspfad, der vom
Index „on location“ von der Tabelle „Haushalter“ nutzen kann. Die Schlüsseltransformation, der
Suchschlüsselproducer und die Filterfunktionen werden automatisch an einem vorbestimmten Platz
aufgerufen.
17
4.3 Durchführung
Unser rahmen für eine Hochniveauindizierung (high level indexing) von nutzerdefinierten
Typenerweitert die Ausdruckskraft und integriert die Optimierung von SQL anfragen für
nutzerdefinierte Typen. Dieser Abschnitt stellt einige Messungen von vorhergehenden Darstellungen
für GIS Applikationen dar. Dabei werden die existierenden GIS-Architekturen und unser integrierter
Zugang genutzt. Die existierende GIS-Architektur wird von SDE: 3.0.2 bei DB2 UDB Version 5 von
[ESRI]* dargestellt. Dabei wird eine räumliche Datenmaschine außerhalb der Datenbank für die
räumliche Optimierung genutzt. Gegeben ist eine Tabelle mit Geschäftsdaten und eine Spalte mit
räumlichen Attributen und geometrischen Formen. Die räumliche Spalte in der Originaltabelle
(genannt Business-Tabelle) wird durch eine ID-Spalte ersetzt, die ein äußerer Schlüssel für die
Eigenschaftstabelle ist. In Ergänzung zur Eigenschaftstabelle ist SDE Verwaltung eine räumliche
Indextabelle, die auch Indexmethoden aus unserem Beispiel nutzt, und auf 3 Ebenen basiert. Die
räumliche Indextabelle enthält die Merkmale ID (das ist ein äußerer Schlüssel für die Eigenschaftstabelle) und die Indexinformation für die Lokalisierung der linken niedrigen Gitterzelle und das MBR
der Merkmale. Wenn eine räumliche Suchanfrage durchgeführt wird, nutzt SDE die räumliche
Indextabelle und die Eigenschaftstabelle
um eine Liste von ID-Kandidatenformen zu berechnen,
welche das räumliche Prädikat erfüllen. die berechnete Liste der Kandidatenformen wird danach
genutzt, um die Daten der Businesstabelle wieder herzustellen. Das wird gemacht, indem man die
remaining Prädikate im „WHERE“ Satz auf die räumliche Suchanfragen anwendet. Das aktuelle SDE
verbindet die Businesstabelle und die Eigenschaftstabelle, indem es verschiedene Anfragen ausführt.
Unser integrierter Zugang zur Hochniveauindexierung von nutzerdefinierten Typen ist in DB 2 SpatialExtender implementiert. Wir nutzen die Census-Blockdaten für den Staat Kentucky, der 137173
Polygone hat, mit den durchschnittlich 31 Punkten im Polygon. Die Tabelle „Kentucky“ Blocks hat in
der Spalte „Grenzen von räumlichen Typen“ Polygon in Ergänzung zu anderen Attributen wie die
Namen oder die totale Population. Jedes Polygon repräsentiert ein Gebiet, dass wenigstens 4 und
höchstens 3416 Punkte enthält.
CREAT TABLE kentuckyBlocks
8name varchar(20), ..., boundary POLYGON)
Die folgenden Anfragen repräsentieren einige typische Operationen in GIS Applikationen:
loading: einschließlich Rohdatenladung durch eine Sequenz von SQL, dem inneren Stellungsrahmen
und der Verwaltung der räumlichen Indizes.
region queries: für die 3 vordefinierten Regionen in verschiedenen Lokalisierungen mit folgender
Größe von Antwortsätzen 3155, 2387 und 1457.
point queries: 100 Zufallspunkte, die eine Nutzerpunktierung in einem Polygon während des
räumlichen browsings simulieren.
region queries with attributes: das gleiche wie Regionanfrage, ausgenommen die nicht räumlichen
Attribute wie Name oder Population, werden auch in Ergänzung zu den räumlichen Daten abgerufen
18
fetch all: Messen wie schnell die Daten aus der Datenbank werden herausgepumpt werden können.
Alle Anfragen
durchlaufen den IBM RS6000/J 40 Server während der off Stunden, um
Veränderungen durch Nutzer und Prozesse zu minimieren. Die GIS Kundenprogramme werden mit
derselben Maschine durchgeführt. Die Verwaltung der Anfrageausführungszeit (gerundet auf
Sekunden) werden in Tabelle 1 angezeigt. Das Laden der Daten wurde durchgeführt, während der
Rest der Anfragen 3 mal durchgeführt wurde und die Durchschnittwerte angezeigt wurden. Sowohl
beim Laden (load) als auch bei Ruf sie alle auf (fetch all) führen wir die innere Tabelle durch und die
integrierte Methode ist über vier mal schneller. Im Fall von Laden (load) werden aus einem
eingefügten statement für eine Reihe in der integrierten Methode drei eingefügte Statements in der
GIS Methode, ein für die businesstabelle, ein für die Eigenschaftstabellen und ein Statement für die
räumliche Indextabelle. Im Fall von fetch solange die GIS Methode die Verbindung von zwischen der
Businesstabelle und der Eigenschaftstabelle selber abhandelt, führt es eine separate Anfrage gegen
die Eigenschaftstabelle wiederholt durch, solange für jedes Datenset von der Businesstabelle
wiederaufgerufen werden muss.
Für Regionenanfragen ohne nicht-räumliche Attribute
ist die integrierte Methode über 2,5 mal
schneller als die GIS Methode, aber sie ist über 3 mal schneller als für Fragen mit nicht-räumlichen
Daten. Der Unterschied besteht darin, dass im letzten Fall der Zugang zur Businesstabelle involviert
ist. Die GIS Methode ist sehr gut, für Punktanfragen. Letztlich zeigt das Resultat, dass unsere
integrierte Methode der Hochniveauindexierung von räumlichen Daten eine viel bessere Darstellung
bietet. Das zeigt die Bedeutung der Verbesserung der Datenbankmaschine für die erweiterte
Indizierung von komplexen Daten.
5. Zusammenfassung
In der Arbeit wurde zunächst im 2. Kapitel Oracle 8i Spatial vorgestellt, da es die Vermischung von
Datenspeichern des GIS und des MIS ermöglicht. Ausserdem konnte damit eine einheitliche
Datenmanagementstruktur für alle Unternehmensdaten implementiert werden. Es wurde beschrieben,
wie durch Oracle8i
Spatial drei einfache geometrische Typen und Geometrien, die aus einer
Sammlung dieser 3 Typen bestehen, unterstützt werden. Dabei handelt es sich um zweidimensionale
Typen. Durch die Oracle 8i Spatial Data Cartdridge ist der Nutzer in der Lage, den räumlichen Index
und die Anfragen an die räumlichen Daten zu speichern. Dabei gehört zu jedem räumlichen Objekt
eine Sammlung von Verteilungen, welche in der Oracle Tabelle gespeichert wurden. Durch den
räumlichen Index wurden Routinen für das Kreieren, Pflegen und Befragen der räumlichen Indexe
definiert.
Im 3. Kapitel wurden die Nachteile der bisherigen getrennten Speicherung von thematischen und
räumlichen Attributen vorgestellt (z. B. Konkurrenzkonflikte).
Die Schwierigkeit, Veränderungen in der laufenden Anwendung umzusetzen, wurde als Motivation für
eine Weiterentwicklung dargestellt. Um ein erfolgreiches Management von multidimensionalen Daten
durchzuführen, wurden in einer frühren Lösung raumfüllende Kurven entwickelt. Auf die Erweiterung
19
dieses Konzeptes zur Bearbeitung von Polygonen wird auch im 3. Kapitel eingegangen. Da diese
bisher verwendete Methode bei der Auswahl der Auflösungsparameter zu sensibel ist, wurde nach
einer neuen Methode gesucht, die nicht auf der Zerlegung der räumlichen Daten beruht. So kommt es
abschließend in Kapitel 3 zur Darstellung des Z-Ordering, bei dem Daten aus dem
multidimen-
sionalen Raum übertragen werden. Dabei wird eine bessere Übertragung von Rechtecken und
Polygonen angestrebt. Es konnte eine neues Kodierungsschema für die Z-Eelemente
und eine
Optimierung des Abfrageprozesses erreicht werden.
Universelle Applikationen, die sowohl komplexe Anfragen als auch komplexe Daten umfassen,
erfordern eine leistungsstarke und flexible Indexunterstützung für nicht traditionelle Daten wie
geographische Informationen oder strukturierte Dokumente. Die Indizierung von nutzerdefinierten
Typen mit nutzerdefinierten Prädikaten ist eine Grundbedingung um den Anforderungen der
modernen Datenbankapplikationen zu entsprechen. Die Anfrageüberarbeitungsmethode transformiert
Anfragen, die nutzerdefinierte Prädikate enthalten. Das erfordert keine Modifikation der Datenbankmaschine. Man kann auch applikationsspezifische Zugangsmethoden implementieren, z.B. generalisierte Suchbäume. Sie haben den Vorteil, dass sie eine direkte Unterstützung für applikationsspezifische Suchen anbieten. Leider haben bisher nur R- und B-Bäume [Kem 99]* den Weg in die
kommerziellen Datenbanksysteme gefunden. Ein Grund dafür ist, das die Implementierung von neuen
Zugangsmethoden oder eines generischen Suchbaumes [Kem 99]* ein sehr aufwendiges Vorhaben
ist, solange eng mit den Niedrigniveaukomponenten der Datenbankmaschine, wie Parallelitätskontrolle Lockmanager und Puffermanager interagiert werden muss. Die Zuverlässigkeit ist von
zunehmender Bedeutung für ein ausgereiftes Datenbankprodukt. Außerdem verlangen die Applikationen neue Datentypen und eine fortgeschrittene Suche, wie z.B. nach dem nächsten Nachbarn
von räumlichen Daten oder eine reguläre Pfaderweiterung für halbstrukturierte Daten. Unser Rahmen
für eine Hochniveauindexierung von nutzerdefinierten Typen verallgemeinert die erweiterte sekundären Indizes [[Lyn 88] und [Sto 86]*. Er ist eng integriert mit den Datenbankmaschinen, speziell mit
dem Indexmanager und dem Frageoptimierer. Er
ist orthogenal zu den zugrundeliegenden
Zugangsmethoden und kann die Vorteile von allen spezifizierten Zugangsmethoden nutzen, wann
immer sie verfügbar sind. Unser Hauptbeitrag ist nicht die Entwicklung einer neuen Zugangsmethode,
oder eines speziellen Suchalgorithmus, sondern die Herstellung eines Rahmens, in welchem der
Nutzer die direkte Kontrolle über die Indexverwaltung, Auswertung und Filterung hat. Außerdem
können die Nutzer ihre eigenen Schlüsseltransformationen bestimmen. Die Idee der Schlüsseltransformation ist nicht neu, so z. B. das Transformieren von geographischen Objekten in MBRs für
R-Bäume [Gut 84]* oder in ein Set von z-Werten. Im folgenden geben wir dem Nutzer jedoch die
Möglichkeit, zu unterscheiden, welche Abstraktionen oder Approximationen er für den Indexschlüssel
für den nutzerdefinierten Typ nutzen will. Die Nutzer können ihren eigenen Suchcodes produzieren.
Dennoch sind die Suchschlüsselproducer nicht in der Lage, selber eine fortgeschrittene Suche wie
nach Ebenen oder nach dem nächsten Nachbarn zu unterstützen (was die direkte Unterstützung von
der zugrundeliegenden Suchmethode erfordern würde). Die Schlüsseltransformation überwindet die
semantische Lücke zwischen nutzerdefinierten Prädikaten und den begrenzten Zugangsmethoden,
die verfügbar sind. Die Nutzer können ihre eigenen Filter bestimmen, um eine teure Prädikatbewertung zu verhindern. Eine mehrstufige Prädikatbewertung wurde erklärt [Bri 93]*. Die Forscher
20
haben auch Anfrageoptimierungsausgaben mit teuren Prädikaten untersucht und mit einer Filterung,
die angenäherte Prädikate nutzt. Unser Beitrag ist die Integrierung einer mehrstufigen Bewertung von
Prädikaten mit der Datenbankmaschine, speziell dem Indexmanager. Das stellt einen Rahmen für die
Implementierung zur Verfügung, bei dem approximierte Prädikate effektiv für eine effiziente
Anfrageausführung genutzt werden können. Wie wir gezeigt haben, ist der Indexfilter eine leistungsstarke Technik. Sie ermöglicht es, Kosten für I/O zu verringern, da eine Wiederherstellung von
nutzlosen Daten in dem Memory Puffer verhindert wird. Das ermöglicht einen interessanten
Mechanismus, bei dem verschiede Indexierungsmechanismen in einer Suche kombiniert werden, z. B.
die strukturierte Suche mit der externen Volltextindexierung. Die enge Integration mit der Datenbankmaschine bedeutet, dass es für Fragekompiler möglich ist, nutzerdefinierte Prädikate in dem
Standardrahmen der Frageoptimierung zu nutzen. Das heißt, dass die vollen Befragungsfähigkeiten
von SQL, einschließlich verschiedener Prädikate in einem „WHERE“ Satz, aggregierte Funktionen,
Unteranfragen, und Rekursionen nun für die universalen Applikationen durch DB2 verfügbar sind.
Literaturverzeichnis
[Bri 99]
http://www.fh-oldenburg.de/iapg/personen/brinkhof/BTW93.pdf
[BKS 90]
N. Beckmann, H.-P. Kriegel, R. Schneider und B.Seeger: "The R*-tree:
An Efficient and Robust Access Method for Points and Rectangles". In
Proc. of ACM SIGMOD Conference on Management of Data, pp. 322331, Institut für Praktische Informatik, Universität Bremen, 1990.
[Böh 99]
C. Böhm, G. Klump and H. P. Kiegel, XZ-Ordering: A Space-Filling Curve for Objects
with Spatial Extension, University of Munich, CSI, Germany, 1999.
[Bri 93]
T. Brinkhoff, H.-P. Kriegel, and R. Schneider, Comparisons of approximation of complex
objects used for approximation-based query processing in spatial database system. In
IEEE Intl. Conference on Data Engineering, pages 40-49, 1993.
[Che 99]
W. Chen, J. H. Chow, Y. C. Fuh, J. Gradbois, M. Jon, N. Mattos, B. Tran, Y. Wang, High
Level Indexing of User-Defined Types, IBM Santa Tereasa laboratory, ESRI, 1999.
[Dit 01]
R. Dittrich and A. Geppert, Component Database Systems by Klaus 2001.
[ESRI]
ESRI Environmental System Research Institute (ESRI), Home page http://www.esri.com.
[Gut 84]
A. Guttman: "R-trees: A Dynamic Index Structure for Spatial Searching".
In Proc. of ACM SIGMOD Conference on Management of Data, pp. 4757, University of California, Berkeley, 1984.
[Kem 99]
Kemper, Alfons, Datenbanksysteme , korr. Auf. –München; Wien:
Oldenbourg,1999.
[Lyn 88]
C.A. Lynch and M.Stonebraker, Extended user-defined indexing with application to
textual databases, In Intl. Conference on Very Large Data Bases, pages 306-317, 1988.
[Ra&Sh 99] S. Ravada and J. Sharma, Oracle8i Spatial: Experiences with Extensible Databases,
Berlin, Heidelberg 1999.
[Sto 86]
M. Stonebraker, Inclusion of new types in relational data base system, in IEEE Intl,
Conference on Data Engineering, pages 262-269, February 1986.
21
Herunterladen