Humboldt-Universität zu Berlin

Transcription

Humboldt-Universität zu Berlin
Humboldt-Universität zu Berlin
Institut für Informatik
GIS-Datenbank für webservicebasierten Zugriff auf
standortbezogene Informationen
Diplomarbeit von Ralf Heese
März 2002
1. Gutachter:
Prof. Johann Christoph Freytag, Ph.D.
2. Gutachter:
Dr. Rainer Eckstein
Inhaltsverzeichnis
1 Einleitung
1
2 Erstellen der GIS-Datenbank
2.1 Alternative Einleseverfahren . . . . . . . . . . . .
2.2 Vorverarbeitung der GDF-Dateien . . . . . . . .
2.2.1 Gesamtüberblick . . . . . . . . . . . . . .
2.2.2 Das Parser-Paket . . . . . . . . . . . . . .
2.2.3 Die Ausgabe in die DEL-Dateien . . . . .
2.3 Verwendung des MultiNet Shapefile-Format . . .
2.3.1 Die Shapefile-Spezifikation . . . . . . . . .
2.3.2 Das MultiNet Shapefile-Format . . . . . .
2.3.3 Einlesen der dBASE- und Shape-Dateien
3 Zugriff auf räumliche Daten
3.1 Mehrdimensionale Zugriffsverfahren . . .
3.1.1 Charakterisierung . . . . . . . . .
3.1.2 Anforderungen . . . . . . . . . . .
3.1.3 Anfragebearbeitung . . . . . . . .
3.2 Geometrien im DB2 Spatial Extender . .
3.2.1 Indizierung räumlicher Objekte . .
3.2.2 Anfragebearbeitung . . . . . . . .
3.2.3 Beobachtungen und Eigenschaften
3.2.4 Analyse . . . . . . . . . . . . . . .
3.2.5 Experimentelle Überprüfung . . .
3.2.6 Bewertung . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
7
8
9
11
13
16
16
17
21
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
31
32
32
34
35
37
37
39
41
42
47
57
4 Webservices
4.1 Webservice – ein allgemeiner Begriff . . . . . .
4.1.1 Eine Definition . . . . . . . . . . . . . .
4.1.2 Wichtige Standards . . . . . . . . . . .
4.1.3 Vor- und Nachteile von Webservices . .
4.2 Realisierung eines Webservice . . . . . . . . . .
4.2.1 Die verwendete Webservice-Architektur
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
58
59
59
60
73
75
75
i
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ii
INHALTSVERZEICHNIS
4.2.2
4.2.3
4.2.4
Implementierung des Webservice . . . . . . . . . . . .
Klient des Webservice . . . . . . . . . . . . . . . . . .
Auswahl der UDDI . . . . . . . . . . . . . . . . . . . .
5 Zusammenfassung und Auswertung
A Modellierung des Importwerkzeugs
A.1 Konfigurationsdateien . . . . . . . . . . . . . . . . .
A.1.1 Visualisierung einer XML-Dokumentstruktur
A.1.2 Allgemeine Konfiguration . . . . . . . . . . .
A.1.3 Datenbankspezifische Konfiguration . . . . .
78
81
82
84
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
88
88
88
88
90
B Realisierung des Webservice
93
B.1 WSDL-Beschreibung . . . . . . . . . . . . . . . . . . . . . . . 93
B.1.1 Schnittstellendefinition . . . . . . . . . . . . . . . . . . 93
B.1.2 Implementationsabschnitt . . . . . . . . . . . . . . . . 95
Abbildungsverzeichnis
1.1
Datennetz (Ausschnitt) . . . . . . . . . . . . . . . . . . . . .
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.10
2.11
Übersicht über die Pakete der Vorverarbeitungssoftware
Das Parser-Paket . . . . . . . . . . . . . . . . . . . . . .
Zusammenwirken der wichtigsten Klassen . . . . . . . .
Verkehrsnetz Layer (Ausschnitt) . . . . . . . . . . . . .
Points of Interest Layer (Ausschnitt) . . . . . . . . . . .
Import vom MultiNet Shapefile-Format . . . . . . . . .
Aufrufvarianten der INSERT-Anweisung . . . . . . . . . .
Pakete des Importwerkzeugs . . . . . . . . . . . . . . . .
Das Paket teleatlas . . . . . . . . . . . . . . . . . . . . .
Das Paket database . . . . . . . . . . . . . . . . . . . . .
Substitution innerhalb von SQL-Dateien . . . . . . . . .
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
Lokale Teilung einer Region . . . . . . . . . . . . . . . . . . .
Nicht-lokale Teilung einer Region . . . . . . . . . . . . . . . .
Anfragebearbeitung mit räumlichen Operationen . . . . . . .
Mehrdimensionales Zugriffsverfahren des DB2 Spatial Extender
Ausführungsplan für eine Anfrage mit Geometrien . . . . . .
Skizze zur Abschätzung der Indexeinträge . . . . . . . . . . .
Punkteverteilung im Datenraum . . . . . . . . . . . . . . . .
Straßennetz aus der GIS-Datenbank (Ausschnitt) . . . . . . .
Zufällig generierte Geometrien (Ausschnitt) . . . . . . . . . .
Ausdehnungen der Geometrien (Straßennetz) . . . . . . . . .
Ausdehnung der Geometrien (Zufallsgeometrien) . . . . . . .
33
33
36
38
40
45
49
51
51
52
54
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
Webservice Modell . . . . . . . . . . . . . . . . . . .
Schichtenmodell des UDDI (Interop Stack) . . . . .
Bestandteile einer SOAP-Nachricht . . . . . . . . . .
Header einer SOAP-Nachricht . . . . . . . . . . . . .
Body einer SOAP-Nachricht . . . . . . . . . . . . . .
SOAP HTTP-Anforderung . . . . . . . . . . . . . .
SOAP HTTP-Antwort . . . . . . . . . . . . . . . . .
Schnittstellenabschnitt des POI-Service (Ausschnitt)
61
63
64
65
66
67
67
70
iii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
10
12
14
18
20
22
23
24
25
27
29
iv
ABBILDUNGSVERZEICHNIS
4.9
4.10
4.11
4.12
4.13
4.14
Implementationsabschnitt des POI-Service
Schlüssel-Datenstrukturen der UDDI . . .
Verknüpfung von WSDL und UDDI . . .
Überblick über die Systemumgebung . . .
Subsysteme Webservice . . . . . . . . . .
Modellierung des Webservice . . . . . . .
(Ausschnitt)
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
70
71
73
76
77
80
A.1 Aufbau der allgemeinen Konfigurationsdatei . . . . . . . . . .
A.2 Aufbau der Konfigurationsdatei für DB2 UDB . . . . . . . .
89
91
Tabellenverzeichnis
3.1
3.2
3.3
3.4
Schnittpunkte der Geometrien mit dem Gitter . .
Ergebnisse der Experimente zu Punktdaten . . .
Ergebnisse der Experimente (Straßennetz) . . . .
Ergebnisse der Experimente (Zufallsgeometrien) .
.
.
.
.
39
50
53
55
A.1 Kardinalitäten im XML-Modell . . . . . . . . . . . . . . . . .
89
v
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
vi
TABELLENVERZEICHNIS
Kapitel 1
Einleitung
Nach einem langen Spaziergang durch die Innenstadt von Köln steht eine
Touristin vor dem Dom und möchte mit den öffentlichen Verkehrsmitteln
wieder zurück in ihr Hotel. Sie greift zum Mobiltelefon und stellt eine Verbindung zum WAP-Portal ihres Mobilfunkanbieters her. Nach der Auswahl
des Menüpunktes öffentliche Verkehrsmittel öffnet sich eine Eingabemaske,
in dem sie ihr Ziel, den Namen ihres Hotels, eingibt. Kurze Zeit später wird
eine Wegbeschreibung zur nächstgelegenen Bushaltestelle sowie die Fahrverbindung zu ihrem Hotel auf dem Display angezeigt.
Insgesamt realisiert das entworfene Szenario einen standortbezogenen
Dienst (Location Based Service). Unter Ausnutzung der Ortbarkeit eines
eingeschalteten Mobiltelefons lassen sich auf die momentane Position abgestimmte Dienste und Informationen anbieten. Für die Realisierung eines
solchen Szenarios ist ein Zusammenführen verschiedenster Datenquellen erforderlich.
Zunächst wird für die Erstellung der Fahrverbindung ein Ausgangspunkt
und ein Ziel benötigt. Der Ausgangspunkt ist in naher Zukunft mit einer
noch höheren Präzision verfügbar. Mit dem zur Zeit verwendeten Ortungsverfahren, mittels der Informationen einer Funkzelle, ist es dem Mobilfunkbetreiber möglich, die Position eines Mobiltelefon in Städten bis zu einer
Genauigkeit von 100 bis 500 Meter zu ermitteln. Diese Genauigkeit nimmt
jedoch auf ländlichen Gebieten stark ab (bis auf 10 Kilometer), da die Funkmasten weit voneinander entfernt aufgestellt sind. Durch verbesserte Techniken wie dem EOTD-Verfahren (Enhanced Observed Time Difference), bei
dem die Laufzeitunterschiede von Signalen zwischen Mobiltelefon und verschiedenen Funkmasten genutzt werden, erhöht sich die Genauigkeit auf 30
Meter. GPS-taugliche Hardware erlaubt sogar die Bestimmung der Position
bis auf 10 Meter Genauigkeit. Die so gewonnene Positionsangabe lässt sich
nun mit anderen Daten koppeln. [Bag01]
Mittels einer Datenquelle, die die Haltestellen der öffentlichen Verkehrsmittel der Stadt und Routinginformationen kombiniert, wird eine Wegbe1
2
KAPITEL 1. EINLEITUNG
schreibung zur nächstgelegenen Haltestelle berechnet. Nach dem Ermitteln
der Adresse des Hotels kann die Fahrverbindung mittels des aktuellen Busfahrplans bestimmt werden.
Werden ähnlich gelagerte Szenarien betrachtet, so wird die Komplexität
der Integration unterschiedlichster Datenquellen (Abbildung 1.1) offensichtlich. Die Abbildung zeigt ein Mindmap zu der Frage, welche Daten für einen
Kunden unterwegs von Bedeutung sein könnten.
Diskothek
Sportplätze
Kino
Bars
Freizeit
Museen
hist. Bauten
PKW
POIs
Verkehr
LKW
Hilfestellen
Polizei
öffentlich
Nutzer
Giftzentrale
Dienstleister
Vorhersage
Wetter
Services
Einkauf
Reisewetter
Vermietung
Wassersport
Wind
Seegang
Restaurant
Bewertung
Zeiten
Abbildung 1.1: Datennetz (Ausschnitt)
Dabei wurden zunächst die vier umfassenden Kategorien Verkehr, Points
of Interests (POIs), Services und Wetter erkannt. Die Kategorie Verkehr
beinhaltet vor allem Routing- und Fahrplan-Informationen sowohl im privaten als auch im logistischen Bereich. Unter POIs versteht man markante
Punkte auf Landkarten wie zum Beispiel Sehenswürdigkeiten und Freizeitanlagen. Weitere interessante Einrichtungen sind unter der Kategorie Services
zusammengefasst. Bei POIs und Services sind nicht nur die Adressen von
3
Interesse, sondern auch zusätzliche Daten wie Öffnungszeiten, Bewertungen
oder geschichtliche Hintergrundinformationen. Nicht zuletzt liefert die Kategorie Wetter nicht nur den Reisenden Entscheidungshilfen, sondern auch
Wassersportlern.
Das Netz in Abbildung 1.1 lässt sich dabei beliebig in alle Richtungen erweitern. Tatsächlich sind neben der eigentlichen Datenlieferung auch Dienstleistungen wie zum Beispiel das Durchführen einer Zimmerreservierung oder
die Vorbestellung eines Mietwagens mögliche Erweiterungen.
Aufgrund der Menge der Daten können diese üblicherweise nicht lokal
von einem einzigen Service-Anbieter vorgehalten werden, erst recht nicht,
wenn er seine Services international anbietet. Abgesehen davon ist der Aufwand zur Wahrung der Aktualität der Daten immens. Es muss daher ein
einfacher und universeller Weg gefunden werden, die verschiedenen Datenquellen zu kombinieren. Eine Möglichkeit ist die Erstellung von Webservices
durch die Betreiber der Datenquellen.
Ein Webservice ist eine zu einem Paket zusammengefasste Sammlung von
Funktionen, das zur Benutzung durch andere Programme im Netz publiziert
wird [Gla00]. Über Webservices lassen sich somit verschiedene Dienstleistungen zu neuen höherwertigen kombinieren. Die Interaktion zwischen den
Webservices erfolgt mit einem standardisierten und universell einsetzbaren
Protokoll.
Übertragen auf das oben entworfene Szenario könnte die Ermittlung der
Fahrverbindung eine Aggregation verschiedener Webservices (Positionsermittlung, Geokodierung, Routing und Fahrplanauskunft) sein.
Das Ziel der Diplomarbeit ist die Realisierung eines webbasierten Zugriffs
auf eine GIS-Datenbank„ unter Verwendung von Webservices. Damit lassen
sich die kartografischen Daten aus der Datenbank durch Kombination mit
anderen Webservices aufwerten.
Zur Verwirklichung dieses Zieles sind verschiedene Teilziele zu erreichen.
Zum Aufbau der Datenbasis wird zunächst ein für die zu erwartenden Anfragen optimiertes Datenbankschema entwickelt und anschließend bezüglich eines konkreten Datenbankmanagementsystem„ (DBMS) umgesetzt. Die Umsetzung in ein konkretes DBMS erfordert auch Überlegungen zum schnellen
Laden der kartografischen Daten in die GIS-Datenbank. Da die Datenbank
vor allem eine Zuordnung von räumlichen Objekten zu deren Koordinaten
vornimmt, sind insbesondere Aspekte der Speicherung und des Zugriffs der
Koordinaten zu berücksichtigen.
Ein weiteres Teilziel besteht im Publizieren der Webservices. Dafür wird
ein Webservice-Verzeichnis aufgesetzt, das das Auffinden und die Auswahl
eines Webservice nach spezifischen Eigenschaften, wie zum Beispiel die Art
der Daten oder der Verfügbarkeit, gestattet.
Erst wenn diese Basis geschaffen ist, kann die eigentliche Realisierung
des Webservice erfolgen. Mit dem Webservice kann dann über das stan-
4
KAPITEL 1. EINLEITUNG
dardisierte Protokoll SOAP kommuniziert und Daten aus der Datenbasis
abgefragt werden. Das Simple Object Access Protocol (SOAP) ist ein einfaches XML-basiertes Protokoll zum Austausch von Informationen in einer
dezentralisierten und verteilten Umgebung [W3C00b].
Erste Erfahrungen für die Entwicklung eines Datenbankschemas für die
Datenbasis wurden bereits in der Studienarbeit [Hee01] gesammelt. Weiterhin wurde dort eine Methode zum Laden der Daten in die Datenbank
vorgestellt. Der neue Fokus der Diplomarbeit bedingt eine Verbesserung der
in der Studienarbeit entwickelten Konzepte.
Das Datenbankschema aus der Studienarbeit erweist sich als ungünstig
für die schnelle Beantwortung von Anfragen an die Datenbasis, da die Daten
vor allem stark vertikal verteilt gespeichert werden, d.h., die Informationen
zu einem Feature„ sind auf mehrere Tupel verteilt, die dann aufwändig durch
Joins zusammengefügt werden müssen. Deshalb muss das Datenbankschema
geeignet abgeändert werden. Dies betrifft auch die physische Speicherung der
Daten in den Tabellen.
Eng mit der Veränderung des Datenbankschemas verbunden ist eine Adaption des Einlesevorgangs, da die Daten nun anders auf die Tabellen verteilt
werden. In der Studienarbeit wurden die Daten aus im GDF-Standard„ kodierten Dateien extrahiert und in ein von der Datenbank nutzbares Format
umgesetzt. Durch die Transformation wurden die Daten auf verschiedene
Dateien verteilt, die anschließend direkt in die Tabellen der Datenbank eingelesen werden. Eine Veränderung des Datenbankschemas bedeutet also eine
Neuverteilung der Daten auf Dateien.
Eine veränderte Ausgangssituation schafft seit kurzem auch die Auslieferung der kartografischen Daten in einem anderen Datenformat, dem
MultiNet— Shapefile-Datenformat. Dieses basiert auf dem ESRI® ShapefileFormat und kombiniert räumliche Objekte mit zugehörigen Eigenschaften
zu einem leicht verarbeitbaren Datenformat. Durch Nutzung dieses Datenformats könnte der durch das GDF-Format entstehende Mehraufwand, z. B.
Konvertierung der Daten und Zwischenspeicherung, vermieden werden.
Der folgende Abschnitt bietet einen Überblick über die einzelnen Kapitel
der Diplomarbeit. Im Anschluss an diese Einleitung befasst sich das zweite
Kapitel mit dem Importieren von kartografischen Daten in eine Datenbank.
Dabei wird auf die Datenformate GDF und MultiNet Shapefile eingegangen.
Nach der Diskussion alternativer Importverfahren bei Datenbanken wird
zunächst die Remodellierung der Vorverarbeitungssoftware für GDF-Dateien
vorgestellt, die vor allem um eine datenbankunabhängige Ausgabe erweitert
worden ist. Der anschließend Abschnitt beschreibt den Import der Daten
aus dem MultiNet Shapefile-Format, wobei ein anderes Importverfahren als
bei den GDF-Dateien eingesetzt wurde.
5
Das dritte Kapitel beschäftigt sich mit mehrdimensionalen Zugriffsverfahren, die im engen Zusammenhang mit einem performanten Zugriff auf
räumliche Daten zu sehen sind. Neben einer allgemeinen Einführung und
der Charakterisierung der Zugriffsverfahren werden grundlegende Anforderungen zusammengestellt. Für die Speicherung der räumlichen Objekte wird
der DB2 Spatial Extender eingesetzt, der dem Nutzer ein mehrdimensionales Zugriffsverfahren zur Verfügung stellt. Damit dieses Zugriffsverfahren
gewinnbringend eingesetzt werden kann, muss es entsprechend konfiguriert
werden. Daher werden im zweiten Teil des Kapitels nach einer Analyse der
Zugriffsstruktur einige Regeln und Heuristiken zur performanten Konfiguration aufgestellt, die anschließend experimentell überprüft werden.
Nachdem eine kartografische Datenbasis erstellt und ein performanter
Zugriff auf die Daten gewährleistet wurde, beschreibt das vierte Kapitel die
Realisierung eines prototypischen Webservice für den Zugriff auf standortbezogene Informationen. Dazu werden zuerst die grundlegensten Standards
kurz erläutert und danach die konkrete Implementierung eines Webservice
unter Verwendung etablierter Werkzeuge dokumentiert.
Wesentliche Begriffe sowie wichtige Begriffe aus der Studienarbeit werden
im Glossar beginnend auf Seite 102 erläutert. Das erste Auftreten eines im
Glossar beschriebenen Begriffs ist durch das Kreuz „ gekennzeichnet.
Kapitel 2
Erstellen der GIS-Datenbank
Zum Einrichten einer Datenbasis müssen die kartografische Daten von Tele
Atlas, einem Unternehmen das kartografische Daten sammelt und aufbereitet, in eine Datenbank übertragen werden. Die Daten werden üblicherweise
nach administrativen Gebieten aufgeteilt und in unterschiedlichen Datenformaten auf CDs ausgeliefert.
Zuerst werden die verschiedenen Importverfahren einer Datenbank gegenübergestellt, um abwägen zu können, welches Verfahren sich für die jeweiligen Datenformate am besten eignet. Wichtige Kriterien sind dabei der
Datendurchsatz sowie die Einfachheit von notwendigen Datentransformationen.
Bisher lieferte der Vertreiber die kartografischen Daten hauptsächlich im
GDF-Datenformat aus. Dieses durch den GDF-Standard [GDF95] definierte
Datenformat gestattet auf Basis eines Referenzmodells den Austausch von
räumlichen Daten zwischen unterschiedlichen Firmen und Organisationen
ohne Kompatibilitätsprobleme. Damit die Daten in eine Datenbank übertragen werden können, ist eine entsprechende Vorverarbeitung der GDF-Datei
notwendig. Die Transformation der GDF-Datei in ein für Datenbanken nutzbares Datenformat beschreibt der zweite Abschnitt dieses Kapitels.
Seit kurzem sind die Daten auch im MultiNet Shapefile-Format verfügbar, auf das im anschließenden Abschnitt eingegangen wird. Basierend auf
dem ESRI Shapefile-Format werden räumliche Objekte mit den zugehörigen Informationen so gespeichert, dass ein Zugriff auf die unterschiedlichen
Layer„ vereinfacht wird. Ein Layer gruppiert die kartografischen Informationen bezüglich ihrer Thematik, z. B. Autobahnen oder Verwaltungsbezirke.
Insofern der Spatial Extender„ des DBMS das Shapefile-Format unterstützt,
reduziert sich der Aufwand für die Integration bzw. den Import der kartografischen Daten in die Datenbank wesentlich.
Der letzte Abschnitt diese Kapitels beschreibt die verwendeten Konzepte
zum Import des MultiNet Shapefile-Formats sowie die Modellierung und
Implementierung eines einfach zu bedienenden Importwerkzeugs, das ohne
6
2.1. ALTERNATIVE EINLESEVERFAHREN
7
großen Aufwand für verschiedene DBMS konfiguriert werden kann.
2.1
Alternative Einleseverfahren
Im Allgemeinen bieten Datenbankmanagementsysteme verschiedene Methoden zum Laden von Daten in Datenbanktabellen, die sich vor allem im
Datendurchsatz unterscheiden. Grundsätzlich lassen sich zwei verschiedene
Methoden für den Datenimport unterscheiden. Zum einen können INSERTAnweisungen generiert werden und zum anderen schreibt ein Werkzeug die
Daten unmittelbar auf Datenbankseiten (Load). Dieser Abschnitt stellt die
alternativen Methoden vor und begründet die getroffenen Entscheidungen.
Dabei wird vor allem Bezug zur verwendeten DB2 UDB genommen.
Die SQL-Anweisung zum Einfügen jedes einzelnen Datensatzes kann entweder von dem Datenbankwerkzeug IMPORT oder durch eine selbst programmierte Routine erzeugt und ausgeführt werden. Wesentliche Eigenschaften
dieses Verfahrens sind die Kontrolle aller Integritätsbedingungen und die
Unterstützung von Auslösern (Trigger) während des Einfügens. Weiterhin
können sowohl Tabellen als auch Indizes trotz des Imports weiter genutzt
werden und das DBMS sorgt durch das Protokollieren aller Operationen für
Datensicherheit, weshalb keine spezielle Sicherung der Daten erforderlich ist.
Nachteilig ist vor allem der zeitliche Aufwand für den Import großer Datenmengen, der unter anderem auch aufgrund des sequenziellen Aktualisierens
der Indizes entsteht.
Im Gegensatz zu der eben beschriebenen Methode werden die Daten
beim Load formatiert und anschließend direkt auf die Datenbankseiten geschrieben. Zuletzt werden die Indizes in einem einzigen Durchgang aktualisiert. Außerdem werden Multiprozessormaschinen besonders unterstützt.
Daher eignet es sich sehr gut zum Laden großer Datenmengen. Jedoch kann
vor Abschluss des Vorganges die Tabelle nicht zugegriffen werden und es erfolgt auch keine Überprüfung von etwaigen Integritätsbedingungen. Da die
Operationen auf der Datenbank nur minimal durch das DBMS protokolliert
wird, muss bei Bedarf ein Sicherungsabbild der Tabelle erstellt werden.
Für die Auswahl des Datenimportverfahrens im Rahmen der Diplomarbeit ist vor allem die Unterstützung von Geometrien von Bedeutung. Daher
wird für eine weitergehende Charakterisierung der Datenimportverfahren
auf [IBM00b] verwiesen.
Geometrien werden durch den DB2 Spatial Extender in einem proprietären Datenformat verwaltet. Dazu stellt der Spatial Extender gespeicherte
Datenbankprozeduren zur Verfügung, die eine Konvertierung aus einer textuellen oder binären Darstellung (OGC1 , ESRI) vornehmen. Zum Importieren von Geometrien müssen die Daten in einer solchen Darstellung vorliegen.
1
Open GIS Consortium
8
KAPITEL 2. ERSTELLEN DER GIS-DATENBANK
Insbesondere bedeutet dies, dass eine Verwendung der üblichen Importverfahren für Tabellen, die räumliche Objekte enthalten, nur mit wesentlich
erhöhtem Aufwand möglich ist. Die erforderlichen Arbeitsschritte beschreibt
[Hee01]; es wird dort festgestellt, dass sich nur die textuelle Darstellung der
Geometrien nutzen lässt, da bei der binären Repräsentation für jede einzelne Geometrie eine separate Datei angelegt werden muss, was aufgrund der
Anzahl nicht vom Betriebssystem effizient gehandhabt werden kann. Weiterhin müssen die Daten in temporären Tabellen und Dateien zwischengelagert
werden. Ein weiterer Nachteil ist die Beschränkung der Textdarstellung einer Geometrie auf 4000 Zeichen durch die gespeicherte Datenbankprozedur,
da bereits etwas komplexere Polygone diese Grenze überschreiten.
Die im folgenden Abschnitt beschriebene Vorverarbeitung der GDFDateien benutzt das eben vorgestellte Verfahren. Für dieses Format ist dies
sinnvoll, da die GDF-Dateien auf jeden Fall transformiert werden müssen,
damit die darin enthaltenen kartografischen Daten geeignet in die Datenbank importiert werden können.
Im Gegensatz dazu zeichnet sich gerade das MultiNet Shapefile-Format
dadurch aus, dass zu jedem beschriebenen Objekt neben den Eigenschaften
auch die dazugehörige Geometrie in einer Tabelle bzw. Datei erfasst wurde.
Das heißt, die Daten sind bereits derart als Layer aufbereitet, dass keine
weiteren Transformationen erforderlich sind. Eine Konvertierung der Geometrien in eine Textdarstellung bedeutet daher einen zusätzlichen Bedarf an
Speicherplatz und Zeit. Daher ist dieses Verfahren für dieses Datenformat
nicht empfehlenswert.
Wie in dem Abschnitt 2.3 zum MultiNet Shapefile-Format beschrieben
wird, wurde deshalb zum einen die Importfunktionalität des DB2 Spatial
Extenders verwendet und zum anderen eine gespeicherte Prozedur zum Laden von dBASE-Dateien implementiert. Diese beiden Prozeduren beruhen
auf dem Ausführen von entsprechend generierten INSERT-Anweisungen. Obwohl die Methoden langsamer arbeiten, werden Ressourcen in Form von
Speicherplatz gespart sowie die Fehleranfälligkeit reduziert, da keine zusätzlichen Konvertierungen und Zwischenspeicherungen notwendig sind.
2.2
Vorverarbeitung der GDF-Dateien
Aufgrund der Anordnung der Daten und dem gegenseitigen Referenzieren
zwischen den Rekords„ (Datensätzen) innerhalb einer GDF-Datei eignet sich
das GDF-Datenaustauschformat nur bedingt zum Einlesen in eine Datenbank. Bevor die GDF-Daten aus den Dateien in die Datenbank übertragen
werden können, bedarf es einer Vorverarbeitung. Diese überführt die GDFDatei in das DEL-Format„, so dass eine einfachere Weiterverarbeitung mit
datenbankinternen Mitteln möglich ist. In [Hee01] wurden bereits die grundlegenden Pakete„ (Scanner und Parser) und ihre Funktionsweise vorgestellt.
2.2. VORVERARBEITUNG DER GDF-DATEIEN
9
Im weiteren Verlauf der Arbeit, auch mit anderen DBMS, hat es sich gezeigt, dass die Modellierung der Vorverarbeitungssoftware vor allem im Bereich der Datenausgabe verbessert werden kann. Zwar ist das DEL-Format
datenbankunabhängig, aber die Verwendung von strukturierten Datentypen„, wie sie meistens von den Spatial Extendern verwendet werden, erfordert eine datenbankspezifische Ausgabe. Daher ist die Software um weitere
Pakete erweitert und stellenweise remodelliert worden.
Zunächst wird ein Überblick über die Vorverarbeitungssoftware gegeben
und das Zusammenwirken der Pakete dokumentiert. Nach der Beschreibung
des zentralen Parser-Pakets, werden die verwendeten Konzepte zur datenbankunabhängigen Ausgabe in DEL-Daten vertieft.
2.2.1
Gesamtüberblick
In diesem Abschnitt werden nach einem Gesamtüberblick zunächst die einzelnen Pakete der Vorverarbeitungssoftware vorgestellt und auf diejenigen
näher eingegangen, die nicht in späteren Abschnitten gesondert aufgegriffen
werden.
Die Daten aus einer GDF-Datei werden durch die Vorverarbeitung je
nach Rekordtyp„ in unterschiedliche DEL-Dateien geschrieben. Ein Rekordtyp beschreibt in einer GDF-Datei den Typ eines Datensatzes bzw. die Art
der Information näher, z. B. Koordinatendatensatz. Zum Verteilen der Daten wird die GDF-Datei zeilenweise gelesen und anschließend von einem Parser ausgewertet. Je nach Art der Daten werden diese dann in entsprechende Dateien hinausgeschrieben. Jeder Arbeitsschritt in der Vorverarbeitung
wird von einem Paket übernommen. Eine Überblick über alle Pakete gibt
das Klassendiagramm in Abbildung 2.1, wobei zur besseren Übersicht die
Import-Abhängigkeiten zu den Paketen Logbook und GDFException nicht
visualisiert wurden, da diese von den meisten anderen Paketen zur Fehlerbenachrichtigung herangezogen werden.
Das Paket Scanner kapselt den Zugriff auf die GDF-Datei gegenüber
den Parsern. Damit wird erreicht, dass die Parser keinerlei Informationen
über die physische Speicherung eines Rekords2 oder die Art des Mediums
benötigen. Der Scanner speichert dazu die jeweils aktuelle logische Zeile in
einem lokalen Puffer. Extraktionsmethoden des Scanners, z. B. readInteger(),
erlauben dann das Auslesen der einzelnen Felder aus der logischen Zeile aufgrund der Positionsangaben wie sie im GDF-Standard definiert sind. Nähere
Informationen zur Speicherung eines Rekords in einer GDF-Datei kann in
[GDF95] oder in Kurzform bei [Hee01] nachgelesen werden.
Zur Vereinfachung der Kommunikation zwischen dem Scanner und den
Parsern der Rekordtypen dient das Paket Queues. In diesem Paket wird der
abstrakte Datentyp Schlange (Queue) implementiert, wodurch das Auslesen
2
Die Länge einer Zeile in einer GDF-Datei ist auf 80 Zeichen beschränkt. Längere
Rekords müssen demnach über mehrere Zeilen verteilt werden.
10
KAPITEL 2. ERSTELLEN DER GIS-DATENBANK
Abbildung 2.1: Übersicht über die Pakete der Vorverarbeitungssoftware
2.2. VORVERARBEITUNG DER GDF-DATEIEN
11
sich wiederholender Datenfelder„ bzw. Datenfeldgruppen„ vereinfacht wird.
Ein weiterer Vorteil ist die Einsparung von sehr vielen Methodenaufrufen.
Die Queues transportieren dabei die aus den Datenfeldern gelesenen Werte
vom Scanner zum Parser.
Wie die Abbildung 2.1 zeigt, bildet das Paket Parser den Mittelpunkt
der Vorverarbeitungssoftware und importiert daher alle anderen. Die Klassen dieses Pakets steuern die Vorverarbeitung und kapseln dabei die Spezifikationen der Rekordtypen aus dem GDF-Standard. Einen Einblick in das
Paket gibt der Abschnitt 2.2.2.
Die Ausgabe in DEL-Dateien versteckt das Paket DelOutput vor den
Parsern. Damit lassen sich bei den Parsern die üblichen Mechanismen zur
Ausgabe von Daten in Dateien verwenden, ohne sich dabei Gedanken über
die Form einer DEL-Datei machen zu müssen. Tiefere Einblicke in die Modellierung des Pakets liefert der Abschnitt 2.2.3.
Für die Repräsentation der Geometrien wurde das Paket Spatial modelliert. Die jeweiligen Klassen speichern die Koordinaten zu den Geometrien
und lassen sich dabei über das Paket DelOutput, wie jeder andere Datentyp
auch, in eine DEL-Datei schreiben; dies ist im Zusammenhang mit der datenbankunabhängigen Ausgabe besonders wichtig. Die Klasse Polygon vereint
zusätzlich zu der Kapselung der Geometrien die Fähigkeiten, doppelte Koordinaten zu eliminieren und Ringe„ zu erkennen. Dadurch entstehen mehr
gültige Polygone, wie sie für die Visualisierung benötigt werden. Falls erforderlich lässt sich dieses Paket auch durch Funktionalitäten zum Validieren
der Geometrien und zur Fehlerbehebung erweitern.
Die Fehlerverwaltung geschieht mit den Paketen Logbook und GDFException und erhöhen damit die Fehlertoleranz des Programms. Diese beiden
Pakete werden von nahezu allen anderen Paketen benutzt. Das Logbook dient
zur Mitteilung möglicher Fehler an den Nutzer; dazu zählen unter anderem
nicht gesetzte Werte oder Konvertierungsfehler aufgrund einer fehlerhaften
GDF-Datei. Die Fehlernachrichten werden wahlweise auf dem Bildschirm
oder in eine Datei ausgegeben. Die im Paket GDFException definierten Ausnahmen erlauben eine Auswertung der Fehlerursache und eine adäquate Reaktion darauf.
2.2.2
Das Parser-Paket
Zwischen Scanner- und DelOutput-Paket eingebunden, steuern die Klassen
des Parser-Paket die Vorverarbeitung und kapseln die Spezifikationen des
GDF-Standards. Dieser Abschnitt vertieft den Aufbau dieses zentralen Paketes. Das Klassendiagramm in Abbildung 2.2 gibt einen Überblick über die
Beziehungen zwischen den Klassen innerhalb diese Pakets.
Im Vergleich zum ersten Entwurf in der Studienarbeit wurde dieses Paket
erheblich verändert. Das neue Modell ist wesentlich modularer aufgebaut, so
dass sich die Integration von Parsern für hinzugenommene Rekordtypen und
12
KAPITEL 2. ERSTELLEN DER GIS-DATENBANK
Abbildung 2.2: Das Parser-Paket
2.2. VORVERARBEITUNG DER GDF-DATEIEN
13
die Wartung des Quellcodes vereinfacht. Zudem sind die Struktur des Pakets
und das Zusammenwirken der Klassen einfacher zu erfassen. Im Zusammenhang mit der Modularisierung wurde auch das Paket Maps„ extrahiert und
separat modelliert. Es wird zur Auflösung von Referenzen der Koordinaten
von Knoten„ (nodes), Linien„ (edges) bzw. Flächen„ (faces) benötigt. Für
eine genaue Beschreibung der Funktionsweise von den Referenzen wird auf
[GDF95] oder [Hee01] verwiesen.
Wesentlicher Bestandteil für die Handhabung der vielen unterschiedlichen Rekordtypen ist die Klasse RecordParser. Von dieser abstrakten Basisklasse leiten sich die Klassen für das Parsen der einzelnen Rekordtypen ab,
wobei jede Klasse für einen Rekordtyp zuständig ist. In diesem Sinne sind die
Spezifikationen für die Rekordtypen aus dem GDF-Standard in den Kindklassen kodiert. In Abbildung 2.2 sind nur die implementierten Rekordtypen
dargestellt.
Alle vom RecordParser abgeleiteten Klassen müssen die Methode parseRecord() implementieren. Beim Aufruf dieser Methode übernimmt der spezifische Parser die Kontrolle des Scannens und extrahiert die notwendigen
Datenfelder eines Rekords. Die herausgezogenen Daten werden dann in ein
oder mehrere DEL-Dateien geschrieben. Die Kontrolle gibt er erst wieder
ab, wenn ein anderer Rekordtyp auftritt oder das Dateiende erreicht ist.
Dann wird vom Parser die Steuerung je nach Rekordtyp an den nächsten
Rekordparser weitergegeben. Dadurch werden wiederholte Methodenaufrufe
und Ojektinstanziierungen vermieden.
Da zu einer Zeit nur eine Instanz eines RecordParser-Kindes existiert,
wird eine Struktur benötigt, die global wichtige Informationen bezüglich
einer GDF-Datei ständig bereithält. Zu diesen Informationen gehören zum
Beispiel die VolumenID und DatasetID, die in fast jeder DEL-Datei mit ausgegeben werden, sowie die verschiedenen Map-Instanzen. Die Klasse GDFInfo, von der nur eine Instanz existiert, bietet den Kindinstanzen die Möglichkeit Informationen an andere weiterzugeben. Die Klassen Parser und RecordParser erhalten über eine Referenz zu dieser Instanz Zugang zu den
globalen Daten.
2.2.3
Die Ausgabe in die DEL-Dateien
Mit der Einführung eines anderen DBMS ändert sich auch die Kodierung
von Geometrien durch den zum DBMS gehörenden Spatial Extender. Da in
der ersten Version der Vorverarbeitungssoftware das Ausgabeformat für die
DEL-Dateien fest in die Rekordparser hineincodiert war, ergaben sich durch
einen Wechsel aufwändige Adaptionsarbeiten. Damit sich der Aufwand auf
ein Minimum reduziert, wurde die Ausgabe in DEL-Dateien durch das Paket
DelOutput gekapselt.
Dieser Abschnitt konzentriert sich hauptsächlich auf die Ausgabe der
Datenfelder in DEL-Dateien. Insbesondere wird gezeigt, inwieweit eine Ad-
14
KAPITEL 2. ERSTELLEN DER GIS-DATENBANK
aption der Vorverarbeitungssoftware an andere DBMS einfach zu realisieren
ist. Dazu wird der Datenfluss zwischen den Klassen der unterschiedlichen
Pakete eingehender betrachtet.
Global gesehen, bewegen sich die Daten aus der GDF-Datei über den
Scanner zum Parser. Nach dem Parsen werden die extrahierten Informationen der Ausgabe übergeben. Diese Stufen lassen sich im Klassendiagramm in
Abbildung 2.3 wiederfinden. So gesehen, hat sich der Datenfluss im Vergleich
zu der Modellierung in [Hee01] nicht weiter verändert. Jedoch wurden in dem
neu entworfenen Modell die einzelnen Stufen zum Teil nochmals verfeinert
modelliert, so dass diese leichter zu warten und Anpassungen einfacher zu
realisieren sind.
Abbildung 2.3: Zusammenwirken der wichtigsten Klassen
Der Zugriff auf eine GDF-Datei wird durch die Klasse Scanner realisiert,
die auch die Zugriffsmethoden zur Navigation und zum Auslesen von Datenfeldern implementiert (vgl. Abbildung 2.3). Gesteuert wird das Scannen
durch die Klassen Parser und RecordParser, wobei die Klasse Parser als Verteiler dient. Entsprechend dem aktuellen Rekordtyp wird eine Instanz einer
Kindklasse des RecordParsers erzeugt und die Kontrolle mittels der Methode
parseRecord() an diese übergeben. Erst nachdem der Block mit demselben
Rekordtyp abgearbeitet wurde, wird die Kontrolle zurückgegeben.
Wie bereits festgestellt, muss zum Erreichen von Datenbankunabhängig-
2.2. VORVERARBEITUNG DER GDF-DATEIEN
15
keit die Ausgabe in die DEL-Dateien von dem Parse-Vorgang entkoppelt
werden. Dazu wurde ein neues Paket geschaffen, dass die Formatierung der
Ausgabe übernimmt. Mit der Basisklasse DelOutput wurde die Ausgabe in
DEL-Dateien für Standarddatentypen realisiert. Da sich für die Standarddatentypen selten Unterschiede ergeben, kann diese Basis im Allgemeinen für
alle DBMS übernommen werden. Besonders kritisch ist die Formatierung
der strukturierten Datentypen oder die Kodierung von Geometrien, weshalb an dieser Stelle ein passendes Entwurfsmuster„ eingesetzt werden muss
– eine Lösung besteht in der Verwendung einer abstrakten Fabrik (abstract
factory). Ein Entwurfsmuster ist eine Beschreibung zusammenarbeitender
Objekte und Klassen, die maßgeschneidert sind, um ein allgemeines Entwurfsproblem in einem bestimmten Kontext zu lösen.
Das Entwurfsmuster abstrakte Fabrik – genau genommen handelt es sich
um ein Erzeugungsmuster – definiert eine Schnittstelle zum Erzeugen von
Familien verwandter oder voneinander abhängiger Objekte, ohne ihre konkreten Klassen zu benennen. Es kann aus verschiedenen Gründen angewandt
werden: wenn das System unabhängig davon sein soll, wie seine Produkte
erzeugt, zusammengesetzt und repräsentiert werden, oder wenn das System
mit einer aus mehreren Produktfamilien konfiguriert werden soll.[GHJV96]
Im folgenden Abschnitt werden die Strukturbestandteile der Fabrikmethode
anhand des vorliegenden Designs erläutert.
Die Basis des Entwurfsmusters bilden eine abstrakte Fabrik und ein abstraktes Produkt. Die abstrakte Fabrik deklariert eine abstrakte Schnittstelle für Operationen, die Produktobjekte erzeugen. Die Schnittstelle für einen
bestimmten Typ von Produktobjekten wird in dem abstrakten Produkt deklariert. In dem vorliegenden Modell geben die Klassen SpatialDelFactory
und SpatialDel die Schnittstellen vor. Da die Ausgabe der Standarddatentypen im Allgemeinen bereits datenbankunabhängig ist, wurde SpatialDel als
Unterklasse von DelOutput modelliert.
Auf die durch die obigen Schnittstellen definierte Grundlage setzen sowohl die konkrete Fabrik und das konkrete Produkt auf. Eine konkrete Fabrik wie z. B. DB2DelFactory implementiert die Operation zur Erzeugung
konkreter Produktobjekte (createSpatialDel()). Die von der konkreten Fabrik erzeugten konkreten und datenbankspezifischen Ausgabeinstanzen, z. B.
DB2Del, realisieren die Schnittstelle des abstrakten Produktes – also im Detail die Speicherung von Geometrien in DEL-Dateien (vgl. Abbildung 2.3).
Je nach DBMS können also von SpatialDel Klassen abgeleitet werden, die
die abstrakten Methoden datenbankspezifisch implementieren.
Bei der Nutzung dieses Entwurfsmuster beschränkt sich die Applikation
auf die Verwendung der Schnittstellen der abstrakten Fabrik und des abstrakten Produktes. Damit wird die Erzeugung von Produktobjekten auf
die Ableitung der abstrakten Fabrik verlagert. Dadurch reduziert sich die
Anzahl der Quellcodeänderungen erheblich und erlaubt eine einfache Umstellung der Vorverarbeitung auf andere DBMS.
16
KAPITEL 2. ERSTELLEN DER GIS-DATENBANK
2.3
Verwendung des MultiNet Shapefile-Format
Seit kurzem bietet Tele Atlas ihre Daten außer im GDF-Dateiformat auch
im MultiNet Shapefile-Format an. In diesem Datenformat werden wie auch
bei GDF-Dateien räumliche Objekte und die dazugehörigen Informationen zusammen gespeichert. Im Gegensatz zum GDF-Standard definiert die
Shapefile-Spezifikation kein allgemeines Referenzmodell„ für die kartografischen Daten, sondern beschreibt ausschließlich die Form der Speicherung in
Dateien. Bezogen auf die Terminologie von Datenbanksystemen repräsentiert eine Shape-Datei eine Tabelle mit einer Spalte räumlichen Datentyps.
Durch diese Art der Speicherung lassen sich die kartografischen Daten ohne
spezielle Vorverarbeitung einfach selektieren und zugreifen.
In den folgenden Abschnitt wird zunächst auf die Shapefile-Spezifikation
eingegangen und anschließend die Speicherung der Informationen im Shapefile-Format beschrieben. Dabei liegt der Schwerpunkt auf den zur Realisierung des Webservice notwendigen Daten. Zuletzt wird die Vorgehensweise
und das Werkzeug zum Laden der Daten in die Datenbank erläutert.
2.3.1
Die Shapefile-Spezifikation
Das weit verbreitete Shapefile-Format wurde von ESRI, Inc. für die Speicherung von kartografischen Daten entwickelt. Im folgenden Teil werden die
grundlegenden Bestandteile der Shapefile-Spezifikation [ESR98] vermittelt
und auf die Verknüpfung von räumlichen Objekten mit den zugehörigen
Informationen eingegangen.
Wenn von der Speicherung räumlicher Objekte im Shapefile-Format gesprochen wird, so ist die Kombination von drei korrelierten Dateien gemeint
– einer Shape-Datei (.shp3 ), einer Indexdatei (.shx) und einer dBASE-Datei„
(.dbf). Dabei enthält die Shape-Datei die Koordinaten der räumlichen Objekte und die dBASE-Datei zusätzliche Informationen zu einem Objekt wie
zum Beispiel Namen oder Identifikatoren. Die Indexdatei enthält Metadaten
zum präzisen Zugriff auf die Rekords in der Shape-Datei.
Ein Merkmal der Speicherung von räumlichen Objekten im ShapefileFormat ist die Auslagerung der Koordinaten in eine separate Datei. Dies ist
sinnvoll, da für die einzelnen räumlichen Objekte, außer bei Punktobjekten,
der Speicherplatzbedarf stark schwankt. Durch diese Aufteilung können die
zusätzlichen Informationen zu einem räumlichen Objekt in einem üblichen
Datenbankdateiformat wie zum Beispiel dem dBASE-Dateiformat verwaltet
werden.
Zwischen der dBASE-Datei und der Shape-Datei besteht eine 1:1-Beziehung; zu dem i-ten Rekord in der Shape-Datei korrespondiert das i-te Rekord
in der dBASE-Datei und umgekehrt. Den schnellen Zugriff auf die Koordinaten der räumlichen Objekte gestattet die Indexdatei. Der i-te Rekord der
3
In Klammern steht die verwendete Dateiendung.
2.3. VERWENDUNG DES MULTINET SHAPEFILE-FORMAT
17
Indexdatei enthält den Offset und die Länge des i-ten Rekords in der ShapeDatei. Die Vektorkoordinaten werden dabei binär kodiert gespeichert. Da
diese Kodierung keinen weiteren Einfluss auf die Diplomarbeit hat, wird für
detaillierte Angaben auf die technische Beschreibung des Shapefile-Formats
[ESR98] verwiesen.
2.3.2
Das MultiNet Shapefile-Format
Der prototypisch zu entwickelnde Webservice ermittelt zu einem vorgegebenen Standpunkt nahe gelegene Einrichtungen, die für den Nutzer von besonderem Interesse sind (POIs). Dazu ist es erforderlich, zunächst alle interessierenden POIs in der Umgebung des Standortes zu bestimmen und anschließend die Adressinformationen zusammenzutragen oder auch eine Route zu
dem ausgewählten Servicepunkt zu berechnen. Von dem Standpunkt der
Realisierung des Webservice ausgehend, wird nachfolgend das Datenmodell
der GIS-Datenbank vorgestellt.
Das MultiNet Shapefile-Format basiert auf der ESRI Shapefile-Spezifikation und bietet unter anderem kartografische Informationen zum Straßennetz, zu POIs und Landnutzung. Vom allgemeinen Referenzmodell des GDFStandards 3.0 [GDF95] wurde das vom MultiNet Shapefile-Format verwendete physische Datenmodell abgeleitet. Das Referenzmodell beschreibt die
Transformation von Objekten der realen Welt in ihre Datenbankrepräsentation und bildet damit das konzeptionelle Modell. Die wichtigsten Aspekte
dieses Referenzmodells werden an dieser Stelle kurz zusammengefasst, um
anschließend das physische Datenmodell aus dem Blickwinkel des zu realisierenden Webservice zu betrachten.
Ein Objekt der realen Welt, z. B. eine bestimmte Straße, wird als ein
Feature„ bezeichnet, das einem Oberbegriff (Feature-Klasse„) zugeordnet
werden kann. Solche Oberbegriffe sind zum Beispiel Straßen und Fährverbindungen, Verwaltungsgebiete oder Gewässer. Je nach Abstraktion der Darstellung wird ein Feature als Punkt-, Linienzug- oder Gebietsfeature interpretiert. Einem Feature können Eigenschaften zugeordnet werden und es
kann semantisch in Beziehung„ zu anderen Feature stehen. Beispielsweise
spiegelt sich die Aussage ein Service liegt an einer Straße in einer Beziehung
zwischen den Feature Service und Straße wider.
Die Verwendung des GDF-Standards bietet einen umfangreichen Katalog
an vordefinierten Feature- und Beziehungstypen. Es ist aber auch möglich,
diesen Katalog um eigene Definitionen zu erweitern. Ausführlichere Darstellungen zum allgemeinen Referenzmodell finden sich in [GDF95, Hee01]
und die Regeln zur Erfassung von Objekten der realen Welt können in
[Tel00a, Tel00b] nachgelesen werden.
Das MultiNet Shapefile-Format nutzt die Kategorisierung der Feature im
GDF-Standard zur Gruppierung der kartografischen Daten in Layer„; insgesamt werden 13 Layer definiert. Diese umfassen beispielsweise das Verkehrs-
18
KAPITEL 2. ERSTELLEN DER GIS-DATENBANK
netz inklusive Geokodierungs- und Routinginformationen, markante Punkte
(POIs) oder Bebauungs- und Verwaltungsgebiete, um nur die wichtigsten zu
nennen.
Im Kontext der Diplomarbeit werden nur die für die vorgesehene Anwendung wichtigsten Layer mit ihrem physischen Datenmodell detailliert
vorgestellt. Den gesamten Umfang der Layerspezifikationen liest man in den
Tele Atlas Dokumentationen [Tel01a, Tel01b] nach.
Verkehrsnetz Layer
Der Schwerpunkt der Tele Atlas Daten liegt auf der Erfassung von Informationen über das Straßenverkehrsnetz in Europa und den USA. Neben
der Darstellung von Straßenverbindungen ermöglicht dieser Layer Routing
und die Konvertierung von Adressen in Koordinaten (Geokodierung). Unter
anderem wird hier auch die Beschilderung der Straßen erfasst.
In dem Ausschnitt aus dem physischen Datenmodell in Abbildung 2.4
wird der Layer Verkehrsnetz gezeigt, der alle Daten zur Visualisierung des
Straßennetzes speichert. Um die Übersicht zu erhöhen, wurden die Attribute ausgeblendet. Eine genaue Vorstellung über die Erfassung von Straßen
laut GDF-Standard unterstützt das Verstehen der Abbildung. Daher werden
diese Aspekte des allgemeinen Referenzmodells kurz ausgeführt.
Abbildung 2.4: Verkehrsnetz Layer (Ausschnitt) [Tel01b]
2.3. VERWENDUNG DES MULTINET SHAPEFILE-FORMAT
19
Die Erfassung der Objekte der realen Welt erfolgt auf unterschiedlichen
Abstraktionsebenen. Auf unterster Ebene (Level 0) bestehen alle Feature
aus einem Netzwerk von Linien„ und Knoten„, wobei jede Linie von Knoten
begrenzt wird. Diese werden auf dem Level 1 zu Straßenelementen (road
elements) und Einmündungen (junctions) zusammengefasst und zur detaillierten Visualisierung verwendet. Auf der nächsthöheren Abstraktionsebene
(Level 2) entstehen Straßen (roads) aus ein oder mehreren Straßenelementen und Kreuzungen (intersections) aus Einmündungen und gegebenenfalls
Straßenelementen. Bei Letzterem können Straßenelemente zum Beispiel bei
der Erfassung von Autobahnausfahrten auftreten. Grundsätzlich wird jede
Straße durch eine Kreuzung an jedem Ende begrenzt.
Das kurze Beispiel der Erfassung einer Autobahn soll den Unterschied
zwischen Level 1 und 2 illustrieren. Auf dem Level 1 wird jede Fahrtrichtung
durch ein eigenes Straßenelement repräsentiert, die jedoch auf dem Level 2
zu einer einzigen Straße verschmelzen. Die zweite Abstraktionsebene findet
vor allem beim groben Routing Verwendung, das keine genauen Abbiegevorgänge einbezieht (z. B. Überlandfahrten auf Autobahnen). Während Level 0 nicht mit dem MultiNet Shapefile-Format ausgeliefert wird, kann auf
Daten der Level 1 und 2 zugegriffen werden.
Abbildung 2.4 zeigt die Verwaltung des Straßennetzes auf den Leveln
1 und 2. Hier lassen sich fast alle oben beschriebenen Elemente wiederfinden. Die Tabelle Straßennetz4 speichert die erste Abstraktionsebene, wobei
die Einmündungen nicht explizit modelliert wurden. Die Kreuzungen und
Straßen auf dem Level 2 werden durch die Tabellen Level 2 Straße und Kreuzung repräsentiert. Die übrigen Tabellen unterstützen die Modellierung von
Kreuzungen.
In der Tabelle Kreuzung sind die Eigenschaften zu Kreuzungen zusammengefasst. Eine Kreuzung kann sich aus ein oder mehreren Einmündungen
und Straßenelementen zusammensetzen. Die Bestandteile einer Kreuzung
werden in der Tabelle Kreuzung Index verwaltet. Handelt es sich bei der
Kreuzung um eine Autobahnausfahrt kann zusätzlich der Mittelpunkt erfasst sein. Die Spalte elemID von der Tabelle Kreuzung Index referenziert
in der Straßennetz-Tabelle die ID eines Straßenelement oder die ID einer
Einmündung5 , je nach Feature-Klasse„.
Die zu einer Straße (Level 2) kombinierten Straßenelemente (Level 1)
werden in der Tabelle Level 2 Straße beschrieben. Dabei werden die Bestandteile (Straßenelemente oder Kreuzungen) einer Straße durchnummeriert aufgelistet, wobei das erste und letzte Teil stets Kreuzungen sind. Die
elemID referenziert je nach Feature-Klasse des Teilelements entweder das
Straßennetz oder den Kreuzungsindex.
4
Die zwei Buchstaben hinter dem Namen der Tabelle gibt die Kennung wieder, wie sie
von Tele Atlas verwendet wird.
5
Anmerkung zu Abbildung 2.4: Alle Straßenelemente sind gerichtet und unterscheiden
daher die begrenzenden Einmündung in F JnctID (Start) und T JnctID (Ende).
20
KAPITEL 2. ERSTELLEN DER GIS-DATENBANK
Points of Interest Layer
Für die Selektion der nahe liegenden Servicepunkte bezüglich eines Standortes bietet sich das Layer mit den Points of Interest„ (POI) an. Dieser Layer
stellt die Informationen zu den unterschiedlichen markanten Gebäuden oder
Serviceeinrichtungen zur Verfügung. Solche Einrichtung sind zum Beispiel
Krankenhäuser, Hotels, Restaurants oder Tankstellen. Im Folgenden werden nun die Zusammenhänge zwischen den POIs und dem Verkehrsnetz
beschrieben.
Abbildung 2.5 zeigt einen Ausschnitt des POI Layers aus dem physischen
Datenmodell. Da die Attribute der Tabellen in diesem Kontext weniger wichtig sind, wurden diese nicht in die Abbildung mit aufgenommen. Neben den
zentralen Tabellen Straßennetz und POI beschreiben die übrigen Tabellen
Zugangsbeziehungen zwischen Straßenelementen und POIs.
Abbildung 2.5: Points of Interest Layer (Ausschnitt) [Tel01b]
Die Tabelle POI enthält die wichtigsten zu einem POI erfassten Eigenschaften und bildet den Ausgangspunkt, wenn nach bestimmten Einrichtungen gesucht wird. Da einige Einrichtungen über mehrere Zugänge von
verschiedenen Straßen aus verfügen, werden diese in einer separaten Tabelle POI Zugang verwaltet. Die Zugänge können zu einer Einmündung eines
Straßenelements im Straßennetz führen. Zusätzlich zu den Zufahrten der
POIs kann die am nächsten gelegene Straße (closest transportation element
ID) erfasst sein. Falls keine Zufahrt zu einem POI definiert ist, ist es stattdessen möglich, die Position des am nächsten gelegenen Straßenelements
zu verwenden. Teilweise sind in der Realität Services in anderen integriert,
z. B. ein Restaurant in einem Hotel, oder lassen sich nur über andere Einrichtungen nutzen. Die Beziehung zwischen zwei POIs (service belongs to
service) wird durch die Tabelle POI Beziehung ausgedrückt. Über die ID
eines POIs aus der POI-Tabelle lassen sich dazugehörige (ID ←→ P OIID)
2.3. VERWENDUNG DES MULTINET SHAPEFILE-FORMAT
21
oder untergeordnete POIs (ID ←→ belP OIID) ermitteln.
2.3.3
Einlesen der dBASE- und Shape-Dateien
Das MultiNet Shapefile-Format bildet eine Alternative zum vorher besprochenen GDF-Dateiformat. Die bereits durch den Produzenten durchgeführte
Aufteilung der Daten in Layer reduziert den Aufwand für die Vorverarbeitung der Daten erheblich. Anders als beim GDF-Dateiformat ist es nicht
mehr erforderlich, die gesamten Daten zu parsen und für das Laden in die
Datenbank aufzubereiten. Abgesehen davon, dass die Attribute der Feature
leichter zugänglich sind, entfällt insbesondere die Dereferenzierung von IDs
(vgl. [Hee01]), um die Koordinaten für ein räumliches Objekt zu ermitteln.
Im Zusammenhang mit dem in der Diplomarbeit verwendeten DB2 Spatial
Extender wird der Import der Daten durch die Unterstützung des ShapefileFormats vereinfacht.
Wie bereits beschrieben, werden die kartografischen Daten auf Layer aufgeteilt. Eine Datei im Shapefile-Format speichert jeweils nur die Daten einer
relationalen Tabelle in einer Datei, weshalb zu einem Layer mehrere ShapeDateien gehören. Auf einer höheren Ebene sind die Daten aufgrund geografischer Zusammengehörigkeit in einem Verzeichnis zusammengefasst; das
Kriterium für die Gruppierung sind Verwaltungsgrenzen. Insgesamt umfasst
die komplette Datensammlung für ein Verwaltungsgebiet (ein Verzeichnis)
198 Dateien.
Zur Automatisierung des Datenimports wurde ein Werkzeug modelliert
und implementiert. Das Hauptanliegen bei der Modellierung des Werkzeugs
war einfache Bedienbarkeit und Konfiguration sowie eine Portierung auf andere Betriebssysteme und Datenbanken mit geringem oder gar keinem Einfluss auf die Quellen. Zugleich wurde ein hoher Datendurchsatz angestrebt.
Dieser Abschnitt beschreibt die verwendeten Konzepte und das zugrunde
liegende Modell des Werkzeugs, sowie die speziellen Anpassungen, die aufgrund der Verwendung des DB2 Spatial Extenders erforderlich sind.
Das Use-Case-Diagramm in Abbildung 2.6 gibt einen Überblick über
den Importvorgang. Insgesamt lassen sich beim Import zwei beteiligte Systeme identifizieren, das Importwerkzeug und die GIS-Datenbank. Der Nutzer
bedient sich des Importwerkzeugs, um die Dateien des MultiNet ShapefileFormats in die Datenbank einzulesen. Das Importwerkzeug bereitet den Import in die Datenbank vor und gibt den Auftrag an die Datenbank weiter.
Dabei wird aus Sicht des Importwerkzeugs davon ausgegangen, dass das
System GIS-Datenbank in der Lage ist, dBASE- und Shape-Dateien einzulesen.
Nicht jede Erweiterung eines DBMS um die Verwaltung räumlicher Daten kann Shape-Dateien verarbeiten und nicht jedes DBMS unterstützt
das dBASE-Format. Daher muss in solchen Datenbankmanagementsystemen zunächst die entsprechende Funktionalität zum Beispiel als gespeicherte
22
KAPITEL 2. ERSTELLEN DER GIS-DATENBANK
Abbildung 2.6: Import vom MultiNet Shapefile-Format
Prozedur integriert werden. Der in der Diplomarbeit verwendete DB2 Spatial Extender ergänzt DB2 UDB um die Fähigkeit, Shape-Dateien einlesen
zu können. Jedoch wird das dBASE-Format nicht unterstützt und erforderte die Implementierung eines entsprechenden Importmoduls. Daher wird
zunächst auf diesen Punkt näher eingegangen, um daran anschließend die
Konzepte des Importwerkzeugs zu erklären.
Erweiterung der Importfunktionalität des DBMS
Zum Zwecke der Erweiterung der Importmöglichkeiten von DB2 UDB um
das dBASE-Format wurde eine dementsprechende gespeicherte Prozedur
sp import dbf() implementiert. Diese Prozedur nimmt einen Dateinamen
und den vollständig qualifizierten Namen einer Tabelle als Eingabe, um dann
die Daten aus der Datei in die spezifizierte Tabelle zu laden.
Für das Extrahieren der Daten aus der dBASE-Datei wurde die unter GNU LGPL6 stehende C-Bibliothek Shapefile C Library V1.2 von Frank
Warmerdam [War01] nach vorheriger Modifizierung eingesetzt. Das dBASEImportmodul wurde unter Benutzung des Call Level Interfaces„ (CLI) implementiert und ist daher einfach auf andere Datenbanken portierbar. Um
den Import der Datei zu beschleunigen, wurde zum einen die Implementierungssprache C ausgewählt und zum anderen erfolgt die Datenübertragung
zur Datenbank in großen Blöcken.
Obwohl die Daten mittels langsamen INSERT-Anweisung an die Datenbanksystem geschickt werden, wird eine Beschleunigung des Imports durch
6
GNU Library General Public License
2.3. VERWENDUNG DES MULTINET SHAPEFILE-FORMAT
23
die gleichzeitige Übertragung mehrerer Rekords an die Datenbank erreicht.
Speziell bei den großen Datenmengen verringert sich Anzahl der INSERTAufrufe erheblich (vgl. Abbildung 2.7). Die Anzahl der gleichzeitig übertragenen Rekords ist parametrisierbar und dient gleichzeitig als commit-Punkt.
2x INSERT
Bulk
Gespeicherte
Prozeduren
40.000x INSERT
Einzeln
Daten−
bank
Abbildung 2.7: Aufrufvarianten der INSERT-Anweisung
Automatisierung des Importvorganges
Nachdem die Datenbank sowohl Shape- als auch dBASE-Dateien importieren kann, wird abschließend das Importwerkzeug in den wichtigsten Punkten dokumentiert. Das Importwerkzeug ermöglicht es einem Nutzer, Dateien
des MultiNet Shapefile-Formats automatisiert in die Datenbank zu laden.
Das Resultat ist ein einfach zu bedienendes Werkzeug, das für verschiedene
DBMS und räumliche Datenbankerweiterungen konfiguriert werden kann.
Weiterhin ist es mit wenigen oder gar keinen Änderungen im Quellcode
möglich, beliebige SQL-Anweisungen (z. B. die Erzeugung oder Registrierung von gespeicherten Prozeduren) einzubinden, falls keine Einschränkungen durch das DBMS vorliegen. Das Importwerkzeug wurde prototypisch für
DB2 UDB konfiguriert, wobei zusätzlich eine automatisierte Vorbereitung
einer frischen“ Datenbank für die Nutzung mit dem DB2 Spatial Extender
”
integriert wurde.
Abbildung 2.8 visualisiert die Aufteilung der Klassen auf die verschiedenen Pakete. Auf der obersten Ebene besteht das Importwerkzeug aus den
Paketen teleatlas, database und configurator, wobei das letztere ausschließlich
Basisklassen zur Verarbeitung von XML-Konfigurationsdateien enthält. Der
mit dem Nutzer kommunizierende Teil befindet sich im Paket teleatlas. Die
Klassen in diesem Paket dienen dem Einlesen der allgemeinen Konfiguration, dem Bestimmen der zu importierenden Dateien und dem Beauftragen
des DBMS zum Laden der gefundenen Dateien. Damit übernimmt dieses
Paket die Steuerung des Importvorganges. Das Paket database beinhaltet
die Logik zum Verbindungsaufbau zur Datenbank und zur Ausführung von
SQL-Anweisungen. Zusätzlich definiert es die abstrakte Basisklasse zum Importieren der dBASE- und Shape-Dateien. In diesem Paket sind die Pakete
sql zur Ausführung von SQL-Prozessen und db2 mit den DB2 UDB spezifischen Implementationen der abstrakten Klassen enthalten. Die Modellierung
24
KAPITEL 2. ERSTELLEN DER GIS-DATENBANK
der letzten beiden Pakete wird im Folgenden vorgestellt. Dabei befasst sich
ein Paragraf speziell mit den zusätzlichen Vorbereitungen für Einsatz des
DB2 Spatial Extender.
Abbildung 2.8: Pakete des Importwerkzeugs
Das Importwerkzeug wurde in der Programmiersprache Java geschrieben. Diese Wahl hat vernachlässigbaren Einfluss auf die Performanz des
Datenimports, da dieser separat durch gespeicherte Datenbankprozeduren
realisiert ist. Zugleich lässt sich das Importwerkzeug später ohne viel Aufwand um eine grafische Benutzeroberfläche (GUI) erweitern.
Paket teleatlas Das Klassendiagramm in Abbildung 2.9 zeigt einige Klassen des Pakets teleatlas mit den wesentlichen Memberfunktionen sowie die
Verknüpfung mit der Datenbankfunktionalität über die Klassen DbFileLoader und SQLProcess. Das Paket bildet die Schnittstelle zum Nutzer und
hat die Aufgabe, die Namen aller zu importierenden Dateien zu ermitteln
und für jede den Importauftrag an die Datenbank weiterzuleiten. Des Weiteren wird hier die allgemeine Konfiguration ausgelesen und dem System zur
Verfügung gestellt.
Da der größte Teil der Konfiguration über XML-Dateien abgewickelt
wird, muss der Klasse ImportTeleatlas nur der Pfad zu den Dateien des Mul-
2.3. VERWENDUNG DES MULTINET SHAPEFILE-FORMAT
25
Abbildung 2.9: Das Paket teleatlas
tiNet Shapefile-Formats übergeben werden. Nach Initialisierung der Klasse
übernimmt die Methode ImportTeleatlasFiles() die Kontrolle und erzeugt
einen Iterator„ für die Dateien im spezifizierten Verzeichnis. Der Iterator
TeleatlasFileIterator durchsucht rekursiv das Verzeichnis nach Dateien des
Typs dBASE oder Shape. Bevor je nach Typ der gefundenen Datei die entsprechende Importfunktion der Datenbank aufgerufen wird, werden gegebenenfalls die Tabellen mittels eines SQL-Prozesses in der Datenbank angelegt.
Die Funktionsweise von SQL-Prozessen wird später separat erläutert.
Da der Import selbst datenbankspezifisch ist, wurde bei der Implementierung der Methode ImportTeleatlasFiles() die abstrakte Basisklasse DbFileLoader eingesetzt, die die Methoden importDBFFile() und importSHPFile()
der Anwendung zur Verfügung stellt und damit Datenbankfunktionalität
kapselt. In der allgemeinen Konfiguration des Importwerkzeugs muss angegeben werden, welche konkrete Ableitung von DbFileLoader verwendet
wird. Der Vorteil dieser Vorgehensweise ist, dass ohne Codeänderung eine
Abwandlung des Importverfahrens in die Datenbank möglich ist. Dies umfasst nicht nur das Verwenden eines anderen DBMS, sondern es können für
dasselbe DBMS unterschiedliche Strategien entwickelt und getestet werden.
Für das in der Diplomarbeit verwendete DBMS wurde eine Ableitung von
DbFileLoader implementiert, die für Shape-Dateien die gespeicherte Proze-
26
KAPITEL 2. ERSTELLEN DER GIS-DATENBANK
dur gse import shape() des DB2 Spatial Extender und für dBASE-Dateien
die oben beschriebene Prozedur sp import dbf() nutzt.
Die für alle Datenbanken notwendigen Einstellungen werden über die
Klasse ImportConfigurator zugänglich gemacht. Dabei wird die mittels einer
XML-Datei gespeicherte Konfiguration in unterschiedliche Abschnitte unterteilt, denen jeweils eigene Verwaltungsklassen zugeordnet sind. Die Struktur
der XML-Datei und weiterführende Erklärungen zur allgemeine Konfiguration befinden sich in Anhang A.1.2.
Paket database Alle Kontakte zur Datenbank werden über das Paket database abgewickelt. Dies umfasst den datenbankspezifischen Auf- und Abbau
von Datenbankverbindungen und das Ausführen von SQL-Anweisungen jeglicher Art, insofern keine Einschränkungen aufgrund des DBMS vorliegen.
Zum einen lassen sich einzelne SQL-Anweisungen absetzen und zum anderen ist es möglich, vorher zu SQL-Prozessen zusammengestellte Kommandos
abzuarbeiten. Nach der Beschreibung der Handhabung von Datenbankverbindungen wird näher auf SQL-Prozesse eingegangen.
Eine Übersicht über die wichtigsten Elemente des Pakets database gibt
das Klassendiagramm in Abbildung 2.10. Das Kernstück dieses Pakets ist die
Klasse DbConnector, die die Verbindung zur Datenbank unterhält und unter
anderem für das Ausführen von SQL-Anweisungen zuständig ist. Die datenbankseitigen Parts der allgemeinen Konfiguration werden durch die Klassen
DatabaseConfigurator und SpatialConfigurator sowie durch die Klasse SQLConfigurator des Pakets sql dem System zur Verfügung gestellt. Die bereits
vorgestellte Klasse DbFileLoader ist ebenfalls diesem Paket zugeordnet. Auf
diese Klasse wird nicht weiter eingegangen, sondern sie wurde nur zur Einordnung in den Datenbankkontext mit in die Abbildung aufgenommen. Das
in diesem Paket enthaltene Paket sql enthält die Klassen zur Realisierung
von SQL-Prozessen. Weiterhin befindet sich hier das Paket DB2, das die
datenbankspezifischen Klassen für DB2 UDB zusammenfasst.
Die Konstruktion der URL zum Verbindungsaufbau zu einer Datenbank aus den Angaben Datenbankname, Port, usw. wird von den JDBCTreiberherstellern individuell gestaltet. Damit nun das Importwerkzeug auch
zu verschiedenen DBMS Verbindung herstellen kann, benutzt der DbConnector die abstrakte Basisklasse DbConnection, die eine Methode zum Herstellen der Datenbankverbindung deklariert. Der Name der zu verwendenden
konkreten Implementierung wird in der allgemeinen Konfiguration angegeben (vgl. Abschnitt A.1.2).
Es existiert nur eine Instanz der Klasse DbConnector, die in der jetzigen
Implementation auf genau eine Datenbankverbindung zurückgreift. In einem
anderen Kontext ist es auch vorstellbar, dass ein Pool mit mehreren Verbindungen verwaltet wird. Die Anwendung, in diesem Fall DbFileLoader, erhält
keinen direkten Zugriff auf das Handle der Datenbankverbindung, sondern
2.3. VERWENDUNG DES MULTINET SHAPEFILE-FORMAT
27
Abbildung 2.10: Das Paket database
greift über Methoden der Klasse DbConnector darauf zu. Damit wirken sich
Änderungen im Design bei der Verwaltung der Datenbankverbindung nicht
auf die Anwendungen aus.
Die Klassen DatabaseConfigurator und SpatialConfigurator gestatten den
Zugriff auf die Bereiche der Datenbankkonfiguration und der Konfiguration
der räumlichen Erweiterung (vgl. Anhang A.1.3).
Paket sql Eine Eigenschaft des MultiNet Shapefile-Formats ist, dass außer den Spaltennamen und den Datentypen der Spalten keine weiteren Informationen gespeichert sind. So sind keine Primär- oder Fremdschlüssel
definiert. Im Allgemeinen müssen die Spalten des Primärschlüssels explizit als NOT NULL deklariert werden, weshalb eine vollautomatische Generierung der Tabellen nicht möglich ist. Zur Lösung des Problems wurden SQLProzesse implementiert. Diese ermöglichen es dem Benutzer, auf sehr einfachem Weg SQL-Anweisungen aus Dateien an festgelegten Punkten in den
Importvorgang einzubinden. Auch bei der Implementierung eigener Routi-
28
KAPITEL 2. ERSTELLEN DER GIS-DATENBANK
nen vereinfachen diese den Zugriff auf SQL-Dateien. Eine hervorzuhebende
Eigenschaft von SQL-Prozessen ist die Fähigkeit, Zeichenketten in den SQLAnweisungen zur Adaption an verschiedene DBMS substituieren zu können.
Insbesondere wird im Folgenden dieser Mechanismus und dessen Anwendung
im Importwerkzeug vorgestellt.
Die gebräuchlichsten Datentypen lassen sich häufig auf ANSI-Standard
Datentypen zurückführen, die im Allgemeinen von den meisten DBMS auch
akzeptiert werden (z. B. bei der Erzeugung von Tabellen). Im Zusammenhang mit räumlichen Datentypen unterscheiden sich aber sowohl die Benennung als auch die Modellierung der Datentypen. Damit unter anderem nicht
für jedes DBMS spezielle DDL-Anweisungen (Data Definition Language„)
geschrieben werden müssen, wurden die SQL-Prozesse um einen Substitutionsmechanismus erweitert.
SQL-Prozesse bauen auf SQL enthaltende Textdateien auf und werden in
der allgemeinen Konfiguration in der Sektion sqlProcesses definiert (vgl.
Anhang A.1.2). Eine SQL-Datei wird durch eine Instanz der Klasse SQLReader repräsentiert, die ein sequenzielles Einlesen der SQL-Anweisungen
erlaubt. Die SQL-Dateien können beliebige SQL-Anweisungen enthalten, sofern keine Einschränkungen durch das DBMS vorliegen, zum Beispiel dürfen
einige Kommandos nur über den Kommandozeileninterpreter abgesetzt werden. Einem SQL-Prozess können auch mehrere SQL-Dateien respektive Instanzen des SQLReaders zugeordnet werden, wobei diese in der Reihenfolge
der Nennung abgearbeitet werden.
Für jede SQL-Datei lassen sich Abbildungen (mapping) von Zeichenketten (token) auf Zeichenketten (value) definieren, das heißt, eine Zeichenkette wird durch eine andere substituiert. Damit lassen sich die Datentypen
für räumliche Spalten in der DDL mit einer allgemeingültigen Bezeichnung
versehen, die erst bei Ausführung der Anweisung durch eine datenbankspezifischen Datentyp ersetzt wird. Zum Beispiel kann als räumlicher Datentyp
in der SQL-Datei DT Point verwendet werden, der erst zur Ausführungszeit
auf die Zeichenkette DB2GSE.ST POINT beim DB2 Spatial Extender oder
MDSYS.SDO GEOMETRY bei Oracle abgebildet wird. Damit erst zur Laufzeit
definierte Werte, z. B. Datenbankname, Schemaname oder Nutzername, in
den SQL-Dateien verwendet werden können, ist die Referenzierung von vorher festgelegten Variablen“ möglich.
”
Ein Beispiel illustriert die Verwendung dieses Mechanismus. Angenommen eine Anwendung definiert eine Variable schemaName, die auf den jeweils aktuellen Schemanamen abgebildet wird. Nun lässt sich eine Zeichenkette %1 in der SQL-Anweisung durch den aktuellen Schemanamen substituieren, indem die Variable schemaName dereferenziert wird. Abbildung 2.11
veranschaulicht die soeben verwendeten Substitutionen bezüglich Datentyp
und Schemaname.
Vorteilhaft an der Vorgehensweise ist die Trennung von SQL und Anwendung. Ohne direkten Eingriff in die Applikation lassen sich die SQL-
2.3. VERWENDUNG DES MULTINET SHAPEFILE-FORMAT
SQL−Datei
ausgeführte Anweisung
CREATE TABLE %1.point
(p DT_POINT);
...
CREATE TABLE schema.point
(p DB2GSE.ST_POINT)
...
29
Konfigurationsdatei
...
<mapping token="%1"
valueRef="schemaName" />
<mapping token="DT_POINT"
value="DB2GSE.ST_POINT" />
...
Abbildung 2.11: Substitution innerhalb von SQL-Dateien
Anweisungen verändern, z. B. das Hinzufügen von neuen Tabellen oder NOT
NULL-Deklarationen.
Im Rahmen der Diplomarbeit nicht erforderliche Verbesserungen der
Mechanismen in den SQL-Prozessen wären zum Beispiel eine intelligente
bzw. definierbare Behandlung von Fehlern, die bei der Ausführung der SQLAnweisungen entstehen.
Falls für eine SQL-Datei Substitutionen von Zeichenketten definiert sind,
muss darauf geachtet werden, dass keine Seiteneffekte entstehen. Seiteneffekte können durch unbeabsichtigte Ersetzungen in den SQL-Anweisungen
entstehen, z. B. die ungewollte Veränderung von Tabellen-, Spalten- oder Indexnamen. Derartige Seiteneffekte vermeidet man am sichersten durch die
Verwendung von in SQL unerlaubten Zeichen in den selbst definierten Token.
Bei der Erzeugung der Tabellen werden Substitutionen zum Ersetzen
der räumlichen Datentypen genutzt und. Des Weiteren wird der Name des
Schemas, in das die Daten importiert werden, zur Laufzeit aus dem Dateinamen ermittelt. Weiterhin werden über den Mechanismus auf einfache Art
die gespeicherten Prozeduren in der Datenbank erzeugt bzw. registriert.
Paket db2 Hauptsächlich implementieren die Klassen im Paket db2 die zuvor beschriebenen abstrakten Basisklassen. Daher bedarf es eigentlich keiner
separaten Beschreibung. Jedoch beschränkt sich die Implementierung der
Klasse DB2FileLoader nicht nur auf den Import von dBASE- und ShapeDateien, sondern sie automatisiert auch die Vorbereitung der Datenbank
für die Verwendung des DB2 Spatial Extenders. Die zusätzlich realisierten
Aufgaben sollen im Folgenden kurz zusammengefasst werden.
Bevor bei DB2 UDB eine Datenbank räumliche Daten speichern kann,
müssen die Datentypen, gespeicherten Prozeduren und Funktionen des DB2
Spatial Extenders in der Datenbank erzeugt werden. Weiterhin muss für
30
KAPITEL 2. ERSTELLEN DER GIS-DATENBANK
die zu speichernden räumlichen Daten ein entsprechendes räumliches Bezugssystem erstellt werden. Diese beiden Aufgaben werden durch die Klasse DB2FileLoader, eine Ableitung der abstrakten Basisklasse DbFileLoader,
automatisiert.
Dazu wird vor dem Import einer Shape-Datei geprüft, ob die räumlichen Datentypen bereits existieren. Sollte dies nicht der Fall sein, so werden
als erstes die Datenbankparameter entsprechend der datenbankspezifischen
Konfigurationsdatei gesetzt. Anschließend wird die gespeicherte Prozedur
db2gse.gse enable db() des DB2 Spatial Extenders ausgeführt, die die zur
Verarbeitung räumlicher Daten notwendigen Datenbankobjekte erzeugt.
Des Weiteren wird getestet, ob das in der Konfigurationsdatei angegebene räumliche Bezugssystem bereits registriert wurde. Ein räumliches Bezugssystem dient der Transformation der Originalkoordinaten in eine Datenbankrepräsentation, bestehend aus positiven ganzzahligen Werten. Ohne ein
derartiges Bezugssystem können keine räumlichen Daten importiert werden.
Gegebenenfalls wird das Bezugssystem selbstständig nach den Vorgaben aus
der Konfiguration registriert. Erst nach diesen Prüfungen wird der Import
durchgeführt. Weitere Informationen zu den Datenbankparametern und dem
räumlichen Bezugssystem sind im Anhang A.1.3 zusammengefasst.
Kapitel 3
Zugriff auf räumliche Daten
Im vorherigen Kapitel wurde der Import der kartografischen Daten in eine
Datenbank beschrieben. Für eine performante Beantwortung von Anfragen
an die Datenbasis werden üblicherweise gezielt Indizes für ein oder mehrere
Spalten einer Tabelle erzeugt. Durch das Anlegen von Indizes wird das Optimierungsprogramm des DBMS in die Lage versetzt, performantere Anfragebearbeitungspläne zu entwickeln. Anstatt sequenziell die gesamte Tabelle zu
durchsuchen, können Daten meistens schneller über einen Index zugegriffen
werden, da Indexdateien im Allgemeinen kleiner und in kürzerer Zeit lesbar
sind. Durch Einschränkung des Suchbereiches lassen sich zusätzlich Teile des
Suchraumes ausschließen, wodurch weniger Seiten gelesen werden müssen.
Bei dem angestrebten Webservice werden zu einem gegebenen Standort
nahe gelegene POIs gesucht. Anders formuliert: es werden alle Punkte in
einem vorgegebenen Bereich gesucht; es handelt sich dabei um eine so genannte Bereichsanfrage. Da eine GIS-Datenbank üblicherweise ein größeres
Territorium abdeckt, müssen geeignete Indizes zum Auffinden aller räumlichen Objekte in einem Gebiet erstellt werden, um eine rasche Beantwortung
einer Anfrage an die Datenbank und damit an den Webservice zu ermöglichen.
Eine wesentliche Eigenschaft der in der Anfrage zu verarbeitenden Daten ist die Mehrdimensionalität, wobei jede Dimension gleichberechtigt gegenüber den anderen ist. Weil es für räumliche Objekte keine totale Ordnung
gibt, die die Nachbarschaftsbeziehungen aufrechterhält, können Verfahren
zur Indizierung eindimensionaler Daten nicht ohne Weiteres auf mehrdimensionale Daten angewendet werden. Seit den 60-ern wurden daher Strukturen
entworfen, die gerade den effizienten Zugriff auf mehrdimensionale Daten
gewährleisten.
Da die räumlichen Daten im Design des Webservice von zentraler Bedeutung sind, wird in diesem Kapitel auf mehrdimensionale Zugriffsverfahren
eingegangen. Zunächst erfolgt eine Charakterisierung der unterschiedlichen
Zugriffsverfahren, um anschließend das durch den DB2 Spatial Extender
31
32
KAPITEL 3. ZUGRIFF AUF RÄUMLICHE DATEN
implementierte Zugriffsverfahren zu analysieren und dessen Eigenschaften
zusammenzutragen. Aus der Analyse lassen sich dann Regeln und Heuristiken ableiten, die zu einer performanten Konfiguration führen. Dabei sind die
seitens des Nutzers veränderbaren Parameter von besonderem Interesse. Die
Parameter bestimmen, wie gewinnbringend ein Index für die Beantwortung
einer Anfrage ist.
3.1
Mehrdimensionale Zugriffsverfahren
Mehrdimensionale Daten werden nicht nur in GIS-Datenbanken verwendet,
sondern lassen sich auch in anderen Bereichen wiederfinden, z. B. CADSysteme, Expertensysteme oder Medizin. Bei den großen gespeicherten Datenmengen ist für das Arbeiten mit solchen Systemen ein effizienter Zugriff
auf die Daten besonders wichtig. Zu den effizient auszuführenden Operationen gehört unter anderem das Aufsuchen von Datensätzen über mehrere
gleichberechtigte Schlüssel – man spricht auch vom symmetrischen Aufsuchen. [HR99]
Dieser Abschnitt gibt einen Überblick über mehrdimensionale Zugriffsverfahren, die Suchoperationen in räumlichen Datenbanken unterstützen.
Dabei werden zuerst Kriterien zur Klassifikation und wünschenswerte Eigenschaften der Verfahren zusammengefasst. Anschließend erfolgt eine generelle
Beschreibung der Bearbeitung von Anfragen, bei denen ein räumlicher Index einbezogen wird. Auf Basis der so gewonnenen Kenntnisse lässt sich
das mehrdimensionale Zugriffsverfahren des DB2 Spatial Extender konkreter beschreiben und analysieren.
3.1.1
Charakterisierung
Bei der Charakterisierung mehrdimensionaler Zugriffsverfahren existieren
keine eindeutigen Hierarchien, sondern vielmehr können die Methoden durch
Betrachtung unterschiedlicher Aspekte gruppiert werden. Hybride Verfahren
erlauben bezüglich einer Eigenschaft teilweise keine eindeutige Zuordnung.
Im Folgenden werden einige Merkmale zusammengefasst, nach denen sich
solche Gruppen herausbilden lassen.
Die Verfahren können danach sortiert werden, ob die Struktur bezüglich
des zu speichernden Datensatzes oder des einbettenden Datenraumes aufgebaut wird [NHS84, LLWS97]. Bei den ersteren erfolgt die Unterteilung des
Datenraumes aufgrund der Werte in den Datensätzen, wie beispielsweise
beim k-d-Baum. Der Aufbau der Strukturen solcher Verfahren ist dabei von
der Datenverteilung abhängig. In [SRF87] werden diese Verfahren auch als
adaptiv (adaptive) bezeichnet. Zu der zweiten Kategorie zählen Methoden,
die die Grenzen einer Region unabhängig von den Daten aufgrund festgelegter Teilungsregeln bestimmen (z. B. halbieren einer Region); diese werden
bei [SRF87] starr (fixed) genannt. Derartige Verfahren haben die Vorteile,
3.1. MEHRDIMENSIONALE ZUGRIFFSVERFAHREN
33
dass die Struktur unabhängig von der Einfügereihenfolge und die Form der
entstehenden Regionen besser kontrollierbar ist. Dies ist zum Beispiel beim
Radix-Baum der Fall.
In [Sam94] wird eine Unterscheidung bezüglich der Verwaltungsstruktur
getroffen. Die erste Klasse bilden hierarchische Verfahren, die eine baumartige Struktur zum Gewährleistung des Zugriffs auf die räumlichen Objekte
verwenden (z. B. k-d-Tree, Quadtree). Die übrigen nichthierarchischen Methoden, wie das Grid File oder EXCELL, verwenden ein Verzeichnis (directory) zur Berechnung der zuzugreifenden Regionen.
Eine andere Aufteilung nehmen Seeger und Kriegel in [SK88] vor und
unterscheiden die Methoden aufgrund der Behandlung der räumlichen Objekte. Es bilden sich Kategorien, die entweder Clipping„, Überlappung oder
Transformation benutzen. Beim Clipping werden zu große Geometrien aufgeteilt (Grid File), während beim Arbeiten mit Überlappung stets das ganze
Objekt auf Kosten multipler Suchpfade abgespeichert wird (R-Tree). Zu der
letzten Klasse zählen die eindimensionalen Einbettungen des Datenraumes
mittels raumfüllender Kurven (Hilbertkurve, Z-Ordering).
Weitere Kriterien zur Einordnung von mehrdimensionalen Zugriffsverfahren bieten die Betrachtung der Dimensionalität und Lokalität bei einer
Teilung einer Region [SRF87]. Wenn eine Teilung einer Region notwendig ist, können davon eine (k-d-Baum) oder alle Dimensionen gleichzeitig
(Quadtree) betroffen sein. Untersucht man die Lokalität eines Verfahrens
bei einer Teilung, so wird die Aufteilung entweder auf eine Region begrenzt
(lokal) oder sie erfolgt bei allen Regionen in der Teilungsrichtung (nichtlokal). In den Abbildungen 3.1 und 3.2 werden diese beiden Vorgehensweisen
gegenübergestellt.
Abbildung 3.1: Lokale Teilung einer Region
Abbildung 3.2: Nicht-lokale Teilung einer Region
Ein weiteres Charakteristikum zur Gruppierung mehrdimensionaler Zugriffsverfahren leitet sich aus den Eigenschaften der gespeicherten Daten ab.
Die in Datenbanken zu verwaltenden räumlichen Objekte lassen sich unter
anderem danach unterscheiden, ob sie eine räumliche Ausdehnung besitzen
(z. B. Punkte gegenüber Polygonen). Analog dazu unterscheidet man Zugriffsverfahren, die nur Punktobjekte (PAM – point access methods) oder
auch räumlich ausgedehnte Objekte (SAM – spatial access methods) verwalten können. Letztere Zugriffsverfahren entwickelten sich häufig durch
die Modifizierung (Transformation, Overlapping, Clipping oder Multiples
34
KAPITEL 3. ZUGRIFF AUF RÄUMLICHE DATEN
Layers [GG98]) von Punktzugriffsverfahren.
3.1.2
Anforderungen
Damit ein mehrdimensionales Zugriffsverfahren sinnvoll in Datenbankmanagementsystemen eingesetzt werden kann, werden verschiedene Anforderungen an diese gestellt. Die hier vorgestellten Anforderungen können später zur
Analyse des im DB2 Spatial Extender verwendeten Verfahrens herangezogen
werden.
In [GG98] wurde ausgehend von den Eigenschaften räumlicher Daten
und deren Anwendungen ein Anforderungsprofil zusammengestellt, wobei
auch datenbankspezifische Aspekte wie Mehrbenutzerzugriff oder Integration der Verfahren in ein DBMS einbezogen wurden. Das Interesse im Kontext
der Diplomarbeit liegt jedoch im Bereich des performanten Zugriffs auf die
Daten, weshalb nachfolgend insbesondere darauf Bezug genommen wird.
Unabhängigkeit von Eingabedaten Es wird von den Verfahren erwartet, dass trotz ungünstiger Verteilung oder Einfügereihenfolge der Daten die Effizienz des Zugriffs beibehalten wird. Die Berücksichtigung
des Aspekt der ungleichmäßigen Verteilung von Daten ist insbesondere
bei GIS-Datenbanken von besonderer Bedeutung, da hier häufig Ballungsgebiete von räumlichen Objekten auftreten (z. B. Stadtzentren
gegenüber ländlichen Gegenden).
Skalierbarkeit Trotz Vergrößerung der Anzahl zu verwaltender räumlicher
Objekte sollte der Zugriff auf die Daten adäquat performant bleiben.
Auch hier lässt sich ein direkter Bezug zu GIS-Datenbanken herstellen, da im Allgemeinen sehr große Datenmengen auftreten können. So
umfassen die von Tele Atlas über die Infrastruktur Deutschlands gesammelten Daten rund 60 Gigabyte und bilden damit sogar nur eine
kleinere Datenbank.
Zeiteffizienz Die Suche in einer räumlichen Datenbank sollte möglichst
schnell sein. Maßstab hierfür bildet der eindimensionale B-Tree. Das
heißt, bei beliebiger Kombination der Suchattribute und ungünstigster
Datenverteilung – also im worst case – sollte die Suche logarithmisch
bleiben.
Speicherplatzeffizienz Ein Index sollte möglichst klein im Verhältnis zu
den zu indizierenden Daten sein, wobei zusätzlich die prozentuale Speicherplatzausnutzung auf den Seiten nach unten beschränkt ist. Dadurch wird gewährleistet, dass möglichst wenige Indexseiten zugegriffen werden müssen.
Unterstützte Operationen Das Zugriffsverfahren sollte alle Operationen
annähernd gleich gut unterstützen. Eine effiziente Suche allein ist nicht
3.1. MEHRDIMENSIONALE ZUGRIFFSVERFAHREN
35
ausreichend, wenn das Einfügen oder Löschen von Daten sehr zeitaufwändig ist. Dieser Punkt ist gerade für den Import der Daten oder
bei der Erzeugung von räumlichen Indizes von Bedeutung.
3.1.3
Anfragebearbeitung
Auf räumlichen Objekten arbeitende Operationen sind sehr kostenintensiv,
weshalb mehrstufige Auswertungsstrategien für räumliche Anfragen genutzt
werden. Nach einer kurzen Beschreibung möglicher Suchszenarien auf räumlichen Datenbanken, wird die übliche Vorgehensweise bei der Bearbeitung
räumlicher Anfragen erläutert.
Auf räumliche Daten arbeitende Operationen können in die drei Klassen
richtungsbezogene, abstandsbezogene und topologische Operationen unterteilt werden [PTS97]. Richtungsbezogene Beziehungen beschreiben die Position im Raum, die zwei räumliche Objekte zueinander haben, zum Beispiel
im Sinne von nördlich oder oberhalb. Die zweite Klasse bilden die abstandsbezogenen Operationen wie zum Beispiel nah und fern, wobei der Abstand
durch die euklidische Metrik berechnet wird. In der letzten Klasse werden
diejenigen Operationen zusammengefasst, in der die direkte Beziehung zwischen zwei räumlichen Objekten betrachtet wird. Dazu zählen Operationen wie Schnitt oder Inklusion, bei denen der Abstandsbegriff keinen weiteren Einfluss hat. Detaillierte Definitionen dieser Operatoren finden sich in
[GG98] und teilweise in [HR99].
In der letzten Klasse von Operationen befindet sich auch die Beziehung
Überlappung“, die die Basis für eine der gebräuchlichsten Anfrageformen,
”
der Bereichsanfrage, bildet. Eine weitere häufig anzutreffende Suchoperation ist die Punktanfrage [HR99]. Diese Operationen bilden Spezialfälle der
schnittbildenden Operationen innerhalb der topologischen Klasse und sind
bei der Realisierung des Webservice von besonderem Interesse.
Eine Punktanfrage liefert die Antwort zu der Frage, welche Objekte einen
gegebenen Punkt im Datenraum enthalten. Beispielsweise könnte im Zusammenhang mit der Diplomarbeit nach dem Namen des Bezirks gesucht werden, in dem man sich gerade aufhält. Dahingegen beantwortet die Bereichsanfrage die Frage, welche Objekte sich in einem gegebenen Anfragefenster
befinden oder es schneiden. Oft wird für das Anfragefenster ein achsenparalleles Rechteck bevorzugt. Genau diese Art der Fragestellung wird in dem
realisierten Webservice verwendet, um alle nahe gelegenden Einrichtungen
zu einem Standort zu finden.
Bei der Bearbeitung von Operationen auf räumlichen Objekten wird
im Allgemeinen ein mehrstufiges Selektionsverfahren angewendet [BKSS94,
GG98, TSS00], da das Durchführen der Berechnungen mit den genauen Koordinaten sehr rechenintensiv ist. Dazu untergliedert man die Abarbeitung
einer Operation in zwei Arbeitsschritte: Filter- und Verfeinerungsschritt.
Das Schema in Abbildung 3.3 visualisiert die notwendigen Arbeitsschritte
36
KAPITEL 3. ZUGRIFF AUF RÄUMLICHE DATEN
und die entstehenden Ergebnismengen.
Anfrage
Filter
Test auf Basis
von Approximationen
Kandidaten
Treffer
Test auf Basis der
Objekt−Geometrien
Ausschuss
Spatial
Index
Verfeinerung
Treffer
Anfrageergebnis
Abbildung 3.3: Anfragebearbeitung mit räumlichen Operationen
Im ersten Schritt werden durch einen Geometriefilter räumliche Objekte ausgeschlossen, die aufgrund der Beziehung ihrer Approximationen die
Anfragekriterien nicht erfüllen können. Bei der Approximation eines räumlichen Objekts handelt es sich üblicherweise um das minimal umschreibende
und achsenparallele Rechteck (minimum bounding rectangle (MBR) oder
minimum bounding box (MBB)) und wird aus einem räumlichen Index bezogen.
Zur Erstellung eines Indizes über räumliche Objekte und zum Filtern
werden Approximationen verwendet, da diese zum einen weniger Speicherplatz benötigen und zum anderen die Berechnungen einfacher und damit
schneller durchzuführen sind. Die Verwendung von Approximationen beschleunigt demnach die Selektion der Geometrien bezüglich des Anfragekriteriums. Lassen sich sogar aus den Approximationen sichere Rückschlüsse
auf die eigentliche Geometrie ziehen (z. B. bei Punkten), so können die Geometrien direkt in das Resultat überführt werden. Einzelheiten über Verfahren, Eigenschaften und Anforderungen von Approximationen können in
[BKSS94, Fla97] nachgelesen werden.
In dem anschließenden Arbeitsschritt werden die Treffer aus dem Fil-
3.2. GEOMETRIEN IM DB2 SPATIAL EXTENDER
37
terschritt genauer betrachtet. Dazu werden die detaillierten Informationen
der räumlichen Objekte geladen und das Anfragekriterium exakt überprüft.
Dadurch werden Treffer eliminiert, bei denen nur das MBR aber nicht das
Objekt selbst das Anfragekriterium erfüllt (false hits). Diese Treffer werden
in der restlichen Diplomarbeit als ungültige Treffer bezeichnet.
3.2
Zugriff auf Geometrien mit dem DB2 Spatial
Extender
Der DB2 Spatial Extender ist eine Erweiterung zu DB2 UDB für die Verarbeitung und Verwaltung räumlicher Objekte. Dazu stellt dieser räumliche Datentypen in Form von strukturierten Datentypen„, Operationen auf
räumlichen Datentypen in Form von nutzerdefinierten Funktionen„ und ein
mehrdimensionales Zugriffsverfahren zur Verfügung. Da, wie bereits erläutert, die mehrdimensionalen Zugriffsverfahren besonders wichtig für das effiziente Ausführen von Operationen auf räumlichen Objekten ist, wird diese
im folgenden Abschnitt beschrieben und analysiert. Mit den aus der Analyse gewonnen Erkenntnissen werden anschließend Hinweise zur Konfiguration
des Zugriffsverfahren abgeleitet.
3.2.1
Indizierung räumlicher Objekte
In diesem Abschnitt wird erläutert, wie die räumlichen Objekte mit dem
mehrdimensionalen Zugriffsverfahren des DB2 Spatial Extender organisiert
werden.
Wie bei vielen anderen Zugriffsverfahren auch werden für das Erzeugen
des Indizes Approximationen der räumlichen Objekte verwendet. Die Approximation wird durch die Bestimmung des minimal umschreibenden Rechtecks (MBR) gebildet. Der gesamte Datenraum wird von bis zu drei Gittern
mit quadratischen Zellen unterschiedlicher Größe überdeckt. Die Gitter bilden dabei eine Hierarchie (Schicht) bezüglich der Gittergröße, das heißt, das
erste Gitter besitzt die kleinsten Zellen und das letzte die größten. Abgesehen von der Hierarchie können die Anzahl der Gitter und die jeweiligen
Gittergrößen frei und unabhängig voneinander gewählt werden.
Ein Indexeintrag wird bei der Überschneidung der Approximation einer Geometrie mit dem Zellraster generiert. Dabei besteht der Indexeintrag
aus einem internen Identifikator sowie der minimalen x- und y-Koordinate
der geschnittenen Zelle. Die Schnitte zwischen Gitter und Approximation
können besonders effizient berechnet werden, da es sich um zwei Rechtecke
handelt (Aufwand O(1)) und die Approximation explizit in der Datenbankdarstellung der Geometrie gespeichert wird. Werden mehrere Gitterzellen
von der Approximation geschnitten, dann wird für jede Zelle ein separater
Indexeintrag erzeugt. Bei der Überprüfung auf Schnitte der Approximation
38
KAPITEL 3. ZUGRIFF AUF RÄUMLICHE DATEN
mit dem Zellraster wird beim kleinstmöglichen Gitter begonnen. Insofern in
einer Schicht vier oder mehr geschnittene Zellen ermittelt werden, wird für
die Indizierung das nächstgrößere Gitter verwendet. Wurde das größte definierte Gitter erreicht, müssen alle für diese Schicht generierten Indexeinträge
in den Index aufgenommen werden. Abbildung 3.4 visualisiert die Generierung von Indexeinträgen für verschiedene Geometrien.
80.0
70.0
60.0
50.0
B
40.0
30.0
C
20.0
A
10.0
0.0
G1
10.0 20.0
G2
30.0 40.0
50.0
G3
60.0 70.0 80.0
Abbildung 3.4: Mehrdimensionales Zugriffsverfahren des DB2 Spatial Extender [IBM00a]
Die Abbildung zeigt den mit drei Gittern (gestrichelte Linien) überspannten Datenraum, wobei die Gittergrößen bei 10.0 (G1), 30.0 (G2) und
70.0 (G3) liegen. Um die eingezeichneten Geometrien (dick umrandet) sind
zusätzlich die Approximationen (dünngezeichnete Rechtecke) eingetragen
worden. Weiterhin wurden für die Schichten eins und zwei die geschnittenen
Gitterzellen grau unterlegt; damit die Übersicht erhalten bleibt, wurde für
die Schicht drei darauf verzichtet.
Tabelle 3.1 listet die in den Index eingetragenen Tupel auf, die bei der
Indizierung der Geometrien entstehen. Für die einzelnen Geometrien beginnend beim Punkt wird im Folgenden erläutert, wie die Einträge zustande
kommen.
Da ein Punkt keine räumliche Ausdehnung besitzt, und damit die Approximation der Punkt selbst ist, schneidet dieser grundsätzlich nur eine
Gitterzelle auf der niedrigsten Schicht. Im Beispiel liegt der Punkt A in der
Gitterzelle mit den minimalen Koordinaten (20.0, 10.0). Die Approximati-
3.2. GEOMETRIEN IM DB2 SPATIAL EXTENDER
Gitter
10.0
30.0
70.0
39
Indexeintrag
ID xGrid yGrid
A
20.0 10.0
B
0.0 30.0
B
30.0 30.0
C
0.0
0.0
C
70.0
0.0
Tabelle 3.1: Schnittpunkte der Geometrien mit dem Gitter
on des Polygons B schneidet auf der untersten Schicht (G1) mehr als vier
(genau neun) Gitterzellen. Daher wird auf das nächstgrößere Gitter übergegangen, wo nur noch zwei Zellen des Gitters betroffen sind; daher werden
zwei Einträge in dem Index erzeugt. Zuletzt werden die Einträge für den Linienzug C generiert. Dieser schneidet auf der Schicht eins zwölf und auf der
Schicht zwei sechs Gitterzellen. Das heißt, in beiden Situationen sind mehr
als vier Zellen betroffen und für die Indizierung muss die oberste Schicht
(G3) benutzt werden. Für das größte Gitter sind dann zwei Einträge in den
Index einzufügen.
3.2.2
Anfragebearbeitung
Wie bereits erläutert, dient ein mehrdimensionales Zugriffsverfahren zur Beschleunigung einer räumlichen Operation. Dieser Abschnitt klärt die Frage, wie das eben beschriebene mehrdimensionale Zugriffsverfahren räumliche Operationen bei der Anfragebearbeitung unterstützt. Zur Veranschaulichung werden die einzelnen Schritte anhand eines typischen Zugriffsplans für
eine Bereichsanfrage erläutert. Zum besseren Verständnis wird vorher kurz
darauf eingegangen, wozu und wie ein Zugriffsplan erstellt wird. Bei den
Erläuterungen wird zur Vereinfachung angenommen, dass eine achsenparallele Bereichsanfrage (Fenster) zu beantworten ist. Der Schluss auf die Vorgehensweise für andere Operationen ist offensichtlich, wenn man bedenkt, dass
immer zuerst die Beziehung zwischen den MBRs der Geometrien überprüft
wird.
Der Ausführungsplan (Zugriffsplan) für eine SQL-Anweisung wird vom
SQL-Compiler des DBMS erstellt und legt die Abarbeitung einer Anfrage
fest. Zur Generierung eines Zugriffsplan werden innerhalb des Compilers
verschiedene Phasen durchlaufen. Die wichtigsten sind dabei die syntaktische
und semantische Analyse, die Anfrageoptimierung durch Umschreiben und
die Optimierung durch Erzeugen alternativer Zugriffspläne [IBM00b]. Für
die weiteren Betrachtungen ist nur der Teil der Optimierung von Interesse.
Die Optimierung einer SQL-Anfrage erfolgt demnach in zwei Phasen.
Während das Umschreiben der SQL-Anweisung eher auf syntaktischer Ebene geschieht (z. B. Verschiebung oder Mischen von Operationen), berücksich-
40
KAPITEL 3. ZUGRIFF AUF RÄUMLICHE DATEN
tigt die Erzeugung alternativer Zugriffspläne Informationen, die im Zusammenhang mit den Datenbankobjekten stehen (z. B. Statistiken für Tabellen,
Indizes, Spalten und Funktionen). Das Resultat dieses Vorganges ist ein
Ausführungsplan der aufgrund der vorliegenden Informationen wahrscheinlich den geringsten Ausführungsaufwand hat.
DB2 UDB ermöglicht es dem Nutzer, den erzeugten Anfrageplan zu visualisieren und zu analysieren, wobei unter anderem die geschätzten Ausführungszeiten für die einzelnen Operatoren sowie die involvierten Datenbankobjekte abfragbar sind. Ein vereinfachter Ausführungsplan für eine Bereichsanfrage auf eine Tabelle mit räumlichen Index wird in Abbildung 3.5
gezeigt. In der Abbildung sind nur die wichtigsten Operatoren des Zugriffsplans dargestellt; das heißt, alle im Zusammenhang mit dem räumlichen
Bezugssystem stehenden Operationen wurden zur Verringerung der Komplexität weggelassen.
RETURN
II
I/II
NLJOIN
FETCH
Bounding Box
I
SORT
I − Filterung
II − Verfeinerung
EISCAN
Selektiviät
GeoIndex
Geotabelle
Abbildung 3.5: Ausführungsplan für eine Anfrage mit Geometrien
Analog zu der üblichen Form der Anfragebearbeitung unter Verwendung
eines mehrdimensionalen Zugriffsverfahrens benutzt auch der DB2 Spatial
Extender ein zweistufiges Selektionsverfahren (vgl. Abbildung 3.3). Zur Visualisierung wurden zusätzlich in Abbildung 3.5 die Bereiche der Filterung
und der Verfeinerung hervorgehoben.
In dem ersten Schritt erfolgt ein Filtern der Geometrien anhand ihrer Approximationen, wobei die in Frage kommenden Geometrien mit Unterstützung des Index bestimmt werden. Bei dem Indexzugriff werden zu-
3.2. GEOMETRIEN IM DB2 SPATIAL EXTENDER
41
nächst alle Indexeinträge ermittelt, deren Gitterzelle das gegebene Fenster
schneidet – in der Abbildung dargestellt durch die Operation EISCAN (Extension Index Scan). Da es sich bei dem Index um eine Mehrschichtenstruktur
(vgl. Abschnitt 3.2.4) handelt müssen die Einträge aller definierten Gitter
durchsucht werden.
Anschließend werden im NLJOIN (Nested Loop Join) diejenigen Geometrien herausgefiltert, deren Approximationen aufgrund ihrer Position zum
Fenster ausgeschlossen werden können (ungültige Treffer„). An dieser Stelle
müssen bereits die Datenseiten der Geometrien geladen werden (fetch), um
auf die Koordinaten der Approximation zugreifen zu können. Da hierbei entsprechend häufig kostenintensiv auf den Sekundärspeicher zugegriffen muss,
sollte durch den Index eine hohe Selektivität erreicht werden. Das heißt, es
sollten nur die besten Kandidaten durch den Index ausgewählt werden. Das
Ergebnis wird unmittelbar innerhalb des NLJOIN an den Verfeinerungsschritt
weitergegeben.
Die Trennung zwischen Filter- und Verfeinerungsschritt ist in der Abbildung 3.5 nicht explizit erkennbar, da sich diese in der NLJOIN-Operation
überschneiden. Diese Überlagerung erscheint sinnvoll, da die genauen Koordinaten der Geometrien, insofern diese nicht aufgrund ihres Umfangs separat1 verwaltet werden, bereits während des Filterns geladen wurden. Im
Falle eines positiven Resultats beim Test mit der Approximation erfolgt im
Verfeinerungsschritt eine genaue Überprüfung mit den richtigen Koordinaten der Geometrien. Das Ergebnis dieses Arbeitsschritts wird als Resultat
der Bereichsanfrage zurückgegeben.
3.2.3
Beobachtungen und Eigenschaften
Nachdem die Funktionsweise des mehrdimensionalen Zugriffsverfahrens des
DB2 Spatial Extenders erläutert wurde, werden in diesem Abschnitt wesentliche Eigenschaften und Beobachtungen zusammengefasst.
Zunächst lässt sich feststellen, dass es sich bei dem mehrdimensionalen
Zugriffsverfahren des DB2 Spatial Extender um eine Methode mit Aufteilung
des gesamten einbettenden Datenraumes durch disjunkte Regionen (bezogen auf ein Gitter) handelt. Die Verwendung multipler Gitter erzeugt eine
Hierarchie total geordneter Schichten, wobei jede Schicht den Datenraum
auf unterschiedliche Weise (verschiedene Zellgrößen) partitioniert. Da die
Anzahl der Schichten auf drei begrenzt ist, müssen größere räumliche Objekte mittels Clipping indiziert werden. Diese Eigenschaften zusammenfassend
erhält man eine Mehrschichtenstruktur – eine Variante von Verfahren, die
überlappende Regionen zulassen – wie sie in [HR99] definiert ist.
Die Größen der Gitterzellen für die drei Schichten werden zu Beginn
der Erstellung des Index festgelegt und bleiben unverändert, solange der
1
Moderne DBMS speichern LOBs (Large Objects) ab einer bestimmten Größen unabhängig von den anderen Attributen.
42
KAPITEL 3. ZUGRIFF AUF RÄUMLICHE DATEN
Index existiert. Daraus lässt sich bereits folgern, dass eine Adaption an
eine sich verändernde Datenverteilung nicht berücksichtigt wird. Um eine
ungleichmäßige Datenverteilung in gewissem Maße abzufangen, muss diese
schon bei der Erstellung des Index durch die Gestaltung der Zellengrößen der
Gitter ausgeglichen werden. Zur Verdeutlichung dieser Tatsache betrachte
man den Filterschritt in der Anfragebearbeitung (vgl. Abschnitt 3.2.2). Wurde eine Gitterzelle vom Fenster geschnitten, müssen alle darin enthaltenen
Geometrien, genauer deren Approximationen, überprüft werden. Bei einer
sehr hohen Dichte von Geometrien in dieser Zelle werden unter Umständen
zahlreiche Test mit negativem Ausgang durchgeführt. Andere Zugriffsverfahren begrenzen die Anzahl der Geometrien pro Zelle, so dass an dieser
Stelle eine feinere Granularität erreicht wird.
Aus der Benutzung eines unveränderlichen Zellrasters und unter der Bedingung gleich bleibender Datenverteilung ergibt sich weiterhin, dass wechselndes Einfügen und Löschen von Datensätzen sowie jede beliebige Einfügereihenfolge keinen Einfluss auf die Struktur und damit auf die Effizienz haben. Die obige Bedingung ist für die Gültigkeit der Aussage notwendig,
da eine ungleichmäßige Datenverteilung zu dem vorher genannten Problem
führen kann. Des Weiteren werden aufgrund der Struktur keine Operationen
wie Split oder Merge benötigt, wie sie bei vielen anderen mehrdimensionalen Zugriffsstrukturen erforderlich sind. Im Zusammenhang mit der Struktur
ist noch erwähnenswert, dass Gitterzellen, die keine Geometrien enthalten,
nicht in dem Indexverzeichnis kodiert und nicht weiter berücksichtigt werden.
Wenn in einer Tabellen nur Punktobjekte verwaltet werden, so ist offensichtlich die Definition eines einzigen Gitters ausreichend – es wird immer
das kleinste Gitter verwendet. Diese Aussage lässt sich eingeschränkt auch
auf räumlich ausgedehnte Geometrien übertragen. Wenn die zu verwaltenden Geometrien annähernd die gleiche maximale Ausdehnung besitzen, so
ist ein einzelnes Gitter ausreichend, da das Clipping nur bedingt auftritt.
3.2.4
Analyse
In den vorherigen Abschnitten wurden zunächst die Funktionsweise sowie
allgemeine bzw. offensichtliche Eigenschaften des räumlichen Zugriffsverfahren des DB2 Spatial Extenders beschrieben. Basierend auf den dort gewonnenen Erkenntnissen werden im folgenden Abschnitt Heuristiken oder Regeln
hergeleitet, die den Anwender oder Administrator bei der Konfiguration des
Zugriffsverfahrens unterstützen. Nachdem das Ziel der Analyse beschrieben
wurde, wird zuerst der Spezialfall betrachtet, bei dem nur Punktdaten vorliegen. Eine gesonderte Behandlung ist angebracht, da hierbei nur ein Gitter
benötigt wird und kein Clipping auftreten kann. Danach werden beliebige
Geometrien behandelt, wobei neben der Zellengröße auch die Anzahl der
Schichten veränderbar ist.
3.2. GEOMETRIEN IM DB2 SPATIAL EXTENDER
43
Das Hauptziel der Analyse ist die Entwicklung von Heuristiken und Regeln zur performanten Konfiguration des mehrdimensionalen Zugriffsverfahrens vom DB2 Spatial Extender. Da im Allgemeinen der Zugriff auf
den Sekundärspeicher deutlich mehr Zeit benötigt als die von der CPU
durchgeführten Berechnungen, wird die Anzahl der Seitenzugriffe und die
Ausführungszeit als Kriterium für die Performanz herangezogen. Die Konfiguration des mehrdimensionalen Zugriffsverfahrens hat großen Einfluss auf
die Ausführungszeit und die Anzahl der Seitenzugriffe, da diese bestimmt,
wie gut bereits der Filterschritt ungültige Treffer eliminiert.
Betrachtet man eine ausschließlich Punkte enthaltende Tabelle, vereinfacht sich die Konfiguration des mehrdimensionalen Zugriffsverfahrens erheblich. Das folgende Theorem fasst wesentliche Aspekte zusammen.
Theorem 3.1 Für die Konfiguration des mehrdimensionalen Zugriffsverfahrens des DB2 Spatial Extenders zur Verwaltung von Geometrien ohne
räumliche Ausdehnung (Punkte) gelten folgende Aussagen:
(a) Die Definition eines einzelnen Gitters ist ausreichend.
(b) Für Geometrien ohne räumliche Ausdehnung enthält das Indexverzeichnis O(n) Einträge, wobei n die Anzahl der zu verwaltenden Geometrien ist.
(c) Die Auswahl der Gittergröße orientiert sich an dem Datenbereich mit
der höchsten Dichte und bewegt sich in der Größenordnung des durchschnittlichen Abstands eines Punktes zu seinen unmittelbaren Nachbarn.
Beweis:
(a) Die Anzahl der Gitter und die jeweiligen (aufsteigenden) Gittergrößen
können unabhängig von einander gewählt werden. Da bei Geometrien ohne räumliche Ausdehnung kein Clipping auftreten kann, ist die
Aussage offensichtlich richtig.
(b) Nach dem Algorithmus, der in Abschnitt 3.2.1 beschrieben wird, wird
zu jedem räumlichen Objekt mindestens ein Eintrag erzeugt. Da jedoch
kein Clipping auftreten kann, beträgt die Anzahl der Indexeinträge genau n. Insbesondere ist anzumerken, dass Gitterzellen, die keine Geometrien enthalten, nicht im Index reflektiert werden.
(c) Die Regionen in denen eine hohe Datendichte vorliegt, verursachen im
Allgemeinen die meisten ungültigen Treffer, da dort wesentlich mehr
Geometrien einer Zelle zugeordnet werden. Daher muss insbesondere
in diesen Regionen auf die Gitterzellengröße geachtet werden.
44
KAPITEL 3. ZUGRIFF AUF RÄUMLICHE DATEN
Zunächst kann aus (b) geschlussfolgert werden, dass die Konfiguration
des mehrdimensionalen Zugriffsverfahrens keinen Einfluss auf die Anzahl der Indexeinträge hat und deswegen nicht weiter berücksichtigt
werden muss.
Da zur Überprüfung der Approximationen während des Filterns die
Koordinaten sowohl von den gültigen (hits) als auch von den ungültigen Treffern (false hits) geladen und überprüft werden müssen, ist die
Anzahl der ungültigen Treffer das ausschlaggebende Kriterium für die
Performanz des Zugriffsverfahrens.
Die Anzahl ungültiger Treffer wird genau dann minimiert, wenn möglichst wenige Punkte einer Zelle zugeordnet werden. Dies ist offensichtlich dann der Fall, wenn die Gittergröße möglichst klein gewählt wird.
Da sich bei der fortwährenden Verfeinerung des Rasters die Anzahl der
einer Gitterzelle zugeordneten Punkte nur unwesentlich verändert und
damit die durch den Index selektierten Treffermengen nahezu identisch
bleiben, erbringt eine Zellengröße unterhalb der Größenordnung des
durchschnittlichen Abstands eines Punktes zu seinen unmittelbaren
Nachbarn, wenn überhaupt, nur einen unwesentlichen Performanzgewinn.
2
Nachdem die Konfiguration des mehrdimensionalen Zugriffsverfahren für
räumlich nicht ausgedehnte Objekte behandelt wurde, befassen sich die folgenden Paragrafen mit räumlich ausgedehnten Geometrien wie Linienzügen
oder Polygonen. Während vorher das Hauptkriterium die Datenverteilung
im einbettenden Raum gewesen war, muss nun insbesondere das Clipping
beachtet werden, da sich hierdurch das Indexverzeichnis vergrößern kann.
Lemma 3.1 (Abschätzung der Indexeinträge) Sei G eine Geometrie
mit dem MBR (xmin , ymin , lx , ly ) beliebig gegeben. Die Gitter seien durch
die jeweilige Seitenlänge einer Zelle zi > 0 mit 1 ≤ i ≤ k ≤ 3 definiert,
wobei k die Anzahl der definierten Gitter bezeichnet. Dann gelten folgende
Abschätzungen für die Indexeinträge bezogen auf das Gitter i (ohne Berücksichtigung der Beschränkung durch den Algorithmus für das Gitter i < k
auf vier Zellen):
&
lx ly
zi2
'
(i)
(ii)
≤ IG ≤
lx
ly
+2 ·
+2
zi
zi
Beweis: Zum Berechnen der Anzahl der Indexeinträge ist es ausreichend,
die Anzahl der von der Fläche des MBR geschnittenen Gitter zu berechnen,
da jedes geschnittene Gitter genau einen Indexeintrag erzeugt.
l
(i) Die Ungleichung gilt offensichtlich, da lzxi bzw. zyi die Anzahl der geschnittenen Gitter entlang der x-Achse bzw. y-Achse bezeichnet. Es
3.2. GEOMETRIEN IM DB2 SPATIAL EXTENDER
45
werden sozusagen die Längen bezüglich zi normiert. Die Gesamtzahl
der geschnittenen Gitterzellen ergibt sich aus deren Produkt.
(ii) Als erstes wird die Anzahl der geschnittenen Gitter in Richtung der
x-Achse IGx bestimmt und nach oben abgeschätzt. Dazu bezeichnet
x = xmin mod zi den Abstand des MBR zur nächstkleineren Gittergrenze entlang der x-Achse. Zum besseren Verständnis visualisiert Abbildung 3.6 die eingeführten Bezeichnungen. Die gestrichelte Linien repräsentieren dabei das Gitter zi und das durchgezogene Rechteck stellt
die Approximation einer Geometrie dar. Unter Berücksichtigung, dass
der obere und rechte Rand einer Gitterzelle nicht zu derselben gehört,
ergibt sich:
=
IGx
≤
x<zi
≤
 l
m
 x+lx + 1
, falls (x + lx ) mod zi = 0
l zi m
x+l
x

, sonst
zi
x + lx
+1
zi
lx
+2
zi
(3.1)
Analog erhält man mit y = ymin mod zi für die Anzahl der geschnittenen Gitterzellen entlang der y-Achse:
≤
IGy
ly
+2
zi
(3.2)
Die obere Abschätzung der Anzahl der Indexeinträge für eine Geometrie ergibt sich aus dem Produkt der Gleichungen 3.1 und 3.2.
3
lx
2
x
ly
1
z
0
1
2
y
i
3
4
5
6
Abbildung 3.6: Skizze zur Abschätzung der Indexeinträge
2
46
KAPITEL 3. ZUGRIFF AUF RÄUMLICHE DATEN
Aus dem vorangegangenen Lemma lässt sich die intuitiv verständliche
Aussage ableiten, dass je größer die Gitterzelle gewählt wird, desto geringer
ist die Anzahl der Indexeinträge.
Ein wesentlicher Faktor bei der Performanz eines mehrdimensionalen
Zugriffsverfahrens ist die Reduzierung der ungültigen Treffer beim Indexzugriff. Da bei beliebiger Vergrößerung der Gitterzellen zugleich die Anzahl der
ungültigen Treffer erhöht wird, ist der dadurch zu erzielende Performanzgewinn beschränkt. Ab einer von der Datenverteilung bestimmten Größe
übersteigt der Aufwand für das Lesen der Datenseiten für die ungültigen
Treffer den Performanzgewinn durch die Vergrößerung der Gitterzellen.
Bei der Untersuchung der Konfiguration des mehrdimensionalen Zugriffsverfahrens zur Verwaltung räumlich ausgedehnter Geometrien waren
keine mathematisch fundierten Bedingungen erkennbar, die eine optimale
Leistung garantieren. Daher wurden nachfolgend einige empirische Anhaltspunkte zusammengestellt, die eine gute Ausgangssituation für eine performante Konfiguration schaffen. Daran anschließend folgen genauere Erklärungen zu den Heuristiken.
Ist die Datenverteilung vernachlässigbar, so lässt sich besonders gut eine
Statistik über die gerundeten maximalen Ausdehnungen der einzelnen Geometrie zur die Bestimmung einer Ausgangskonfiguration verwenden. Aus
einer solchen Statistik ergeben sich Hinweise
ˆ zu Häufungspunkten, bei denen viele Geometrien annähernd die gleiche Ausdehnung besitzen. Diese Häufungspunkte könnten von einem
separaten Gitter aufgenommen werden.
ˆ zu nicht auftretenden Werten. Diese Stellen können ignoriert werden.
ˆ zu längeren Abschnitten, bei denen annähernd gleich viele Geometrien unterschiedlich maximale Ausdehnungen besitzen. Je nach Umfang
des Abschnitts könnten diese Geometrien zu einem Gitter zusammengefasst oder besonders aufgeteilt werden.
ˆ zu der maximale Ausdehnung über alle Geometrien. Dieser Wert kann
als Basis für die Zellengröße des größten Gitters genutzt werden.
Auf Basis der soeben vorgestellten Statistik werden nun einige Heuristiken zur Bestimmung einer Ausgangskonfiguration zusammengefasst.
Häufungspunkte Sei bei der Ausdehnung h ein derartiger Häufungspunkt,
dann ist ein separates Gitter mit mindestens der Größe 2h vorzusehen.
Da bei einer Zellengröße identisch h die Approximationen mit hoher
Wahrscheinlichkeit nicht komplett innerhalb einer Gitterzelle liegen,
werden dann sehr häufig zwei oder mehr Zellen geschnitten bzw. Indexeinträge erzeugt. Bei einer Zellengröße von mindestens 2h ist offensichtlich die Anzahl der geschnittenen Zellen geringer.
3.2. GEOMETRIEN IM DB2 SPATIAL EXTENDER
47
dicht liegende Häufungspunkte Da insgesamt nur drei Gitter zur Verfügung stehen, werden nur die signifikanten Häufungspunkte betrachtet
und es müssen gegebenenfalls dicht liegende zusammen berücksichtigt
werden. Konzentrieren sich sehr viele Häufungspunkte in einem Abschnitt, so lassen sie sich auch in zwei Gruppen aufteilen. Insofern
die Geometrien besonders dicht im Datenraum liegen, ist die zweite
Variante zu bevorzugen, da bei Anfragen weniger ungültige Treffer
entstehen können.
maximale Ausdehnung Falls erforderlich sollte die Seitenlänge einer Zelle des größten Gitter mindestens der maximalen Ausdehnung über
alle Geometrien entsprechen. Die Zellengröße muss in Abhängigkeit
von der Anzahl der Geometrien gewählt werden, die nicht durch ein
kleineres Gitter abgedeckt werden. Dabei ist die Tatsache zu berücksichtigen, dass gerade wenn die Seitenlänge der Gitterzelle
viel kleiner
l x ly
als die Ausdehnung der Geometrie ist, O zi
Indexeinträge (vgl.
Lemma 3.1) entstehen.
Verhältnis zwischen den Zellengrößen Relativ dicht liegende Gittergrößen erweisen sich als ungünstig. Wenn sich auf einer unteren Schicht
mehr als vier Zellen geschnitten werden, bedeutet dies bei ähnlichen
Gittergrößen, dass beim nächstgrößeren Gitter wahrscheinlich auch
mehr als vier Zellen geschnitten werden. Damit ist der Nutzen der
nächsthöheren Schicht eingeschränkt. Daher ist mindestens eine Verdoppelung der Gittergrößen sinnvoll, wobei zusätzlich die Verteilung
in der Statistik berücksichtigt werden sollte.
Variation der Gittergrößen Es hat sich herausgestellt, dass geringfügige
Variationen der Gittergröße annähernd dieselbe Performanz bieten –
die Größenordnung ist also entscheidend.
Art der Geometrie Da sowohl bei Polygonen als auch bei Linienzügen
das MBR als Approximation verwendet wird, können obige Heuristiken auf alle räumlich ausgedehnten Geometrien angewendet werden.
Aus Lemma 3.1 leitet sich ab, dass die von der Approximation aufgespannte Fläche Einfluss auf die Konfiguration des Zugriffsverfahrens hat.
Daher wurde untersucht, ob eine Statistik über die auftretenden Flächengrößen Informationen zu der Konfiguration liefern kann. Da sich eine Flächegröße A = lx ly aufgrund vieler verschiedener Wertepaare ergeben kann, ist
eine derartige Statistik nicht aussagekräftig.
3.2.5
Experimentelle Überprüfung
Nachdem Theorien über die Konfiguration des räumlichen Zugriffsverfahren aufgestellt wurden, wurden einige Experimente zur Überprüfung durch-
48
KAPITEL 3. ZUGRIFF AUF RÄUMLICHE DATEN
geführt. Die daraus gewonnen Ergebnisse werden in diesem Abschnitt vorgestellt. Dazu werden zuerst die Vorgehensweise und die Bewertungskriterien
für die Experimente beschrieben. Anschließend erfolgt die Dokumentation
und Auswertung der einzelnen Experimente.
Wie bereits in Abschnitt 3.2.2 festgestellt, ist die teuerste Operation in
dem Zugriffsplan der Zugriff auf die Koordinaten der Geometrien. Damit der
Optimierer den Aufwand korrekt abschätzen kann, muss die Selektivität der
räumlichen Indizes möglichst exakt bestimmbar sein (vgl. Abbildung 3.5).
Die Selektivität gibt dabei an, wie viele Einträge durch den Index ausgewählt
werden. Im Allgemeinen kann der Optimierer aus den Statistiken über den
Index auf die Selektivität schließen. Da es sich bei dem räumlichen Index
um einen nutzerdefinierten handelt und keine Statistiken über die Verteilung
der Geometrien im einbettenden Datenraum existieren, wird standardmäßig
eine vordefinierte Selektivität angenommen. Alternativ kann der Nutzer den
Wert explizit angeben. Da bei den Experimenten die Selektivitäten nur unzureichend bekannt sind, können die vom generierten Zugriffsplan stammenden
Aufwandsabschätzungen nicht als Vergleichskriterium eingesetzt werden.
Deshalb wurden zum Bewerten der unterschiedlichen Konfigurationen
für einen räumlichen Index Vergleichstests durchgeführt. Auf Basis von den
durchgeführten Vergleichstest lassen sich Aussagen über die Anzahl der gelesenen bzw. zugegriffenen Seiten sowie die Dauer der Anfrage treffen. Die
Anzahl der durch das mehrdimensionale Zugriffsverfahren ausgewählten Indexeinträge (gültige und ungültige Treffer) lässt sich nur implizit durch die
Anzahl der Seitenzugriffe ableiten.
Experimente zu Punktdaten
Für die Bewertung der Heuristiken zur Konfiguration eines räumlichen Index
auf einer Tabelle, die ausschließlich Punktdaten enthält, wurden räumliche
Indizes mit verschiedenen Zellgrößen erstellt und anschließend Bereichsanfragen ausgeführt. Dieser Abschnitt beschreibt die Durchführung der Experimente sowie deren Resultate.
Wie bereits festgestellt wurde, ist für den Nutzen des räumlichen Zugriffsverfahren die Auswahl der Gittergröße in Abhängigkeit von der Datenverteilung von entscheidender Bedeutung. Aus diesem Grund ist eine
gleichmäßige Verteilung der Daten weniger aussagekräftig; vielmehr muss
das Verhalten unterschiedlicher Gittergrößen bei ungleichmäßiger Datenverteilung untersucht werden.
Dazu wurde zuerst eine Tabelle mit Punktdaten (insgesamt 50.000 Einträge) mit einer ungleichmäßigen Datenverteilung erstellt. Die Abbildung 3.7
zeigt die Verteilung der Daten – der überwiegende Teil der Punkte konzentriert sich im Zentrum des Datenraumes. Die dargestellte Verteilung stellt
einen Bezug zu der Aussage her, dass bei kartografischen Daten urbane Zentren besonders viele räumliche Objekte beinhalten.
3.2. GEOMETRIEN IM DB2 SPATIAL EXTENDER
49
Abbildung 3.7: Punkteverteilung im Datenraum
Für die entstandene Tabelle wurden nacheinander räumliche Indizes mit
einem Gitter und verschiedener Zellgröße angelegt und anschließend zwei Arten von Anfragen ausgeführt. Der erste Anfragetyp (Zentrum) beinhaltete
Bereichsanfragen, deren Mittelpunkte im Zentrum des Datenbereichs lagen,
während bei dem zweiten (Rand) die Mittelpunkte der Anfragefenster deutlich außerhalb des Zentrums gewählt wurden. Die Fläche des Anfragefensters
war dabei in allen Fällen identisch 1 E 2 (das verwendete Maß sind Einheiten). Die Anfragen selektierten aus dem Datenbereich rund 7000 Punkte im
Zentrum bzw. 100 Punkte am Rand. Der Abstand eines Punktes zu seinem
nächsten Nachbarn liegt im Zentrum in der Größenordnung von 0.003 E.
Die Tabelle 3.2 fasst die Ergebnisse der Anfragen für ausgewählte Gittergrößen zusammen. Gemessen wurde die für die Beantwortung der Anfrage
benötigte Gesamtzeit sowie die anteilige CPU-Zeit. Wie sich herausstellte,
ist ein nicht zu vernachlässigender Faktor die für Sortiervorgänge benötigte
Zeit (vgl. Abbildung 3.7); daher wurde sie mit in die Tabelle aufgenommen.
Da die Häufigkeit des Zugriff auf den Sekundärspeicher einen Indikator für
die Güte des räumlichen Indizes darstellt, wurden zusätzlich die Anzahl der
gelesenen Daten- und Indexseiten erfasst.
Bei der Auswertung der Ergebnisse ist zu bedenken, dass die Anfragen
mehrmals hintereinander ausgeführt wurden und somit die Daten- und Indexseiten im Hauptspeicher und zum Teil im Puffer des DBMS vorlagen.
Damit lässt sich erklären, warum die CPU-Zeit einen großen Anteil an der
Gesamtzeit hat und teilweise keine Indexseiten gelesen wurden. Diese Vorgehensweise hat sehr geringen Einfluss auf die Anzahl der gelesenen Daten- und
Indexseiten. Vergleichstests mit leerem“ Hauptspeicher und Datenbankpuf”
50
KAPITEL 3. ZUGRIFF AUF RÄUMLICHE DATEN
fer bestätigen, dass sich hauptsächlich die benötigte Gesamtzeit aufgrund
der Sekundärspeicherzugriffe verlängert.
Anfragetyp
Zentrum
Rand
Gittergröße (E)
3e0
3e−1
3e−3
3e−5
3e0
3e−1
3e−3
3e−5
Zeit
Ges.
5,558
3,225
3,334
3,285
4,076
0,180
0,160
0,161
(s)
CPU
4,456
3,124
3,255
3,145
2,343
0,130
0,130
0,130
Seitenzugriffe
Daten Index
2664
443
2495
169
2507
178
2468
158
1128
449
76
0
80
0
83
0
Sort
(ms)
1369
183
177
171
2193
2
2
2
Tabelle 3.2: Ergebnisse der Experimente zu Punktdaten
Zunächst lässt sich feststellen, dass für die Bearbeitung des Anfragetyps
Zentrum mehr Zeit und Seitenzugriffe benötigt werden als bei der äquivalenten Anfrage des Typs Rand. Ein anderes Ergebnis war nicht zu erwarten,
da im Zentrum wesentlich mehr Geometrien selektiert und somit mehr Berechnungen durchgeführt werden.
Betrachtet man den Anfragetyp Zentrum, so fällt auf, dass obwohl annähernd gleich viele Datenseiten gelesen wurden, die Ausführungszeit des gröbsten Gitters fast doppelt so hoch wie bei den feineren Gittern ist. Weiterhin
wurden doppelt so viele Indexseiten zugegriffen. Daraus lässt sich für das
grobe Gitter ableiten, dass ein großer Teil der Rechenzeit beim Zugriff auf
den Index (inklusive anschließendem Sortieren) investiert wurde. Aufgrund
der um ein Vielfaches höheren Indexseitenzugriffe und dem hohen Aufwand
für das Sortieren liegt der Schluss nahe, dass wesentlich mehr Punkte durch
eine Gitterzelle selektiert wurden. Da die Anzahl der Tupel im Ergebnis
konstant blieb, mussten offensichtlich viele ungültige Treffer im Filterschritt
eliminiert werden. Die Vermutung wird durch die Tatsache untermauert,
dass bei einer Verzehnfachung der Seitenlänge eines Gitters die hundertfache Anzahl von Punkten in einer Zelle enthalten sind (Gleichverteilung
vorausgesetzt).
Innerhalb des Anfragetyps Rand bemerkt man, dass beim Index mit dem
größten Gitter mehr Zeit und häufigere Seitenzugriffe zur Beantwortung der
Anfrage erforderlich waren. Der immense Sprung ist vermutlich dadurch
begründet, dass die selektierten Gitterzellen derart ungünstig lagen, dass
viele Punkte des Zentrums einbezogen wurden.
Gemeinsam für beide Anfragetypen ergibt sich die Aussage, dass bei
einer Verfeinerung des Gitter, wobei die Seitenlänge einer Zelle nahe bzw.
unterhalb des Abstandes eines Punktes zu seinem nächsten Nachbarn liegt,
keine wesentliche Verbesserung des räumlichen Index erreicht wird. Das lässt
3.2. GEOMETRIEN IM DB2 SPATIAL EXTENDER
51
sich zum einen damit begründen, dass die bei der Verfeinerung zusätzlich
entstehenden Zellen nur geringfügig die Verteilung der Punkte auf die Zellen
beeinflusst. Zum anderen wirkt sich die Veränderung des Verhältnisses der
Flächen von Gitterzelle und Anfragefenster stärker auf die Performanz des
räumlichen Index aus als bei Anfragen im Zentrum.
Zusammenfassend werden durch die durchgeführten Experimente die
Aussagen des Theorems 3.1 bestätigt, wobei eine Überprüfung der Aussage
für große Datenmengen noch nicht erfolgte.
Experimente zu räumlich ausgedehnten Geometrien
Während bei Punktdaten nur eine einzige Gittergröße berücksichtigt werden
musste und außerdem die Einflussgrößen auf die Konfiguration gut bekannt
waren, ergeben sich bei räumlich ausgedehnten Geometrien zusätzliche Parameter. Abgesehen davon, dass bis zu drei Gitter zu konfigurieren waren, sind
die Formen und Größen sowie die Zusammensetzung der Testdaten sehr variabel. Im folgenden Abschnitt werden zunächst die verwendeten Datensätze
charakterisiert und anschließend ausgewählte Ergebnisse der durchgeführten
Vergleichstests präsentiert.
Bei den Experimenten wurden zwei unterschiedliche Datensätze verwendet. Der erste Datensatz stellt einen Auszug aus der GIS-Datenbank (Straßennetz) dar, während der zweite zufällig generiert wurde. Die Abbildungen
3.8 und 3.9 geben einen Überblick über die Struktur der Daten. Zur Verbesserung der Darstellung werden nur Ausschnitte der verwendeten Daten
gezeigt.
Abbildung 3.8: Straßennetz aus
der GIS-Datenbank (Ausschnitt)
Abbildung 3.9: Zufällig generierte
Geometrien (Ausschnitt)
Insgesamt umfasste das Straßennetz rund 113.000 und der zweite Da-
52
KAPITEL 3. ZUGRIFF AUF RÄUMLICHE DATEN
tensatz 50.000 Geometrien. Es wurden zwei in der Struktur verschiedene
Datensätze ausgewählt, um die oben aufgestellten Heuristiken besser überprüfen zu können. Zuerst werden die Experimente mit den Daten des Straßennetzes dokumentiert und anschließend wird auf die Zufallsgeometrien
eingegangen.
Anzahl der Geometrien
Straßennetz Bereits an den obigen Abbildungen erkennt man die sehr unterschiedliche Struktur der Daten. Das Straßennetz besteht aus sich kaum
überlagernden Linienzügen und hat demzufolge eine geringere Datendichte.
Obwohl nachfolgend weniger die Datenverteilung im Vordergrund steht, so
charakterisiert eine annähernd gleichmäßige Verteilung die Daten. Wie sich
aus der Statistik über die maximalen Ausdehnung der Geometrien in Abbildung 3.10 ergibt, existieren viele Geometrien mit einer ähnlichen maximalen
Ausdehnung nahe 1e−3 E.
50000
45000
40000
35000
30000
25000
20000
15000
10000
5000
0
0
0.01
0.02
0.03
0.04
0.05
maximale Ausdehnung (E)
0.06
0.07
Abbildung 3.10: Ausdehnungen der Geometrien (Straßennetz)
Zur Erstellung der Statistik wurden die maximalen Ausdehnungen der
Geometrien auf drei Stellen hinter dem Komma gerundet und anschließend
die Anzahl der Geometrien mit gleicher Ausdehnung bestimmt. Diese Statistik lässt sich sehr einfach und schnell berechnen, da die minimalen und
maximalen Koordinaten einer Geometrie separat im strukturierten Datentyp
gespeichert und direkt zugreifbar sind. Bei einem geringen Umfang der Daten kann ein Tablescan mit anschließender Gruppierung verwendet werden.
Befinden sich besonders viele Datensätze in einer Tabelle, kann der Aufwand
durch Auswahl eines repräsentativen Ausschnitts reduziert werden.
Durch die eben erwähnte Rundung der Ausdehnungen erkennt man den
großen Anteil kleiner Geometrien mit einer maximalen Ausdehnung um die
1e−3 E besonders gut. Da die Geometrien nicht besonders dicht im Datenraum liegen, werden in Übereinstimmung mit den Heuristiken auf Seite 46 alle Geometrien mit einer Ausdehnung kleiner als ca. 1e−2 E gemeinsam betrachtet. Den Heuristiken weiter folgend bilden die Gittergrößen
3.2. GEOMETRIEN IM DB2 SPATIAL EXTENDER
53
2e−2 E, 4e−2 E und 6e−2 E einen guten Ausgangspunkt für eine performante Konfiguration. Das größte Gitter wurde so gewählt, dass die wenigen
größeren Geometrien mit wenig Clipping verarbeitet werden können.
Auf der Grundlage dieser Werte wurden mehrere Versuche durchgeführt,
wobei ein Teil der Ergebnisse in Tabelle 3.3 zusammengefasst wurde. Gemessen wurde die Anzahl Indexeinträge, die insgesamt benötigte Zeit inklusive
Ausgabe des Ergebnisses sowie die anteilige CPU-Zeit. Die Anzahl der Indexeinträge wurde mit Hilfe der Datenbankstatistiken zu Indizes ermittelt.
Da dort nur die Anzahl der voneinander verschiedenen Werte ausgelesen
werden kann, bilden die Angaben in der Tabelle eine untere Grenze. Weiterhin wurden die Anzahl der zugegriffenen Daten- bzw. Indexseiten festgehalten. Da die für das Sortieren benötigte Zeit Rückschlüsse auf die Anzahl
der durch den Indexzugriff gelieferten Ergebnisse zulässt, wurde dieser Wert
ebenfalls in die Tabelle aufgenommen.
Gittergr. (E)
IndexZeit (s)
Seitenzugr.
1
2
3 eintr.
Ges. CPU Dat
Idx
Anfragefenster 0, 01 × 0, 01 E 2
1e-3 2,5e-2 5e-2 ≥ 212010 0,401 0,361
232
72
1,5e-2
4e-2 6e-2 ≥ 130524 0,141 0,100
0
0
2e-2
4e-2 6e-2 ≥ 126013 0,180 0,130
93
11
8e-2
2e-1 4e-1 ≥ 115915 0,301 0,240
143
49
Anfragefenster 0, 5 × 0, 5 E 2
1e-3 2,5e-2 5e-2 ≥ 212010 2,724 2,574 1034
579
1,5e-2
4e-2 6e-2 ≥ 130524 2,193 2,053 1017
327
2e-2
4e-2 6e-2 ≥ 126013 2,113 2,063 1071
323
8e-2
2e-1 4e-1 ≥ 115915 2,183 2,103 1031
284
Sort
(ms)
29
2
4
22
425
296
290
296
Tabelle 3.3: Ergebnisse der Experimente zu räumlich ausgedehnten Geometrien (Straßennetz)
Zur Durchführung der Vergleichstests wurden Bereichsanfragen mit unterschiedlicher Ausprägung an die Datenbasis gestellt und dabei die Gittergrößen zum Teil erheblich variiert. Der erste Anfragetyp selektierte 128 und
der zweite 1610 Datensätze bei einer Seitenlänge des Fensters von 0.01 E
bzw. 0.5 E. Analog zu den Experimenten mit Punktdaten wurde jede Anfrage mehrmals hintereinander ausgeführt und erst das letzte Messergebnis
gewertet. Da dadurch der überwiegende Teil der Datenbankseiten im Hauptspeicher bereits zwischengespeichert wurden, konnten die Einflüsse des Sekundärspeichers größtenteils eliminiert werden. Die Nullen in der Tabelle
lassen sich damit erklären, dass die benötigten Daten- und Indexseiten bereits im Datenbankpuffer vorhanden waren und nicht mehr geladen werden
mussten.
Zunächst fällt auf, dass die Anzahl der Indexeinträge mit Vergrößerung
54
KAPITEL 3. ZUGRIFF AUF RÄUMLICHE DATEN
der Gitterzellen abnimmt, was mit den Folgerungen aus dem Lemma 3.1
auf Seite 44 übereinstimmt. Bei einer Gittergröße nahe dem Wert, den die
meisten Geometrien als maximale Ausdehnung haben (vgl. Abbildung 3.10),
verdoppelt sich die Anzahl der Indexeinträge im Vergleich zu der zweiten
Konfiguration. Im Zusammenhang damit bemerkt man einen Anstieg der
zugegriffenen Indexseiten.
Betrachtet man die benötigten Gesamtzeiten, so liegen die besten Ergebnisse in der Nähe der durch die Heuristiken vorgeschlagenen Konfiguration.
Extremwerte in der Konfiguration führen bei dem kleinen Anfragefenster zu
starken Performanzeinbußen, da in diesen Fällen viele Daten- und Indexseiten zugegriffen werden. Auffällig bei dem großen Anfragefenster (0, 5 E)
ist, dass trotz der sehr groß gewählten Gitter der Performanzverlust gering
ausfällt. Dies könnte damit begründet werden, dass die weniger zugegriffenen Indexseiten Einfluss haben und/oder zufällig eine gute Überdeckung
von Gitterzelle und Anfragefenster auftrat, so dass wenige ungültige Treffen
entstanden. Dies wird aus der annähernd gleichen Sortierzeit beim kleinen
und großen Anfragefenster geschlossen.
Anzahl der Geometrien
Zufällig generierte Geometrien Nachdem die Daten aus der GIS-Datenbank zum testen genutzt wurden, erläutert dieser Teil die Experimente
mit den zufällig erzeugten Daten. Der zufällig generierte Datensatz zeichnet
sich dadurch aus, dass sich viele Geometrien im Zentrum des einbettenden
Datenraumes konzentrieren und sich dadurch zahlreiche Überlagerungen ergeben (vgl. Abbildung 3.9). Aufgrund des Verfahrens bei der Erzeugung der
Geometrien bilden sich viel mehr unterschiedliche Ausdehnungen als beim
Straßennetz. Die Anzahl der Punkte, die Platzierung sowie die Koordinaten
selbst wurden durch einen Zufallsgenerator ermittelt. Die Abbildung 3.11
visualisiert die dabei aufgetretenen maximalen Ausdehnungen.
1800
1600
1400
1200
1000
800
600
400
200
0
0
1
2
3
4
maximale Ausdehnung (E)
5
6
Abbildung 3.11: Ausdehnung der Geometrien (Zufallsgeometrien)
In der Mitte des Graphen erkennt man eine lang gestreckte Zone, in der
3.2. GEOMETRIEN IM DB2 SPATIAL EXTENDER
55
verschiedene maximale Ausdehnungen annähernd gleich oft angenommen
wurden. Unter Verwendung der aufgestellten Heuristiken (S. 46) wurden die
Gittergrößen 4 E, 6 E und 8 E als Ausgangspunkt für die Experimente benutzt. Die ersten beiden Gittergrößen wurden aus den empirisch festgelegten
Häufungspunkten 2 E und 3 E ermittelt, während der letzte Wert aufgrund
der maximalen Ausdehnung aller Geometrien gewählt wurde. Damit nehmen
die ersten beiden Gitter den größten Teil der Geometrien auf.
Die Anfragen mit einer Kantenlänge von 1 E und 10 E selektierten aus
der Datenbasis mit den 50.000 zufällig generierten Geometrien etwa 450
bzw. 9600 Datensätze. Die Tabelle 3.4 zeigt die Ergebnisse der durchgeführten Vergleichstests. Die gemessenen Größen sind die gleichen wie in dem
vorherigen Experiment.
Gittergr. (E)
1 2
3
2
4
4
8
3
6
8
12
5
8
12
-
2
4
4
8
3
6
8
12
5
8
12
-
IndexZeit (s)
Seitenzugriffe
einträge Ges. CPU Daten Index
Anfragefenster 1 × 1 E 2
≥ 129717 0,741 0,651
483
60
≥ 95421
0,971 0,911
756
81
≥ 95355
1,092 0,951
733
72
≥ 66536
1,462 1,402
1009
177
2
Anfragefenster 10 × 10 E
≥ 129717 5,147 4,997
3385
468
≥ 95421
5,187 5,077
3415
451
≥ 95355
5,157 5,047
3376
400
≥ 66536
4,496 4,426
3324
179
Sort
(ms)
25
67
69
181
385
398
400
188
Tabelle 3.4: Ergebnisse der Experimente zu räumlich ausgedehnten Geometrien
Da die Tabellen für die Vergleichstests mit den Straßennetzdaten ausführlich erläutert wurden, werden hier nur besondere Auffälligkeiten diskutiert. Eine solche Besonderheit stellen die Experimente mit den sehr großen
Gittern 8 E und 12 E dar. Bezogen auf das kleine Anfragefenster werden
zum Teil doppelt so viele Daten- und Indexseiten verarbeitet als bei den
anderen Gitterkonfigurationen. Der große Zeitaufwand beim Sortiervorgang
lässt darauf schließen, dass der Indexzugriff besonders viele (gültige und
ungültige) Treffer zurückgegeben hat. Im Kontrast dazu erbringt dieselbe
Konfiguration bei dem großen Anfragefenster mit Abstand das beste Ergebnis. Dies ist wahrscheinlich darauf zurückzuführen, dass zum einen sehr wenige Gitter geschnitten wurden und zum anderen sehr viele der Geometrien
aus einer Zelle in das Anfrageergebnis übernommen werden konnten. Bemerkenswert bei den großen Gitterzellen sind auch die Messergebnisse bezüglich
der zugegriffenen Indexseiten und der benötigten Sortierzeit. Die bezüglich
der Ergebnisse zu dem großen Anfragefenster sehr kleinen Messwerte sind
56
KAPITEL 3. ZUGRIFF AUF RÄUMLICHE DATEN
im Vergleich zu der analogen Anfrage mit kleinem Anfragefenster nahezu
identisch. Eine Ursache dafür liegt vermutlich in der Überlappung der Anfragefenster, so dass dieselben Zellen von dem Anfrage Fenster geschnitten
wurden.
Insgesamt liefern die aufgestellten Heuristiken für räumlich ausgedehnte Geometrien einen guten Anhaltspunkt für eine performante Konfiguration. Eine anschließende Überprüfung von leicht variierenden Konfigurationen
ermöglicht eine Verbesserung der Leistung. Aus den Experimenten lässt sich
schlussfolgern, dass die Position und die Größe des Anfragefensters unmittelbaren Einfluss auf die Performanz haben.
Nicht betrachtete Aspekte
Bei den durchgeführten Experimenten konnten nicht alle Aspekte eingehend
betrachtet werden. Daher wurden in diesem Abschnitt mögliche weitere Einflussgrößen auf die Performanz des mehrdimensionalen Zugriffsverfahrens
zusammengestellt.
Die Experimente werden an Tabellen ohne Nutzlast durchgeführt, das
heißt, außer dem räumlichen Objekt enthielten die Tabellen nur noch eine
Identifikator. Da die Geometrien, sofern diese nicht zu groß sind, zusammen
mit anderen Attributen abgespeichert werden, liegt die Vermutung nahe,
dass die Geometrien bei umfangreicher Nutzlast noch stärker auf verschiedenen Datenbankseiten verstreut werden. Dadurch wird eine möglichst genaue
Selektion im Filterschritt um so wichtiger, um möglichst wenige Datenseiten
lesen zu müssen. In diesem Kontext ergibt sich die Frage, welchen Einfluss
die Größe der Datenbankseiten auf die Performanz der Anfragebearbeitung
hat.
Ein anderer Aspekt, der bisher nicht näher untersucht wurde, ist die Bedeutung des Anfragefensters auf die Performanz des Zugriffsverfahrens. Es
ist anzunehmen, das die Position des Fensters unmittelbaren Einfluss auf
die Performanz der Anfragebearbeitung hat, da zum einen die Anzahl der
geschnittenen Gitterzellen und zum anderen die Anzahl der (ungültigen)
Treffer verändert wird. Wie die Größe des Anfragefensters sich auf die Performanz und die Konfiguration des Zugriffsverfahrens auswirkt, wurde nur
am Rande betrachtet.
Die durchgeführten Experimente wurden ausschließlich mit kleinen Datenmengen vorgenommen, da die Tests mit verschiedenen Konfigurationen
aufgrund des nicht zu vernachlässigen Zeitaufwands zum Aufbau der unterschiedlichen Indizes in dem gegebenen Zeitrahmen der Diplomarbeit nicht
durchführbar waren. Demzufolge lassen sich keine konkreten Aussagen zur
Skalierbarkeit treffen.
Im Rahmen der Diplomarbeit wurden keine Vergleiche zu anderen mehrdimensionalen Zugriffsverfahren durchgeführt. Durch derartige Vergleiche
wäre eine bessere Abschätzung der Leistungsfähigkeit des DB2 Spatial Ex-
3.2. GEOMETRIEN IM DB2 SPATIAL EXTENDER
57
tenders möglich.
3.2.6
Bewertung
In den vorangegangenen Abschnitten wurden unterschiedliche Aspekte des
mehrdimensionalen Zugriffsverfahrens des DB2 Spatial Extenders betrachtet. Dieser Abschnitt greift die wesentlichen Erkenntnisse zusammenfassend
auf und wertet die durchgeführten Experimente unter Einbeziehung der aufgestellten Thesen aus.
Das mehrdimensionale Zugriffsverfahren des DB2 Spatial Extender ist
eine einfach zu realisierende und unkomplizierte Methode räumliche Daten
zu indizieren. Es werden keine aufwendigen Operationen zum Aufbau eines
Baumes oder Verzeichnisses benötigt, da alle Indexeinträge mathematisch
ermittelt werden können. Weil die Quellen des DB2 Spatial Extender nicht
zugänglich waren, konnte insbesondere der unmittelbare Indexzugriff nur
auf einer hohen Abstraktionsebene beschrieben werden. Die Frage, wie die
Indexeinträge dazu benutzt werden, um die zu den Geometrien gehörenden
internen Identifikatoren zu ermitteln, bleibt unbeantwortet.
Bei der Konfiguration des mehrdimensionalen Zugriffsverfahren sind die
Eigenschaften der zu verwaltenden räumlichen Objekte besonders zu berücksichtigen. Eine grundlegende Veränderung der Eigenschaften der gespeicherten Geometrien durch Einfüge- und Löschoperationen erfordert im Laufe der
Zeit eine Prüfung der Konfiguration und gegebenenfalls eine Neuerstellung
des Index. Wird auf die Datenbasis ausschließlich lesend zugegriffen, wirkt
sich dieses Charakteristikum weniger stark aus. Im Kontrast dazu ist eine
Neuerstellung des Index insbesondere für große Datenmengen nicht praktikabel.
Im weiteren Verlauf der Analyse wurden Methoden zur Ermittlung einer performanten Konfiguration entwickelt und anschließend experimentell
überprüft. Es hat sich gezeigt, dass eine performante Konfiguration für
Punktdaten einfachen Regeln folgt, während für beliebige räumlich ausgedehnte Objekte nur Heuristiken angegeben werden konnten. Die Vergleichstests bestätigten überwiegend die aufgestellten Theorien. Jedoch bedarf es
insbesondere bei räumlich ausgedehnten Geometrien einer Untersuchung unterschiedlicher Konfigurationen, um in Abhängigkeit von den zu erwartenden
Anfragen eine optimale Konfiguration zu erhalten.
Kapitel 4
Webservices
Der Erfolg des Internets basiert auf einigen wesentlichen Faktoren: Einfachheit und Omnipräsenz. Insofern ein Service-Anbieter eine Webseite erstellen
kann, ist dieser in der Lage, an der weltweiten Internet-Gemeinschaft teilzunehmen. Auf der Seite eines Nutzers genügt die Kenntnis über die Eingabe
von Webadressen, um vielfältige Informationen und Dienstleistungen in Anspruch nehmen zu können. Der Grundgedanke der Webservice-Bewegung
ist, die Idee des einfachen Zugangs zu Informationen auch auf Services auszudehnen. Dabei meint der Begriff Services keine monolithischen Angebote,
sondern er umfasst vielmehr Komponenten, die von anderen zum Zusammensetzen größerer Applikationen oder Services genutzt werden können.
[Vas00]
Webservices repräsentieren eine Revolution der Möglichkeiten im Bereich
des e-Business [Col01]. Diese Technologie gestattet die Entwicklung dynamischer e-Business Applikationen auf der Basis wiederverwertbarer Softwaremodule die über das Internet eingebunden werden. Der Nutzen des
Webservice beinhaltet nicht nur den Business-to-Consumer (B2C) Bereich,
sondern erlaubt auch die Interoperabilität von Systemen zwischen verschiedenen Business-Partnern (B2B).
Dieses Kapitel widmet sich dem Design eines Webservice zur Veröffentlichung von Diensten auf der Basis einer GIS-Datenbank. In den ersten Abschnitten werden die grundlegenden Konzepte und Begriffe aus dem Bereich Webservice erläutert, damit deren Zusammenwirken bei der späteren
Realisierung eines Webservice besser nachvollzogen werden kann. Weiterhin
wird die generelle Webservice-Architektur mit ihren Bestandteilen ServiceVerzeichnis, Anbieter und Klient vorgestellt. Zuletzt werden einige Vor- und
Nachteile von Webservices abgewogen.
Im zweiten Teil dieses Kapitels wird auf die konkrete prototypische Realisierung eines Webservice eingegangen. Im Rahmen einer Testumgebung
wird ein Webservice-Verzeichnis aufgesetzt, ein Webservice publiziert und
durch einen Klienten genutzt. Der implementierte Webservice liefert zu ei58
4.1. WEBSERVICE – EIN ALLGEMEINER BEGRIFF
59
nem gegebenen Standort eine Liste mit bedeutsamen Einrichtungen wie zum
Beispiel Tankstellen oder Krankenhäuser. Die relevanten Informationen werden dabei mit Unterstützung einer GIS-Datenbank ermittelt. Insbesondere
wird in diesem Teil auf die verwendeten Werkzeuge sowie die Modellierung
des Webservice eingegangen.
4.1
Webservice – ein allgemeiner Begriff
Es gibt seit geraumer Zeit über das Internet (Web) zugängliche Dienstleistungen (Services). Es lassen sich die verschiedensten Dinge online erledigen,
sei es der Erwerb von Büchern, Blumen bzw. Fahrscheinen für die Deutsche
Bahn, die Beteiligung an Auktionen oder die Erledigung des Wocheneinkaufs. Was unterscheidet die überall Aufregung auslösenden Webservices von
den eben genannten Internet-Dienstleistungen? Was macht einen Webservice
aus und warum ist dieser Gedanke so revolutionär? Diese und andere Fragen
werden in diesem Abschnitt aufgegriffen und soweit wie möglich geklärt.
4.1.1
Eine Definition
Eine die wesentlichen Aspekte zusammenfassende Definition für Webservice
wurde in einem Tutorial von Doug Tidwell1 veröffentlicht [Tid00]:
Web services are a new breed of Web application. They are
”
self-contained, self-describing, modular applications that can be
published, located, and invoked across the Web. Web services
perform functions that can be anything from simple requests
to complicated business processes. A sample Web service might
provide stock quotes or process credit card transactions. Once
a Web service is deployed, other applications (and other Web
services) can discover and invoke the deployed service.“
Verglichen mit anderen Umschreibungen für den Begriff Webservice z. B.
in [Kir01], [Ste01a] oder [Hew01] ergeben sich grundlegende Eigenschaften
für einen Webservice. Ein Webservice ist eine in sich abgeschlossene Softwarekomponente, in [Kir01] wird dabei auch von einer Blackbox gesprochen, um deren Inhalt man sich nicht mehr zu kümmern braucht. In sich
abgeschlossen heißt, dass die entwickelte Komponente eine klar umrissene
Funktionalität zur Verfügung stellt.
Durch die Veröffentlichung einer Servicebeschreibung inklusive Schnittstelle in einem Netzwerk (insbesondere Internet), kann ein Webservice lokalisiert und zum Zusammensetzen lose gekoppelter, höherwertiger Services
genutzt werden. Ein wesentliches Ziel der Veröffentlichung von Webservices
1
Er wird in diesem Tutorial als IBM’s Evangelist für Webservices bezeichnet.
60
KAPITEL 4. WEBSERVICES
ist die Unterstützung der Wiederverwendung von Komponenten. Die Forderung nach geringer Koppelung erlaubt ein einfaches Austauschen von Komponenten und Rekonfiguration, ohne tief in das System eingreifen zu müssen.
Implizit aus der Veröffentlichung der Webservices ergibt sich eine Verteilung
der Anwendung über das Internet.
Die Beschreibung der spezifischen Funktionalität eines Webservice ist
dabei ebenso standardisiert wie das auf Nachrichten basierende Kommunikationsprotokoll zwischen Serviceanbieter und -nutzer. Bei dem Verwenden
von Webservices ist es unerheblich, welche Plattform oder Implementationssprache der Anwender nutzt, solange Möglichkeiten zum Erzeugen und
Konsumieren von Nachrichten existieren.
4.1.2
Wichtige Standards
Ein markanter Unterschied zu den schon existierenden Dienstleistungen im
Internet lässt sich bereits jetzt festhalten: Die Beschreibung der Funktionalität und der Kommunikationsverfahren eines Webservice sowie die Kommunikation selbst sind standardisiert. Die Standards, auf denen Webservices
aufbauen, werden von den Mitarbeitern unterschiedlichen Firmen (IBM, Microsoft, SUN) in Kooperation erarbeitet. Dieser Abschnitt stellt die Zusammenhänge zwischen den wichtigsten Standard vor.
Bisherige Standards für die Kommunikation bei verteiltem Rechnen wie
Corba, Distributed Smalltalk oder Java RMI resultierten in eng gekoppelten Systemen. Diese Ansätze erfordern zu viele Vereinbarungen zwischen
Systemen unterschiedlicher Organisationen, um eine Basis für eine offene,
allgegenwärtige e-Business-Lösung im Internet zu bilden. Zum Beispiel ist
DCOM ein Microsoft-Standard und funktioniert daher am besten auf Windowsplattformen. Das Pendant zu DCOM bildet mit ähnlichen Restriktionen CORBA auf UNIX-Plattformen. Entsteht nun eine Situation, in der
sowohl mit DCOM als auch mit CORBA operiert werden muss, sind aufgrund der grundsätzlichen Unterschiede zwischen den beiden Protokollen
zuerst schwerwiegende Konflikte zu lösen. [Ada01]
Der Trend aber bewegt sich zu lose gekoppelten und dynamisch gebundenen Systemen. Zum Erreichen von lose gekoppelten Systemen wurde das
RPC-Protokoll„ Simple Object Access Protocol (SOAP) auf der Basis von
XML entwickelt. Diese beiden Standards bilden das Fundament auf dem
Webservices aufbauen.
XML wurde in einer Arbeitsgruppe des World Wide Web Consortiums (W3C) 1996 entwickelt. Damit entstand eine einfach über das Internet verwendbare Sprache, die eine Vielzahl unterschiedlicher Applikationen
unterstützt. Zentrales Ziel ist das Erreichen einer Einfachheit im Umgang
mit der Sprache, indem XML-Dokumente auch für Menschen lesbar und
verständlich sind und so weit wie möglich auf optionale Features verzichtet
wird. [W3C00a]
4.1. WEBSERVICE – EIN ALLGEMEINER BEGRIFF
61
Allein die Möglichkeit, auf einfache Art plattformübergreifend mit anderen Systemen kommunizieren zu können, reicht nicht aus, die oben beschriebenen lose gekoppelten und dynamisch gebundenen Systeme zu realisieren
– es fehlt eine Institution, die Anbieter und Nutzer zusammenbringt. Bis
vor kurzem gab es keine zentrale, standardisierte und einfache Möglichkeit
Informationen darüber zu erlangen, welche Standards unterschiedliche Unternehmen unterstützen. Des Weiteren existierte kein zentraler Anlaufpunkt
zum Herstellen von Kontakten zu allen Anbietern eines bestimmten Service.
Das Lösen der Kommunikationsprobleme erfordert eine Verzeichnisarchitektur, die das Registrieren, Finden und Kontaktieren unternehmensübergreifend standardisiert. Unter diesem Leitgedanken entwickelten führende
Unternehmen in Technologie und e-Business gemeinsam die Universal Description, Discovery and Integration (UDDI) Spezifikation. Diese Spezifikation beschreibt ein plattformunabhängiges Framework zum Auffinden von
Businesspartnern, zum Interagieren von Unternehmen über das Internet und
zum Austauschen von Informationen, realisiert als ein globales Verzeichnis.
[udd00a]
Das Modell für eine Webservice-Architektur stellt Abbildung 4.1 dar.
Die Abbildung zeigt die drei Rollen Verzeichnis (Service Registry), Klient
(Service Requestor) und Anbieter (Service Provider), die im Rahmen von
Webservices entstanden sind, sowie die dazugehörigen Operationen. Weiterhin sind die involvierten Spezifikationen angetragen wie sie in der Diplomarbeit angewendet wurden. Veränderte Randbedingungen können dazu
führen, dass andere Spezifikationen verwendet werden; zum Beispiel ist die
Service-Beschreibung mit WSDL nicht zwingend notwendig.
UDDI
Service
Verzeichnis
Finden
Publizieren
WSDL
WSDL
SOAP
Service
Klient
Binden
Service
Anbieter
Abbildung 4.1: Webservice Modell [Kre01]
Das Service-Verzeichnis dient Anbietern als Plattform zur Veröffentlichung von Webservices. Dazu beschreiben Anbieter die Schnittstellen sowie
die Zugriffspunkte (eine URL) für den Webservice mittels der Webservice
Description Language (WSDL) und registriert (publish) diesen in dem Ver-
62
KAPITEL 4. WEBSERVICES
zeichnis.
Sucht ein Nutzer eine bestimmte Dienstleistung, so bietet das Verzeichnis die Möglichkeit, Webservices aufgrund unterschiedlicher Kriterien aufzufinden (find). Über die WSDL-Beschreibung erfährt der Klient, wie die
Schnittstelle des Webservice aufgebaut ist, welche Kommunikationsprotokolle (z.B. SOAP RPC über HTTP) unterstützt werden und wie der Webservice erreicht werden kann. Nachdem die Wahl des Webservice feststeht, kann
der Nutzer entsprechende Nachrichten an den Anbieter senden (bind). Der
Nachrichtenaustausch zwischen den drei Systemen basiert dabei auf SOAPNachrichten, die auf XML-Dokumente aufbauen.
Der erste Abschnitt ordnet die verschiedenen Standards in einem Schichtenmodell ein, um einen Überblick über die Abhängigkeiten zwischen den
Spezifikationen zu geben. Da schon seit längerer Zeit XML ein weit verbreiteter und bekannter Standard ist, soll auf XML hier nur insofern eingegangen
werden, als es im Kontext zu SOAP behandelt wird. Im dann folgenden
Abschnitt wird das Kommunikationsprotokoll und der RPC-Mechanismus
beschrieben, wie sie im SOAP-Standard festgelegt sind. Zur Beschreibung
der Schnittstelle eines Webservice bietet sich die WSDL-Spezifikation an,
die anschließend vorgestellt wird. Nachdem das unternehmensübergreifende
und globale Verzeichnis UDDI beschrieben wurde, werden Verknüpfungen
zwischen WSDL und den UDDI-Datentypen hergestellt.
Webservice-Architektur
Wie bereits in Abbildung 4.1 aufgezeigt, bestehen die Hauptoperationen
des Webservice-Modells aus Publizieren (publish), Finden (find) und Binden
(bind). Damit die Operationen problemlos genutzt werden können, müssen
diese auf einer gemeinsamen Basis aufbauen. Zur Gewährleistung der Interoperabilität basieren die Schichten der Webservice-Architekturen auf offenen
Standards.
Da die verschiedenen Unternehmen und Organisationen eine individuelle
Vorstellung von Webservices haben, entstanden mit der Zeit unterschiedliche
Schichtenmodelle. In diesem Abschnitt wird das konzeptionelle Schichtenmodell von IBM vorgestellt, da es weitestgehend akzeptiert wurde und sich
auch als Quasi-Industriestandard etabliert hat [Mye02, SHSF01].
Das in [Kre01] veröffentlichte Schichtenmodell wird in Abbildung 4.2
gezeigt. Auf der linken Seite sieht man die Bezeichnungen der einzelnen
Schichten und auf der rechten repräsentativ die zugehörigen Standards und
Werkzeuge. Dabei baut die obere Schicht auf die Fähigkeiten der unteren
Ebene auf.
Eine grundlegende Eigenschaft von Webservices ist die Kommunikation
über ein Netzwerk. Die Basis der Kommunikation im Internet bilden etablierte Protokolle wie HTTP oder TCP/IP.
Auf XML basierende SOAP-Nachrichten können somit über ein Netz-
4.1. WEBSERVICE – EIN ALLGEMEINER BEGRIFF
weitere Layer (Service Flow)
63
WSFL
.
Service Publikation/Suche
UDDI
Service Beschreibung
WSDL
XML−basierte Nachrichten
SOAP, SOAP RPC
Neztwerk
HTTP, SMTP
Abbildung 4.2: Schichtenmodell des UDDI (Interop Stack) [Kre01, udd00b]
werk übertragen werden. SOAP bietet einen einfachen Mechanismus zur
Kommunikation zwischen Webservice-Teilnehmer, indem bei Aufrufen von
entfernten Funktionen deren Parameter und Ergebnisse übertragen werden.
Die nächsthöhere Schicht beschäftigt sich mit der Beschreibung der Kommunikation in einem strukturierten Format. Dazu werden die Schnittstellen
und Kommunikationsaspekte mittels der weit verbreiteten Web Service Description Language (WSDL) beschrieben. Eine WSDL-Beschreibung definiert
also die Rahmenbedingungen für den Aufruf eines Webservice.
Die soeben beschriebenen Schichten sind auf jedem Fall für das Betreiben
oder Nutzen von Webservices notwendig. Unterschiede gibt es hauptsächlich
in den verwendeten Protokollen und Standard. Zum Beispiel lassen sich im
Intranet auch andere Infrastrukturen wie CORBA nutzen.
Damit Webservices von Klienten genutzt werden können, müssen ihnen
die WSDL-Dokumente zugänglich gemacht werden. Das kann zum Beispiel
durch das Zuschicken per E-Mail oder einem einfachen WSDL-Verzeichnis
geschehen. Alternativ kann die Bindung an Webservices entweder zum Entwicklungszeitpunkt oder zur Laufzeit über eine UDDI vollzogen werden.
Simple Object Access Protokoll (SOAP)
Neben SOAP existieren auch RPC-Protokolle wie XML-RPC, WDDX oder
ebXML, aber letztendlich wurde SOAP von den vier möglichen Kandidaten zum Internetstandard. SOAP bietet einen einfachen Mechanismus zum
Austausch von strukturierten und getypten Informationen zwischen dezentralisierten und verteilten Umgebungen mittels XML. Das Protokoll definiert einen Mechanismus, wie anwendungsspezifische Daten kodiert werden.
Dabei bleibt es vollständig unabhängig von Plattform, Objektmodell und
Implementationssprache.
SOAP-RPC ist aber nur ein Teil des SOAP-Standards [W3C00b]; tat-
64
KAPITEL 4. WEBSERVICES
sächlich setzt sich der Standard aus drei Teilen zusammen, die jeweils funktional abgegrenzte Aspekte der Kommunikation beschreiben. Die Rahmenbedindungen eines Nachrichtenaustauschs per SOAP werden durch SOAPEnvelope festgelegt. Damit wird die grundsätzliche Behandlung und Verarbeitung von SOAP-Nachrichten festgelegt – also beantwortet dieser Teil die
Fragen, woraus eine Nachricht aufgebaut ist, wer die Nachricht wie verarbeitet und welche Abschnitte der Nachricht optional sind. Damit anwendungsspezifische Daten zwischen Applikationen ausgetauscht werden können, definiert der Abschnitt SOAP-Encoding-Rules einen Mechanismus zum Serialisieren von Datentypen. Der letzte Teil SOAP RPC umfasst Konventionen
zur Realisierung von RPC-Aufrufen und Antworten. Auf den Inhalt dieser
drei Teile wird im Folgenden kurz eingegangen.
Grundsätzlich werden SOAP-Nachrichten nur in einer Richtung übertragen, von einem Sender zu einem Empfänger. Häufig werden SOAP-Nachrichten zu einem Anfrage-/Antwortverfahren oder einem ähnlichen Mustern
kombiniert. SOAP-Nachrichten werden immer in XML kodiert, wobei die
zum Verstehen einer Nachricht notwendigen Metadaten im SOAP-Envelope
zusammengefasst werden. Diese äußere Hülle bildet das Wurzelelement und
beinhaltet den optionalen Header und den obligatorischen Body (vgl. Abbildung 4.3). Der Header ist ein generischer Mechanismus zum Hinzufügen von
zusätzlicher Funktionalität, wohingegen der Body den Behälter für die Informationen an den finalen Adressaten darstellt. Alle Bestandteile in einem
SOAP-Envelope sind im Namensraum http://schemas.xmlsoap.org/soap/envelope/ definiert. Eine Bindung des SOAP-Envelope-Elements an einen anderen Namensraum wird als Fehler behandelt.
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>
<SOAP-ENV:Header>
<!-- Authentifizierung, Transaktionsmanagement, Bezahlung -->
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<!-- Nutzerdefinierte Daten -->
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Abbildung 4.3: Bestandteile einer SOAP-Nachricht
Im Vergleich zu XML-Dokumenten sind in einer SOAP-Nachricht die Angabe von Dokumenttypdeklarationen (document type declaration) und Verarbeitungsanweisungen (processing instruction) verboten (vgl. [W3C00a]).
Da zum Serialisieren der Daten in SOAP-Nachrichten keine DefaultRegeln definiert sind, wird diese Information in einem globalen Attribut en-
4.1. WEBSERVICE – EIN ALLGEMEINER BEGRIFF
65
codingStyle referenziert. Der Wert dieses Attributs ist eine Liste geordneter2
URIs, die die Regeln zum Deserialisieren einer SOAP-Nachricht identifizieren. In einer Nachricht darf jedes Element ein solches Attribut beinhalten,
wobei die Reichweite dieses Attributs den Inhalt des Elements und aller seiner Kinder, die keinen encodingStyle definieren, umfasst. Somit lassen sich
bestimmte Abschnitte unterschiedlich kodieren, z. B. der Header anders als
der Body.
Der optionale Header bietet einen flexiblen Mechanismus zur Erweiterung einer Nachricht um bestimmte Funktionalität, ohne dass die Kommunikationspartner davon vorher Kenntnis haben müssen. Beispiele für derartige
dezentralisierte und modulare Erweiterungen für Nachrichten sind Authentifizierung, Transaktionsmanagement oder Bezahlungsmodi. Ein Beispiel für
die Übertragung einer Transaktionsnummer zeigt Abbildung 4.4.
<SOAP-ENV:Header>
<t:Transaction xmlns:t="some-URI" SOAP-ENV:mustUnderstand="1">
...
</t:Transaction>
</SOAP-ENV:Header>
Abbildung 4.4: Header einer SOAP-Nachricht
Der Header bietet zwei Attribute zur Steuerung der Bearbeitung einer
SOAP-Nachricht: actor und mustUnderstand. Der Empfänger eines speziellen Headerabschnitts kann durch das Attribut actor bestimmt werden. Dieser Abschnitt wird von dem Empfänger herausgelöst und anschließend die
Nachricht verarbeitet bzw. weitergeleitet. Dieses Attribut ist sinnvoll, da
eine Nachricht auch über mehrere Zwischenstationen zu dem endgültigen
Adressaten geführt werden kann.
Damit Headerabschnitte von einem Empfänger nicht aufgrund mangelnder Implementierung ignoriert und dadurch Fehler verursacht werden, wurde der Header um ein mustUnderstand-Attribut ergänzt. Ist dieses Attribute
auf den Wert 1“ gesetzt, so muss entweder der markierte Headerabschnitt
”
verarbeitet oder ein Fehler generiert werden. Da hierdurch das unbemerkte Ignorieren von Headerabschnitten verhindert wird, erlaubt SOAP eine
Entwicklung robuster Systeme.
Der Body-Abschnitt (vgl. Abbildung 4.5) ist obligatorisch und dient der
Übermittlung von Daten zu dem endgültigen Adressaten. Bei der Nutzung
von SOAP RPC dient dieser Abschnitt zur Übertragung von RPC-Aufrufen
oder Fehlermeldungen.
Der Abschnitt SOAP-Encoding-Rules definiert eine Möglichkeit zum Serialisieren von Datentypen, die im Allgemeinen in Programmiersprachen und
2
Reihenfolge: spezifisch → weniger spezifisch
66
KAPITEL 4. WEBSERVICES
<SOAP-ENV:Body>
<ns1:getPois xmlns:ns1="urn:poiservice">
<X xsi:type="xsd:double">8.65</X>
<Y xsi:type="xsd:double">49.87</Y>
...
</ns1:getPois>
</SOAP-ENV:Body>
Abbildung 4.5: Body einer SOAP-Nachricht
Datenbanken vorhanden sind. Dabei ist ein Typ entweder skalar (scalar) oder
zusammengesetzt aus anderen Typen (compound). Die Elemente und Attribute für SOAP-Encoding sind im Namensraum http://schemas.xmlsoap.org/
soap/encoding/ definiert. Die in SOAP verwendete Kodierung basiert auf
den Spezifikationen XML Schema Part 1: Structures [W3C01b] und XML
Schema Part 2: Datatypes [W3C01c], die um weitere Regeln erweitert wurden. Die Spezifikation ist derart umfangreich, dass eine Beschreibung der
Regeln in diesem Rahmen nicht möglich ist; dazu kann man in [W3C00b]
weiteres nachlesen.
Remote Procedure Call (RPC) ist ein Kommunikationsprotokoll zum
Aufrufen von Methoden über ein Netzwerk. Das Ziel von SOAP RPC ist
die Definition eines RPC-Protokolls unter Ausnutzung der Flexibilität und
Erweiterbarkeit von XML. Obwohl SOAP RPC nicht auf die Übertragung
über HTTP beschränkt ist, aber diese Art der Übertragung in der prototypischen Realisierung eines Webservice genutzt wurde, befassen sich die
folgenden Ausführungen insbesondere damit. Die Einfachheit und die Omnipräsenz von HTTP erlaubt den Austausch von strukturierten und getypten Information in einer dezentralisierten und verteilten Umgebung. Bei der
Verwendung von HTTP lassen sich RPC-Aufrufe auf HTTP-Anforderungen
bzw. RPC-Antworten auf HTTP-Antworten einfach abbilden.
SOAP benutzt HTTP POST zum Senden der Informationen. Der HTTPHeader wird um ein zusätzliches Feld SOAPAction erweitert, um eine Absicht in eine HTTP-Anforderung zu integrieren. Wie in Abbildung 4.6 verdeutlicht, enthält dieses Feld eine URI, die von Servern und Firewalls zum
Filtern der HTTP-Anforderungen verwendet werden kann.
Die Einbeziehung der Absicht einer SOAP-Nachricht ist gerade deswegen
sinnvoll, weil die Nachrichten ansonsten von einer Firewall nicht überprüft
werden könnten. Aus der Verwendung von HTTP leitet sich aber auch ein
Vorteil von SOAP-Nachrichten ab: Das Senden und Empfangen von SOAPNachrichten und damit das Nutzen von Webservices ist auch bei Verwendung einer Firewall möglich. Wenn nun eine SOAP-Nachricht in ein HTTP
POST integriert wird, so muss dabei der Typ des Inhalts (content type) auf
text/xml“ gesetzt sein.
”
4.1. WEBSERVICE – EIN ALLGEMEINER BEGRIFF
67
POST /soap/servlet/rpcrouter HTTP/1.0
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: 605
SOAPAction: ""
<?xml version=’1.0’ encoding=’UTF-8’?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" ...>
<SOAP-ENV:Body>
<ns1:getPois xmlns:ns1="urn:poiservice" ...>
...
</ns1:getPois>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Abbildung 4.6: SOAP HTTP-Anforderung
Wie Abbildung 4.7 vermuten lässt, erfolgt die Rückmeldung auf eine
HTTP-Anforderung mittels der bei HTTP üblichen Statusinformationen.
Sollte bei der Bearbeitung der SOAP-Nachricht ein Fehler aufgetreten sein,
so wird dies durch den Fehlercode 500 ( internal server error“) signali”
siert. Im Beispiel bescheinigt der Statuscode 200, dass die Anfrage inklusive
SOAP-Nachricht empfangen, verstanden und akzeptiert wurde.
HTTP/1.0 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: 1800
<?xml version=’1.0’ encoding=’UTF-8’?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" ...>
<SOAP-ENV:Body>
<ns1:getPoisResponse xmlns:ns1="urn:poiservice" ...>
...
</ns1:getPoisResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Abbildung 4.7: SOAP HTTP-Antwort
Zur Durchführung eines RPC-Aufrufs sind verschiedene Informationen
notwendig, die im Body einer SOAP-Nachricht transportiert werden. Der
Aufruf selbst wird als eine einzelne Struktur (einem zusammengesetzten
Datentyp) mit dem Namen der zu rufenden Methode modelliert. Innerhalb
der Struktur gibt es zu jedem Parameter der Methode ein gleichnamiges
68
KAPITEL 4. WEBSERVICES
Element, wobei die Signatur der Methode den Ausschlag für die Reihenfolge der Parameter gibt. Die Antwort auf eine Anfrage wird in ähnlicher
Weise als Struktur kodiert. Hierbei ist der Name der Struktur irrelevant,
es wird jedoch im Standard empfohlen an den Methodennamen Response
anzuhängen. Zusatzinformationen, die im Allgemeinen nicht direkt an die
gerufene Methode übergeben werden (z. B. Transaktionsnummern), können
als Subelement im SOAP-Header übertragen werden.
Web Service Description Language (WSDL)
Mittels der Web Service Description Language (WSDL) spezifiziert der Anbieter das grundsätzliche Format für die an den veröffentlichten Webservice
gerichteten Anfragen (z.B. Ein- und Ausgabeparameter). Dabei können unterschiedliche Kommunikationsprotokolle und Kodierungen verwendet werden. Auf Grundlage einer XML-Grammatik beschreibt WSDL, welche Leistungen ein Webservice erbringt, wo er zu finden ist und wie er genutzt
werden kann. [Vas00, Sho01] Obwohl bei WSDL neben SOAP auch HTTP
und MIME als Übertragungsprotokoll spezifiziert werden können, gibt dieser
Abschnitt nur einen Überblick über die SOAP-Bindung.
Eine Webservice-Beschreibung ist das Schlüsselelement zur Konstruktion
von lose gekoppelten Webservice-Architekturen, da hierdurch der Umfang
des gemeinsam notwendigen Wissens zwischen Anbieter und Nutzer für die
Nutzung eines Webservice reduziert wird. Die Kombination von WebserviceBeschreibung und SOAP-Kommunikation kapselt zum Beispiel das Wissen
um die zugrunde liegende Plattform oder die verwendete Programmiersprache. [Kre01]
Ein Webservice wird als eine Sammlung von Kommunikationsendpunkten, den so genannten Ports, in einem WSDL-Dokument definiert. Ein solches Dokument lässt sich dabei in zwei Abschnitte unterteilen. Am Anfang befindet sich die Schnittstelle, gefolgt von der Implementation. Der
Schnittstellenabschnitt beschreibt die SOAP-Nachrichten in einer plattformund programmiersprachenunabhängigen Weise. Dies unterstützt die Definition von Webservices, die von unterschiedlichen Service-Anbietern implementiert werden können. Zum Vergleich lassen sich die Interface Definition Language (IDL) oder die Java Interfaces heranziehen. Im zweiten Teil
des WSDL-Dokuments, dem Implementationsabschnitt, befinden sich anbieterspezifische Details wie das Serialisieren von Datentypen (vgl. S. 64).
[W3C01a, Tap01]
Im Allgemeinen werden die oben genannten Teile in unterschiedlichen
Dateien verwaltet. Die Trennung von Interface und Implementation unterstützt den Gedanken, dass eine Schnittstelle eines Unternehmens durch
unterschiedliche Anbieter implementiert werden kann. Damit wird Kompatibilität zwischen unterschiedlichen Anbietern gewährleistet. Folglich muss
der Designer einer Schnittstelle nicht unbedingt auch eine Implementierung
4.1. WEBSERVICE – EIN ALLGEMEINER BEGRIFF
69
anbieten.
Die Schnittstellendefinition besteht aus Informationen zu den verwendeten maschinen- und sprachenunabhängigen Datentypen (types-Element),
den Ein- und Ausgabeparametern der Operationen (message-Elemente) und
der Signatur der Operation unter Einbeziehung der vorher definierten Parameter (portType-Element).
Die für die vorher definierten Operationen vorgesehenen Kommunikationsprotokolle (z. B. SOAP RPC über HTTP) werden in einem bindingElement spezifiziert. Dabei sind für eine Operation auch verschiedene Übertragungsprotokolle möglich. Der Implementationsteil der Service-Beschreibung enthält für jede implementierte Bindung (unterstütztes Protokoll) eine
URL, unter der der Service aufrufbar ist.
Die Abbildungen 4.8 und 4.9 zeigen Teile der WSDL-Definition des in der
Diplomarbeit realisierten Webservice getPois() und illustrieren die Verwendung von WSDL zur Definition eines Webservice. Zur besseren Darstellung
wurden dabei die Namespace-Attribute und andere weniger wichtige Elemente weggelassen.
Die Schnittstelle wird in Abbildung 4.8 präsentiert. Da es sich bei dem
Rückgabewert, einem Array von POIs, um einen komplexen Datentyp handelt, wird dieser explizit innerhalb des types-Element definiert. Die daran
anschließenden message-Elemente beinhalten die Parameterlisten für den
Aufruf des Webservice bzw. den Datentyp für den Rückgabewert. Diese Elemente werden in der anschließenden Portdefinition referenziert. Zuletzt wird
in diesem Beispiel eine Bindung für SOAP RPC über HTTP definiert.
Eine WSDL-Darstellung der Implementation von der obigen Schnittstelle veranschaulicht Abbildung 4.9. Durch den Import (import) wird die
Schnittstellendefinition eingebunden. Der Import ist nicht nur auf das Einbinden von Schnittstellendefinition beschränkt, sondern kann zum Beispiel
auch zum Gliedern der Schnittstellendefinition selbst verwendet werden. Für
eine in der Schnittstellendefinition festgelegte SOAP-Bindung wird der Zugangspunkt, eine URL, in einem port-Element angegeben.
Universal Description, Discovery and Integration (UDDI)
Die Universal Description, Discovery and Integration (UDDI) Spezifikation
standardisiert das Publizieren und Finden von Informationen über Webservices. Damit dient die UDDI vor allem der Lösung der Frage, welche Businesspartner welche Services anbieten. Im April 2001 waren es 176 Unternehmen, von anfänglich 36, die vertraglich die Unterstützung der zukünftigen Entwicklung der UDDI-Spezifikation erklärt haben [Ste01b]. Damit ist
die UDDI nicht nur eine Insellösung eines einzelnen Unternehmens, sondern ermöglicht eine unternehmensübergreifende Erfassung und Verwendung von Webservices. Verantwortlich für die Weiterentwicklung der UDDISpezifikation sind die Unternehmen Ariba Inc., IBM und Microsoft Corpo-
70
KAPITEL 4. WEBSERVICES
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="PoiService"
targetNamespace="http://www.dbis.com/poiservice-interface" ... >
<types>
<xsd:schema targetNamespace="http://..." ... >
<xsd:complexType name="ShapePoint"> ... </xsd:complexType> ...
</xsd:schema>
</types>
<message name="IngetPoisRequest">
<part name="x" type="xsd:double"/> ...
</message>
<message name="OutgetPoisResponse">
<part name="pois" type="types:ArrayOfPoi"/>
</message>
<portType name="PoiService">
<operation name="getPois">
<input message="tns:IngetPoisRequest"/>
<output message="tns:OutgetPoisResponse"/>
</operation>
</portType>
<binding name="PoiServiceBinding" type="tns:PoiService">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getPois"> ... </operation>
</binding>
</definitions>
Abbildung 4.8: Schnittstellenabschnitt des POI-Service (Ausschnitt)
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="PoiService"
targetNamespace="http://www.dbis.com/poiservice" ...>
<import location="http://.../PoiService-interface.wsdl"
namespace="http://www.dbis.com/poiservice-interface">
</import>
<service name="PoiService">
<documentation> ... </documentation>
<port binding="interface:PoiServiceBinding"
name="PoiServicePort">
<soap:address location="http://..."/>
</port>
</service>
</definitions>
Abbildung 4.9: Implementationsabschnitt des POI-Service (Ausschnitt)
4.1. WEBSERVICE – EIN ALLGEMEINER BEGRIFF
71
ration. In diesem Abschnitt werden die Strukturen vorgestellt, aus denen
sich ein UDDI-Verzeichnis zusammensetzt.
Das Prinzip der UDDI bietet drei Aspekte, die bei den bisherigen Ansätzen nicht realisiert sind. Zum Ersten liefert die UDDI den Unternehmen
einen standardisierten, transparenten Mechanismus zur Beschreibung ihrer
Dienstleistungen und Geschäftsprozesse auf Basis einer global offenen Architektur. Als Zweites ist die einfache dynamische Entdeckung und Einbeziehung von Webservices zu nennen. Nicht zuletzt bildet die UDDI einen
zentralen Zugangspunkt zu Webservices. [Ste01b] [udd00a]
Konzeptionell besteht die UDDI aus drei Komponenten: den white, yellow und green pages. White pages beinhalten die Kontaktinformationen zu
Unternehmen wie zum Beispiel Adressen. Yellow pages enthalten Kategorisierungen basierend auf standardisierte Taxonomien und schließlich bieten
green pages technische Informationen über die veröffentlichten Webservices,
z. B. die URL zum Zugriff auf einen Webservice.
Abbildung 4.2 auf Seite 63 zeigt die UDDI als eine weitere Schicht
bei der Realisierung vielseitig nutzbarer Webservices. Aufbauend auf dem
WSDL-Standard definiert die UDDI-Spezifikation ein einfaches Framework
zur Beschreibung von beliebigen Webservices. Im Detail besteht die Spezifikation aus einer XML-Schemadefinition für SOAP-Nachrichten und einer
UDDI Schnittstellenbeschreibung. Das UDDI XML-Schema differenziert dabei vier unterschiedliche Typen von Informationen: Geschäfts-, Service- und
Verbindungsinformationen sowie Informationen über die Spezifikationen des
Webservice.
Die hierarchischen Zusammenhänge zwischen den unterschiedlichen Informationstypen sind in Abbildung 4.10 skizziert, wobei der einzelne Typ
durch den dazugehörenden XML-Elementnamen identifiziert werden kann.
<businessEntity>
<businessService>
<tModel>
<bindingTemplate>
Abbildung 4.10: Schlüssel-Datenstrukturen der UDDI [udd00b]
Die äußere Hülle businessEntity beinhaltet die Geschäftsinformationen (white pages), wozu der Firmennamen, die Kontaktadresse, eine Beschreibung sowie die Kategorisierung des Unternehmens gehören. Diese Daten dienen dem Auffinden eines bestimmten Serviceanbieters, falls bereits
Teilinformationen, z. B. der Firmenname, bekannt sind. Hier wird auch die
72
KAPITEL 4. WEBSERVICES
Suche über die Taxonomien der yellow pages unterstützt und erlaubt somit
dem Suchende die Einschränkung des Suchraumes aufgrund von bestimmten
Eigenschaften, z. B. geografischer Bereich oder Industriezweig.
Die technischen und geschäftlichen Informationen über die Webservices,
den Daten in den green pages, werden in Unterstrukturen von dem Element businessEntity zusammengefasst. Dabei werden zusammengehörende Webservices in businessService-Elementen gruppiert. Webservices können zusammengehörig sein, wenn sie in demselben Geschäftsprozess vorkommen oder in dieselbe Kategorie sortiert werden können.
Die zur Kommunikation zwischen Applikationen und Webservices notwendigen technischen Details werden durch bindingTemplate-Elemente zur
Verfügung gestellt. Dazu zählt vor allem die Adresse eines Webservice, um
überhaupt eine Verbindung aufbauen zu können.
Nicht immer ist die Adresse zum Verbindungsaufbau ausreichend, um
einen Webservice aufrufen zu können. Gibt es zum Beispiel einen Webservice, der Fahrkarten reserviert, so werden auch Informationen zum Ablauf des Vorganges, zu Sicherheitsaspekten oder Form der Rückmeldung
benötigt. Damit eine Verträglichkeit (Kompatibilität) mit dem Webservice
vorher abgeklärt werden kann, referenziert jedes bindingTemplate-Element
Informationen über die Spezifikation des Webservice. Eine solche Referenz
ist der Schlüssel zu Metadaten, bestehend aus dem Namen der veröffentlichenden Organisation und einer URL zu der eigentlichen Spezifikation des
Webservice. Diese Metadaten werden als tModel bezeichnet. Der Leitgedanke
des tModels ist, dass verschiedene Unternehmen Webservices veröffentlichen
können, die zu derselben Spezifikation kompatibel sind (dasselbe tModel).
Aufgrund dieser Eindeutigkeitseigenschaft wird die Referenz zu einem tModel auch mit einem Fingerabdruck (fingerprint) verglichen.
Nicht zuletzt sind auch die Methoden zum Zugriff auf eine UDDI standardisiert. Dabei werden die Anfrage- und die Veröffentlichungsschnittstelle
(Inquiry API and Publishers’ API) unterschieden. Die erstere dient dem
Suchen und Durchblättern von Information aus der UDDI, wohingegen die
andere Schnittstelle das Speichern und Löschen von Informationen entsprechend der oben genannten vier Typen ermöglicht.
Verknüpfung von UDDI und WSDL
Nachdem nun sowohl UDDI als auch WSDL kurz beschrieben worden sind,
wird in diesem Abschnitt die Verknüpfung von WSDL-Dokumenten und einem UDDI-Verzeichnis hergestellt. Das Verständnis für diese Zusammenhänge ist wichtig, damit zum Beispiel entsprechend einer Schnittstelle ein Service implementiert oder ein Service mit einer bestimmten Schnittstelle gefunden werden kann.
Die Zusammenhänge werden in Abbildung 4.11 visualisiert. Auf der linken Seite sieht man schematisch die Struktur eines WSDL-Dokuments und
4.1. WEBSERVICE – EIN ALLGEMEINER BEGRIFF
73
auf der rechten die Informationen in einem UDDI-Verzeichnis.
Service Implementation
<import>
<service>
UDDI
BusinessEntity
BusinessService
<port>
BindingTemplate
<port>
BindingTemplate
Service Schnittstelle
<types>
<message>
<portType>
<binding>
tModel
.
Abbildung 4.11: Verknüpfung von WSDL und UDDI [BCEG01]
Die technische Spezifikation in einem tModel basiert auf dem Schnittstellenteil eines WSDL-Dokuments. Aus den in den vorherigen Abschnitten
dargelegten Informationen ergibt sich, dass auf demselben tModel aufgesetzte Webservices, dieselben Ein- und Ausgabeparameter, dieselbe Kodierung
der Datentypen und bestimmte Übertragungsprotokolle verwenden. Dies garantiert die Austauschbarkeit von Webservices.
Unternehmen, die eine Schnittstelle eines Webservice implementieren,
publizieren in der UDDI neben den Informationen zum Unternehmen den
Implementationsabschnitt des WSDL-Dokuments. Wie bereits weiter oben
beschrieben, kann aus diesem der Schnittstellenteil referenziert werden. Die
von einem Unternehmen verfügbaren Webservices werden mittels BusinessService-Einträgen in der UDDI registriert; jeder Eintrag entspricht demnach
einer Implementation einer Schnittstelle. Die unterstützen Kommunikationsprotokolle sind in der UDDI in bindingTemplates abgelegt. Diese basieren
auf den Port-Definitionen in einem WSDL-Dokument.
4.1.3
Vor- und Nachteile von Webservices
Bisher wurden hauptsächlich die Aspekte der Realisierung von Webservices
und der Aufbau einer Webservice-Architektur betrachtet. Dieser Abschnitt
wägt nun die Anwendbarkeit von Webservices ab, indem wesentliche Vorund Nachteile zusammengefasst werden.
Webservices bieten neue Möglichkeiten beim Aufbau von verteilten Systemen. Die Verwendung bisheriger Architekturen (z. B. CORBA) resultiert
oft in eng gekoppelten Systemen, die im Allgemeinen nur mit erhöhtem
Aufwand in einem heterogenen Umfeld arbeiten. Obwohl diese Protokolle in
einem wohldefinierten Umfeld (z. B. Kommunikation zwischen zwei Servern)
74
KAPITEL 4. WEBSERVICES
Vorteile bieten, ist gerade die Kommunikation zwischen Klient und Server
über das Internet problematisch, da insbesondere dort die Heterogenität am
größten ist.
Durch Entkoppelung der Systeme ermöglichen Webservices Interoperabilität unabhängig von Plattform oder Programmiersprache. Jeder Webservice
kapselt einen gewissen Umfang an Funktionalität, die allein durch Kenntnis der Schnittstelle zugreifbar wird. Das heißt, der Umfang des gemeinsamen Wissens zwischen Service und Klient wird eingeschränkt auf die Beschreibung des Webservice (z. B. WSDL) und dem Verfahren zum Nachrichtenaustausch. Die Kapselung der Funktionalität gestattet einen Austausch
der Implementation zu jedem beliebigen Zeitpunkt, ohne Eingriffe in den
Klienten-Systemen vornehmen zu müssen.
Die angestrebte Wiederverwendung von Softwarekomponenten mittels
Webservices lässt sich auch auf Altsysteme ausdehnen. Da die eigentliche
Realisierung eines Webservice an Bedeutung verliert, lassen sich vorhandene
Altsysteme weiter nutzen, indem entsprechende SOAP-Wrapper erstellt und
anschließend als Webservices beschrieben und veröffentlicht werden.
Webservice-Verzeichnisse ermöglichen das Auffinden von Webservice-Beschreibungen dynamisch zur Laufzeit, wodurch sich selbstkonfigurierende
und robuste Systeme geschaffen werden können. Robust werden die Systeme zum einen durch die Vorgehensweise (Wiederholen bei Fehler) des Klients
beim Aufruf eines Webservice (vgl. Abschnitt 4.2.3) und zum anderen kann
ein nicht gefundener Webservice durch einen anderen, der dieselbe Schnittstelle implementiert, ersetzt werden.
Die Nutzung weit verbreiteter Übertragungsprotokolle ermöglicht jedem
einen einfachen Zugang zu Webservices von überall, insofern SOAP-Nachrichten gesendet und empfangen werden können. Betrachtet man insbesondere die Realisierung von SOAP über HTTP, so ist der Zugriff auf Dienstleistungen über das Internet auch bei dem Vorhandensein einer Firewall
möglich. [IBM00c]
Die Kommunikationsgrundlage für Webservices bildet SOAP und damit
auch XML, wodurch die Nachrichten einfach zu handhaben und universell einsetzbar sind. Im Vergleich zu binär serialisierten Daten sind SOAPNachrichten etwa zehn mal umfangreicher, wobei die Datenmenge ohne
Änderung des Protokolls nicht reduziert werden kann. In [GSC+ 00] werden
verschiedene RMI3 -Mechanismen miteinander vergleichen. Es wurde festgestellt, dass eine Datenübertragung mittels SOAP zum Beispiel um Faktor
zehn gegenüber Java RMI langsamer ist. Gerade das (De-)Serialisieren von
bzw. nach XML nimmt im Vergleich zum Senden signifikant mehr Zeit in
Anspruch.
Ein ähnliches Ergebnis bei einem Performanzvergleich zwischen SOAP
und CORBA lieferte [Ada01]; die textuelle Darstellung der zu übertragenen
3
Remote Method Invocation
4.2. REALISIERUNG EINES WEBSERVICE
75
Daten reduziert den Datendurchsatz erheblich.
Trotz der Schwächen bei der Performanz, lässt sich zusammenfassend
feststellen, dass eine Vereinfachung der Kommunikation innerhalb des (stark
heterogenen) Internets ein wesentlicher Vorteil von SOAP darstellt, den andere Mechanismen bisher nicht bieten können.
4.2
Realisierung eines Webservice
In den vorangegangenen Kapiteln und Abschnitten wurden die Grundlagen
für die prototypische Implementierung eines Webservice zum Zugriff auf
standortbezogene Informationen gelegt.
In Kapitel 2 wurde die Erstellung einer GIS-Datenbank auf Basis von
Tele Atlas Daten beschrieben. Darin sind nicht nur kartografische Informationen zum Verkehrsnetz enthalten, sondern es werden auch Daten über
Gebäude und Einrichtungen von besonderer Bedeutung (POIs) bereitgestellt. Kapitel 3 beschreibt, wie ein Datenbankmanagementsystem performant auf die räumlichen Daten in einer GIS-Datenbank zugreifen und damit
eine kurze Antwortzeit auf Anfragen an die Datenbasis gewährleisten kann.
Weitere für die Realisierung eines Webservice wichtige Konzepte wurden in
den vorherigen Abschnitten vorgestellt und die grundsätzlichen Bestandteile
und Operationen einer Webservice-Architektur beschrieben.
Auf der Basis von kartografischen Daten aus einer GIS-Datenbank wurde
ein Webservice implementiert, der zu einem gegebenen Standort umliegende Points of Interest ermittelt und zugehörige Informationen zurückgibt.
Die Anfrage ist dabei nicht auf bestimmte Gebäude oder Dienstleistungen
beschränkt. Weiterhin ist die Größe der zu berücksichtigenden Umgebung
um den gewählten Standort variabel. Zusätzlich wurde ein Klient für den
Webservice verwirklicht, der mittels einer UDDI den Webservice lokalisiert,
um ihn anschließend aufzurufen.
Der folgende Abschnitt gibt zunächst einen Überblick über das Gesamtsystem sowie die verwendete Software, bevor detailliert auf die einzelnen
Aspekte der Realisierung eingegangen wird. Dazu gehört das Aufsetzen einer UDDI, die Implementierung des Webservice und eines Klienten sowie
besondere Aspekte der Kommunikation.
4.2.1
Die verwendete Webservice-Architektur
Für einzelne Aspekte der Entwicklung einer Webservice-Architektur können
vorhandene Softwarelösungen genutzt werden. Dieser Abschnitt vermittelt,
welche Teile der entwickelten Webservice-Architektur von Werkzeugen unterstützt und welche implementiert wurden.
In einer Webservice-Architektur sind drei verschiedene Rollen (ServiceVerzeichnis, -anbieter und -klient) zu realisieren. Die Abbildung 4.12 präsentiert nochmals das Modell aus Abbildung 4.1 auf Seite 61, wobei diesmal der
76
KAPITEL 4. WEBSERVICES
Schwerpunkt auf den Softwarekomponenten liegt. Dabei wurde bei der Darstellung zwischen bereits vorhandenen und noch zu realisierende Software
unterschieden. Durch Überlappung wurden die Abhängigkeiten der Komponenten visualisiert, die überlappte Komponente ist ein Teil oder bildet die
Grundlage der darüber liegenden.
Wasp UDDI
Service
Verzeichnis
DB2−Anpassung
Finden
Publizieren
WSTK
Service
Klient
Administration
Wasp UDDI
Client API
Binden
Apache Soap
(De−)Serialisierung
komplexer Datentypen
Service
Anbieter
WSDL WSTK
implementierte Teile
vorhandene Werkzeuge
Abbildung 4.12: Überblick über die Systemumgebung
Zentrales Element ist das UDDI-Verzeichnis, das die Informationen zu
allen publizierten Webservices bereithält. Die Basisoperationen einer UDDI
sind das Veröffentlichen einer Webservice-Beschreibung (Publizieren) und
das Finden eines Webservice nach verschiedenen Kriterien. Das Publizieren
eines Webservice wird durch einen Anbieter durchgeführt. Dieser ist auch für
das Bereitstellen der Dienstleistung verantwortlich. Die letzte Komponente
ist ein Klient, der über die UDDI eine bestimmte Funktionalität in Form
eines Webservice finden kann. Anschließend können die Informationen zum
Aufruf des Webservice genutzt werden.
Da der Aufwand für die Realisierung einer UDDI den Rahmen dieser Diplomarbeit überschreiten würde, wurde auf die existierende Software WASP
UDDI 3.0 von der Firma Systinet zurückgegriffen. Zusammen mit dieser
Software wird ein Klient-Paket zum Zugriff auf die UDDI ausgeliefert, das
in einem Werkzeug zur Administration (Publizieren/Löschen) des Webservice verwendet wurde. Das Paket kapselt die Konstruktion und das Parsen
der SOAP-Nachrichten für den Zugriff auf die UDDI.
Eine weitere Werkzeugsammlung zum Umgang mit Webservices bildet
das Web Service Tool Kit (WSTK) von IBM. Es unterstützt den Entwickler
teilweise bei der Beschreibung des Webservice mittels WSDL-Dokumenten.
Insofern komplexe (zusammengesetzte) Datentypen verwendet werden, be-
4.2. REALISIERUNG EINES WEBSERVICE
77
darf es erheblicher Nachbearbeitung der erzeugten Dokumente. Zusätzlich
beinhaltet das Paket komfortable Schnittstellen zum Ausführen von Operationen auf der UDDI; dies beinhaltet auch ein einfaches Publizieren von
Webservices auf Grundlage der WSDL-Beschreibung. Für das Publizieren
konnte jedoch mit dem WSTK keine Verbindung zur WASP UDDI (mit angemessenem Aufwand für die Fehlersuche) hergestellt werden, weshalb das
es an diesem Punkt nicht eingesetzt werden konnte und diese Funktionalität
separat implementiert wurde.
Die Kommunikation zwischen Klient und Webservice basiert auf dem
Austausch von SOAP-Nachrichten. Dazu müssen die gesendeten und empfangenen Daten serialisiert bzw. deserialisiert werden. Hierfür wurde die
Softwarelösung Apache Soap in der Version 2.2 verwendet. Dieses Paket
kapselt auf der einen Seite den Aufruf des Webservice und auf der anderen Seite die Rückgabe des Resultats. Das beinhaltet die Konstruktion und
Auswertung der SOAP-Nachrichten sowie das (De-)Serialisieren einfacher
Datentypen. Da in der Diplomarbeit komplexe Datentypen verwendet werden, wurden für das (De-)Serialisieren entsprechende Operationen in Apache
Soap integriert.
Zusätzlich zum obigen Modell schlüsselt das Use-Case-Diagramm in Abbildung 4.13 die Subsysteme Webservice und Klient weiter auf. Dargestellt
werden die implementierten Operationen der einzelnen Rollen sowie die Auslagerung von Funktionalität des Webservice in das Datenbankmanagementsystem.
Abbildung 4.13: Subsysteme Webservice
Auf der Seite des Webservice-Klienten hat der Nutzer die Möglichkeit, in
78
KAPITEL 4. WEBSERVICES
dem UDDI-Verzeichnis nach einem Service zu suchen und anschließend einen
gefundenen Webservice aufzurufen. Die Anfrage wird von dem Webservice
bearbeitet, indem die Daten von der GIS-Datenbank abgefragt und schließlich dem Nutzer zurückgesendet werden. Bevor ein Webservice verwendet
werden kann, muss dieser zunächst von einem Anbieter publiziert werden.
4.2.2
Implementierung des Webservice
Ein Subsystem in einer Webservice-Architektur ist der Anbieter von Dienstleistungen. In der Diplomarbeit wird ein Webservice verwirklicht, der zu
einem gegebenen Standort umliegende bedeutsame Einrichtungen liefert,
wobei die Informationen über die POIs aus einer GIS-Datenbank bezogen werden. Dazu sind verschiedene Aspekte des Subsystems zu betrachten. Zunächst wird eine Schnittstelle für den Klienten entworfen, das heißt
konkret, es wird eine WSDL-Schnittstelle definiert. Anschließend wird der
Zugriff auf die kartografischen Daten modelliert, wozu zum einen die Ausführung von SQL-Anweisungen und zum anderen das Serialisieren des Ergebnisses gehört.
In diesem Abschnitt wird zunächst die entworfene Schnittstelle beschrieben, um anschließend den Zugriff auf die Daten vorzustellen. Das Serialisieren der Daten wird im Kontext der Kommunikation zwischen Anbieter und
Klient in einem separaten Abschnitt dokumentiert.
Schnittstelle
Die Schnittstellendefinition liefert einem Klienten grundlegende Informationen über den Zugriff auf einen Webservice. Neben der Definition der Ein- und
Ausgabeparameter werden außerdem spezifische Datentypen vereinbart und
auch die nutzbaren Übertragungsprotokolle festgelegt. Nicht zuletzt müssen
auch die Namen der Operationen bestimmt werden. Die Schnittstelle wird
in Form eines WSDL-Dokuments dem Klienten zur Verfügung gestellt. Im
Folgenden werden die genannten Aspekte der Schnittstelle betrachtet.
Grundlegende Eingabeparameter für die Bestimmung in der Umgebung
befindlicher POIs sind eine eindeutige Beschreibung des Standortes sowie ein
Maß für die zu berücksichtigende Umgebung. Der Standort könnte zum Beispiel durch eine vollständige Adresse oder einer koordinatenbasierte Positionsangabe gegeben sein. Da sich aus einer Adressenangabe mittels Geokodierung„ die geografische Position ermitteln lässt, kann davon abstrahiert und
Koordinaten als Eingabe gewählt werden. Weil viele unterschiedliche Koordinatensysteme zur Bestimmung eines Punktes auf der Welt existieren,
benötigt man im Allgemeinen zusätzliche Angaben, die eine Umrechnung in
das Koordinatensystem der GIS-Datenbank erlauben. Dieser Gedanke wurde nicht weiter verfolgt, weil dies bei der Konstruktion eines Webservice nur
eine untergeordnete Rolle spielt und die Berechnungen datenbankseitig au-
4.2. REALISIERUNG EINES WEBSERVICE
79
tomatisierbar sind. Daher wird im Folgenden davon ausgegangen, dass alle
Koordinatenangaben bezüglich des von Tele Atlas verwendeten Koordinatensystems WGS84 gemacht werden. Zusammengefasst sind die Basisparameter ein durch seine Koordinaten gegebener Punkt und eine Entfernungsangabe bezüglich WGS84.
Weiterhin wurden zusätzliche Parameter implementiert, die zum einen
eine Auswahl der gewünschten Feature-Klasse (z. B. nur Tankstellen) und
zum anderen die Anzahl der zurückgegebenen Tupel limitiert. Beide zuletzt
genannte Parameter erlauben eine zum Teil drastische Reduktion des Umfangs der zu übertragenden Antwortnachricht.
Die Antwortnachricht besteht aus einer Liste von POIs. Ein POI wird
dabei durch einen spezifischen Datentyp dargestellt, der neben einem eindeutigen Identifikator und den Koordinaten auch Informationen zum POI selbst
enthält (z. B. Name und Art des POI). Im Sinne von XML-Schema resultiert
dies in einem komplexen Datentyp, der separat in der WSDL-Schnittstelle
definiert werden muss.
Des Weiteren werden in der Schnittstelle die unterstützten Kommunikationsprotokolle festgelegt. Der realisierte Webservice arbeitet auf Basis des
weit verbreiteten und gut unterstützten SOAP RPC Protokolls über HTTP.
Die vollständige WSDL-Definition der Schnittstelle befindet sich in Anhang B.1.1.
Implementierung der Schnittstelle
Die Definition der Schnittstelle ist nur der erste Schritt bei der Realisierung
eines Webservice. Der Kern eines Webservice steckt in den Implementierungen einer Schnittstelle; wie bereits im Abschnitt über WSDL erwähnt, kann
es mehrere Implementierungen geben. An dieser Stelle wird die Modellierung einer möglichen Realisierung beschrieben. Die Aufgabe des Webservice
ist die Umsetzung der Eingabeparameter in SQL-Anweisungen und das anschließende Zusammenstellen der Ergebnismenge. Aus Abbildung 4.13 auf
Seite 77 ist ersichtlich, dass der Webservice auf eine GIS-Datenbank zugreift.
Zur Entkoppelung von SQL-Anweisungen und Anwendung wurden Teile der
Logik in gespeicherte Datenbankprozeduren ausgelagert.
Abbildung 4.14 bietet einen Überblick über die Klassen, die an der Realisierung des Webservice beteiligt sind. Die eingangs erwähnten Teilaufgaben
lassen sich im Klassendiagramm wiederfinden. Die Schnittstelle wird von der
Klasse PoiService zur Verfügung gestellt; die Klasse leitet auch die Datenbankabfragen ein. Die Ergebnisse der Datenbankabfrage wird von der Klasse
ResultSetCollector zur Weiterverarbeitung gesammelt. Die gefundenen Datensätze werden zum Schluss in Poi-Objekten abgelegt und an den Klienten
zurückgegeben.
Beginnend bei den gespeicherten Datenbankprozeduren werden im Folgenden die einzelnen Klassen erläutert und deren Zusammenwirken darge-
80
KAPITEL 4. WEBSERVICES
legt.
Abbildung 4.14: Modellierung des Webservice
Da die kartografischen Daten auf mehrere Schemata verteilt werden,
müssen zunächst die Schemata ermittelt werden, die von dem Umkreis um
den gegebenen Standort geschnitten werden. Anschließend können gezielt die
Tabellen einzelner Schemata abgefragt werden. Die Suche nach den geschnittenen Gebieten übernimmt die gespeicherte Prozedur sp intersected Areas()
und liefert eine Ergebnismenge bestehend aus Schemanamen. Das Ergebnis
wird zusammen mit den Eingabeparametern in Aufrufe der gespeicherten
Prozedur sp get Pois() umgesetzt. Somit erhält man eine Ergebnismenge
mit denjenigen POIs, die den gegebenen Eingabeparametern genügen.
Bisher noch nicht dokumentiert wurden die Vorgänge, die nach dem Aufruf des Webservice zum Herstellen einer Datenbankverbindung und zum
Ausführen der gespeicherten Prozeduren führen. Zum Herstellen einer Datenbankverbindung wird auf das Paket database des Importwerkzeugs (vgl.
Abschnitt 2.3.3) zurückgegriffen. Dadurch wird nicht nur vorhandener Co-
4.2. REALISIERUNG EINES WEBSERVICE
81
de wiederverwendet, sondern es gestattet auch eine einfache Adaption des
Webservice an verschiedene DBMS.
Es wurde festgestellt, dass zunächst die Schemanamen der betroffenen
Gebiete ermittelt werden müssen. Diese Aufgabe wird von einer Methode
der Basisklasse QueryDispatcher übernommen, die ihrerseits die gespeicherte
Prozedur sp intersected Areas() aufruft. Je nach Aufteilung der kartografischen Daten werden mehrere Schemata ermittelt. Damit die Schemata nicht
sequenziell abgearbeitet werden müssen, wurde der Webservice so modelliert, dass mehrere Anfragen (quasi) parallel abgesetzt und verarbeitet werden können. Die Grundlage für dieses Design bildet die Klasse DbQuestioner
als Ableitung von Thread„. Mittels der Klasse QueryDispatcher kann für jede Anfrage bezüglich eines Schemas ein eigener Thread erzeugt werden. Die
Ergebnisse werden zentral durch die Klasse ResultSetCollector gesammelt
und zur Weiterverarbeitung bereitgehalten.
Sobald Ergebnisse vorliegen, werden diese durch Methoden von PoiService zu einer Liste von Poi-Objekten zusammengestellt. Nachdem alle Anfragen abgearbeitet wurden, wird diese Liste an den Klienten weitergegeben.
4.2.3
Klient des Webservice
Ein weiterer Bestandteil einer Webservice-Architektur ist ein Klient, der mit
Hilfe der UDDI konkrete Webservices findet und diese dann aufruft oder in
seinen Arbeitsprozess einbindet. Ein Klient kann dabei sowohl interaktiv
als auch autonom agieren. Der folgende Abschnitt beschreibt die typische
Vorgehensweise zur Einbeziehung von Webservices, wie sie in [udd00b] empfohlen wird. Abschließend werden noch einige Bemerkungen zum realisierten
Webservice-Klienten gemacht.
Die unten beschriebene Vorgehensweise hat zum Ziel, die Anzahl der
Anfragen an eine UDDI zu reduzieren, damit die UDDI-Knoten zu entlasten. Das grundlegende Prinzip hierbei ist das lokale Vorhalten der Verbindungsbeschreibung (bindingTemplate), so dass nicht für jeden Aufruf des
Webservice die UDDI kontaktiert werden muss.
Der Programmierer informiert sich im Allgemeinen zur Entwicklungszeit
mit Hilfe der UDDI über die Anbieter der gewünschten Dienstleistung und
speichert die zum gewählten Webservice gehörenden Verbindungsinformationen. Auf Grundlage dieser Informationen kann die Schnittstellendefinition
bezogen und ein entsprechender Klient programmiert werden. Zur Laufzeit
wird auf Basis der gespeicherten Informationen der Webservice beim Anbieter aufgerufen.
Tritt ein Fehler beim Aufruf des Webservice auf, so werden als erstes die
Verbindungsinformationen überprüft, indem diese von dem UDDI-Verzeichnis erneut heruntergeladen werden. Unterscheiden sich die neuen Informationen von den bisherigen, so wird der lokale Cache korrigiert und ein neuer
Aufruf des Webservice mit den neuen Daten ausgeführt. Lassen sich die neu-
82
KAPITEL 4. WEBSERVICES
en Verbindungsinformationen nicht zugreifen oder schlägt der zweite Aufruf
ebenfalls fehl, so ist der Aufruf des Webservices erfolglos.
Das soeben beschriebene Verfahren wird als Wiederholung bei Fehler (retry on failure) bezeichnet. Vorteilhaft an dem Prinzip ist, dass der Anbieter
bei Veränderungen der Verbindungsinformationen nur den UDDI-Eintrag zu
korrigieren braucht. Zugleich erspart das lokale Caching zusätzliche Verbindungsherstellungen zur UDDI.
Im Rahmen der Diplomarbeit wurde ein einfacher Klient verwirklicht,
der einen Webservice lokalisieren und aufrufen kann. Die Eingaben des Klienten leiten sich aus der Schnittstelle des Webservice ab, das heißt konkret,
es werden dem Programm zumindest ein Standort in Form eines Koordinatenpaares sowie der Radius der zu berücksichtigen Umgebung übergeben; zusätzlich sind Angaben zur Feature-Klasse oder eine Begrenzung der
zurückgegebenen Einträge möglich. Als Ergebnis werden die vom Webservice
gelieferten Daten textuell dargestellt.
4.2.4
Auswahl der UDDI
Die UDDI ermöglicht einem Klienten unter einer Auswahl publizierter Implementierungen die gezielte Suche nach Webservices. Auf der anderen Seite
erlaubt sie einem Anbieter die Bereitstellung von Dienstleistungen, so dass
diese auf einfache Weise weltweit gefunden und eingebunden werden können.
Daraus ergibt sich eine zentrale Stellung in einer Webservice-Architektur.
Steven Graham unterscheidet in [Gra01] sechs unterschiedliche Formen
von UDDI-Verzeichnissen, wobei diese grob in öffentliche und private unterteilt werden können. Der wichtigste UDDI-Knoten ist der Zusammenschluss
globaler UDDI unterschiedlicher Unternehmen (UDDI operator cloud). Wird
bei einem dieser UDDI-Verzeichnisse ein Webservice publiziert, so wird der
Eintrag innerhalb einer festgelegten Frist auf allen zur Gruppe gehörenden
UDDI repliziert. Die privaten Formen der UDDI sind aufgrund ihres Anwendungsgebietes gegliedert (z. B. Partnerkatalog UDDI oder unternehmensinterne UDDI). In der Diplomarbeit wurde eine private UDDI zum Testen des
Webservice-Klienten und -anbieters aufgesetzt (Test Bed UDDI).
Da zum einen die Implementation einer UDDI im Rahmen der Diplomarbeit zu aufwändig ist und zum anderen bereits qualitativ gute Realisierungen existieren, wurde auf eine vorhandene Softwarelösung zurückgegriffen. In diesem Abschnitt werden die Kriterien für die Auswahl der UDDIImplementation dargelegt.
Aufgrund der Festlegung der Datenstrukturen und Schnittstellen in den
Spezifikationen [udd01b] bzw. [udd01a] unterscheiden sich die Implementationen nur im Umfang der Realisierung der Spezifikationen, in der verwendeten Software sowie in der Qualität der Realisierung. Genau diese Eigenschaften bildeten die Entscheidungsgrundlage für die Auswahl einer UDDI.
Ein wichtiges Kriterium war eine (nahezu) vollständige Implementierung
4.2. REALISIERUNG EINES WEBSERVICE
83
der UDDI-Spezifikationen, damit sämtliche Aspekte der Realisierung und
Verwendung eines Webservice betrachtet werden können.
Im Allgemeinen werden die Informationen innerhalb einer UDDI in einer Datenbank abgelegt. Da für die Verwaltung der GIS-Datenbank das Datenbankmanagementsystem DB2 UDB verwendet wird, wurde die Auswahl
auf diejenigen UDDI-Implementationen beschränkt, die bereits das genannte DBMS unterstützten oder durch geringfügige Änderungen eine Adaption
erlaubten.
Letztendlich wurde WASP UDDI 3.0 von der Firma Systinet ausgewählt,
die auf Tomcat 3.2 von der Apache Software Foundation als Web Application
Server aufsetzt. Diese Lösung unterstützt DB2 UDB zwar nicht unmittelbar, ließ sich aber mit wenig Aufwand anpassen. Die Änderungen umfassen
die Implementation einer Klasse zum Verbindungsaufbau zur Datenbank,
sowie die Anpassung der DDL-Kommandos zum Erzeugen der notwendigen
Datenbanktabellen.
Alternativ dazu bietet sich die WebSphere UDDI Registry von IBM an,
die standardmäßig für DB2 UDB konfiguriert ist. Ein Grund für die getroffene Wahl ist, dass die UDDI von IBM auf das kommerzielle Produkt
WebSphere 4.0 aufsetzt und damit nicht frei zugänglich ist. Weiterhin wird
das Produkt nur für Windows-Plattformen angeboten.
Kapitel 5
Zusammenfassung und
Auswertung
In dieser Diplomarbeit wurde prototypisch ein Webservice realisiert, der
standortbezogene Informationen aus einer GIS-Datenbank ausliest. Dazu
wurden zunächst die kartografischen Daten, die in den Datenformaten GDF
bzw. MultiNet Shapefile vom Hersteller Tele Atlas vorlagen, in eine Datenbank importiert. Anschließend wurde untersucht wie ein performanter
Zugriff auf die räumlichen Daten realisiert werden kann. Da die an die Datenbasis gestellten Anfragen auf die Selektion bezüglich eines durch Koordinaten gegebenen Standortes beruhen, war die Konfiguration des mehrdimensionalen Zugriffsverfahrens von besonderem Interesse. Auf Basis der
so verfügbaren GIS-Datenbank wurde zuletzt ein Webservice realisiert, der
zu einem gegebenen Standort Informationen über nahe gelegene Einrichtungen (Points of Interest) zurückliefert. Nach der Zusammenfassung und
Auswertung der in den einzelnen Kapitel gesammelten Erkenntnisse wird
auf mögliche weiterführende Themengebiete eingegangen.
Wie gerade beschrieben, musste vor der Realisierung des Webservice
zunächst eine Datenbasis mit kartografischen Information (GIS-Datenbank)
aufgebaut werden. Das GDF-Dateiformat wurde bereits in [Hee01] vorgestellt. Es wurde dort festgestellt, dass zum Import der Daten in eine Datenbank eine Vorverarbeitung notwendig ist, die die kartografischen Daten in
Layer aufgliedert und die Koordinaten der räumliche Objekte für den Importvorgang kodiert. Da der Fokus der Diplomarbeit auf einem möglichst datenbankunabhängigen Importwerkzeug lag, wurde eine Remodellierung des
Werkzeugs zur Vorverarbeitung vorgenommen. Weil die DBMS die räumlichen Datentypen unterschiedlich repräsentieren und sich die Importverfahren grundlegend unterscheiden, wurde die Modularisierung des Werkzeugs
zur Vorverarbeitung verbessert. Das Ergebnis war ein Werkzeug, dass sich
mit geringem Aufwand an verschiedene DBMS anpassen lässt.
Zum Anfang der Diplomarbeit stellte Tele Atlas ein neues Datenfor84
85
mat zur Verfügung, das die kartografischen Informationen bereits in Layer
gruppierte. Dieses MultiNet Shapefile-Format beruht auf der ESRI Shapefile
Spezifikation und gestattet einen einfachen Zugriff sowohl auf die Geometrien als auch auf deren Eigenschaften. Während beim GDF-Dateiformat die
Koordinaten fehleranfällig durch mehrfaches Dereferenzieren von Identifikatoren zusammengestellt werden mussten, können diese bei einem Shapefile
direkt zugegriffen werden. Da das Shapefile-Format einfach zu verarbeiten
ist und das verwendete DBMS respektive der DB2 Spatial Extender das
Shapefile-Format bereits unterstützt, wurde für die weitere Arbeit dieses
Datenformat zugrunde gelegt.
Dazu wurde zunächst ein einfach zu bedienendes Werkzeug entwickelt,
das die Daten in die Datenbank überträgt. Das entstandene Werkzeug kann
zudem mit wenigen Änderungen für andere DBMS konfiguriert werden. Im
Shapefile-Format gespeicherte Daten sind auf drei Dateien aufgeteilt, wobei eine Datei die Attribute des räumlichen Objekts speichert und die zwei
anderen den Zugriff auf die Koordinaten realisieren. Da die Datei mit den
Attributen im dBASE-Format vorliegt, wurde dieses Format von Tele Atlas auch dazu verwendet, Datensätze ohne zugehörige räumliche Objekte
zu kodieren. Die Schwierigkeit bestand darin, dass DB2 UDB das dBASEFormat nicht unterstützt. Daher wurde zusätzlich zu dem Importwerkzeug
eine gespeicherte Prozedur realisiert, die das Einlesen von dBASE-Dateien
übernimmt.
Nach dem die Daten als GIS-Datenbank zur Verfügung standen, musste ein performanter Zugriff auf die räumlichen Daten gewährleistet werden. Räumliche Daten können nicht ohne zusätzliche Algorithmen mit den
üblichen Methoden einer Datenbank indiziert werden, da entsprechend der
Dimensionalität zwei bzw. drei gleichberechtigte Schlüssel vorliegen. Daher
setzt man schon seit geraumer Zeit mehrdimensionale Zugriffsverfahren ein,
die eine gleichberechtigte Suche nach mehreren Schlüsseln gestatten. Der
DB2 Spatial Extender, als räumliche Erweiterung von DB2 UDB, implementiert neben den räumlichen Datentypen und Funktionen auch ein mehrdimensionales Zugriffsverfahren.
Damit ein performanter Zugriff auf die räumlichen Daten erfolgen kann,
muss zunächst das mehrdimensionale Zugriffsverfahren geeignet konfiguriert
werden. Dazu wurden zuerst allgemeine Eigenschaften und Anforderungen
von mehrdimensionalen Zugriffsverfahren zusammengestellt, um anschließend das Zugriffsverfahren des DB2 Spatial Extender zu analysieren. Das
Ziel der Analyse war die Entwicklung von Regeln und Heuristiken, die eine performante Konfiguration garantieren. In diesem Zusammenhang hat es
sich gezeigt, dass die Konfiguration zur Verwaltung von Punktdaten mit
einfachen Regeln zu beschreiben war, während bei räumlich ausgedehnten Geometrien nur Heuristiken aufgestellt werden konnten. Die durch die
Anwendung der Heuristiken entstandene Konfiguration muss anschließend
durch Vergleichstests überprüft und gegebenenfalls variiert werden. Im An-
86
KAPITEL 5. ZUSAMMENFASSUNG UND AUSWERTUNG
schluss daran wurden die aufgestellten Theorien experimentell überprüft,
wobei diese bestätigt wurden. Aus den Experimenten ergaben sich zusätzliche Einflussfaktoren, die jedoch im Rahmen der Diplomarbeit nicht weiter
untersucht wurden.
Mit der Realisierung eines performanten Zugriffs auf die Datenbasis
konnte prototypisch ein Webservice implementiert werden, der zu einem
gegebenen Standort alle in einem Umkreis befindlichen POIs zurückliefert.
Zum Verständnis der Mechanismen einer Webservice-Architektur erfolgte eine Einarbeitung in die verwendeten Standards, die dann zusammenfassend
in der Diplomarbeit dargestellt wurden. Anschließend wurden die Komponenten Klient und Anbieter der Webservice-Architektur modelliert und implementiert. Zusätzlich wurde ein Webservice-Verzeichnis (UDDI) mit einbezogen, wobei auf existierende Software zurückgegriffen wurde. Die Verwendung einer UDDI impliziert die Funktionen Publikation und Suche eines
Webservice, die auf Klienten- und Anbieterseite integriert wurden.
Aufgrund des begrenzten Zeitrahmen war es nicht möglich, andere notwendige Aspekte der Modellierung einer GIS-Datenbank abzuhandeln. In
der Diplomarbeit wurde vor allem der grundlegende Schritt des Imports der
kartografischen Daten in eine Datenbank realisiert sowie die Konfigurationsmöglichkeiten des DB2 Spatial Extenders untersucht.
Eine umfassende Modellierung einer GIS-Datenbank beinhaltet unter anderem auch die physische Speicherung der Daten auf dem Sekundärspeicher.
Dazu gehört zum Beispiel die Partitionierung von Tabellen und das Verteilen
der Datenbankobjekte auf verschiedene Festplatten und Rechner. Obwohl
die Verteilung der Datenbankobjekte zunächst auf Grundlage des Datenbankschemas entschieden wird, müssen später auch DBMS-spezifische Konzepte, beispielsweise unterschiedliche Partitionierungsmechanismen, berücksichtigt werden.
Hat man sich nicht schon von vorn herein auf ein konkretes DBMS festgelegt, so ist neben den kommerziellen Aspekten auch eine Untersuchung auf
die Eignung des DBMS für das vorgesehene Einsatzgebiet sinnvoll. Gerade
bei der Verarbeitung räumlicher Daten bildeten sich unterschiedliche Konzepte zur Verwaltung der Daten heraus, da es bisher keinen einheitlichen
Standard zur Behandlung räumlicher Daten gibt. Weniger kritisch ist dabei
der Einsatz von unterschiedlichen mehrdimensionalen Zugriffsverfahren, solange diese den in der Diplomarbeit vorgestellten Anforderungen genügen.
Konkrete Probleme treten vor allem bei der unzureichenden Standardisierung geeigneter Datenaustauschformate auf. Zwar ist das Shapefile-Format
sehr weit verbreitet und bildet damit einen Quasi-Standard, dennoch ist
der Import dieses Formates nicht überall vorgesehen (z. B. Oracle). Daraus ergeben sich zwangsläufig zum Teil aufwendige Vorverarbeitungsschritte, die abgesehen von dem zu investierenden Aufwand die Fehleranfälligkeit
erhöhen. Weiterhin unterscheiden sich die DBMS bei dem Umfang der räum-
87
lichen Funktionen, obwohl grundlegende Operationen wie der Schnitt oder
die Vereinigung von Geometrien bei allen DBMS zur Verfügung stehen.
Im Zusammenhang mit mehrdimensionalen Zugriffsverfahren wurde in
der Diplomarbeit nur das des DB2 Spatial Extender untersucht. Ein Vergleich zu anderen Zugriffsverfahren, insbesondere zu denen anderer DBMS,
würde eine bessere Beurteilung der einzelnen Verfahren erlauben. Beispielsweise wird bei Oracle sowohl der R-Tree als auch der Quad-Tree implementiert.
Aus der Sicht der Beantwortung von Anfragen lassen sich ebenfalls verschiedene Aspekte aufgreifen und vertiefen. Die GIS-Datenbank könnte um
Funktionalität erweitert werden, die eine umfassende Kategorisierung und
Hierarchisierung der kartografischen Daten vornimmt. Damit könnte zum
einen eine Priorisierung der Datenübertragung aufgrund von Wichtigkeit
oder Bedeutung eines räumlichen Objekts und zum anderen eine Auswahl
der Datensätze in Abhängigkeit des verwendeten Kartenmaßstabs erfolgen.
Es ist zum Beispiel für eine Überblickskarte von Deutschland nicht sinnvoll,
kleine Städte und Gemeinden sowie Nebenstraßen darzustellen.
Zusammenfassend wurden grundlegende Konzepte zum Aufbau eines
Webservice, der auf eine GIS-Datenbank zugreift, in einer prototypischen
Implementierung veranschaulicht. Insbesondere wurden wichtige Standards
im Zusammenhang dargestellt und angewendet. Im Bereich der GIS-Datenbank wurden Heuristiken und Regeln für das mehrdimensionale Zugriffsverfahren des DB2 Spatial Extender erstellt, die über die Anmerkungen in der
Dokumentation von IBM [IBM00a] hinausgehen.
Anhang A
Modellierung des
Importwerkzeugs
Das Importwerkzeug dient zum Laden des MultiNet Shapefile-Formats in
eine Datenbank und wird im Abschnitt 2.3.3 beschrieben. Dieser Anhang
bietet zusätzliche Informationen zu der Modellierung des Werkzeugs. In den
ersten Abschnitten werden die Konfigurationsdateien dokumentiert.
A.1
Konfigurationsdateien
Dieser Abschnitt geht auf die vom Importwerkzeug verwendeten Konfigurationsdateien ein, die grundsätzlich auf XML basieren. Dabei werden datenbankunabhängige und -spezifische Dateien unterschieden. Während die erste
generelle Einstellungen speichert, kann die letzte für die spezielle Konfiguration eines konkreten DBMS bzw. dessen Spatial Extender genutzt werden. Auf Erklärungen zum Lesen der Diagramme folgt zunächst der Aufbau der allgemeinen Konfiguration für datenbankunabhängige Einstellungen. Der anschließende Abschnitt beschreibt die Struktur der speziell auf
DB2 UDB und DB2 Spatial Extender zugeschnittenen Konfigurationsdatei.
A.1.1
Visualisierung einer XML-Dokumentstruktur
Jedes Rechteck in dem Modell repräsentiert ein XML-Element mit seinem
Namen und zugehörigen Attributen. Die Pfeile geben die Kindbeziehung
wieder, wobei die Kardinalitäten angetragen sind (vgl. Tabelle A.1).
A.1.2
Allgemeine Konfiguration
Die allgemeine Konfiguration umfasst alle datenbankunabhängigen Parameter für Datenbank und Spatial Extender sowie die Definition von SQLProzessen. Abbildung A.1 zeigt die Struktur der XML-Datei sowie die Namen der Klassen, über die auf den jeweiligen Teil zugegriffen werden kann.
88
A.1. KONFIGURATIONSDATEIEN
Zeichen
1
?
∗
+
89
Anzahl Elemente
genau ein (required)
Null oder eins
Null oder mehr
eins oder mehr
Tabelle A.1: Kardinalitäten im XML-Modell
Der Name der Konfigurationsdatei kann beim Start des Importwerkzeugs
optional als Parameter angegeben werden.
Abbildung A.1: Aufbau der allgemeinen Konfigurationsdatei
Die Kinder des Dokumentelements config unterteilen die Konfiguration
in die Abschnitte database mit der Datenbankkonfiguration, spatial mit
Einstellungen zum Spatial Extender der Datenbank und sqlProcesses mit
den Definitionen der SQL-Prozesse. Die Verwaltungsklassen der einzelnen
Parts sind in den Kommentaren angegeben.
Die Datenbankkonfiguration umfasst sämtliche Informationen, die zum
Verbindungsaufbau zur Datenbank notwendig sind. Das Attribut dbdriver
enthält den Namen Klasse, die eine Datenbankverbindung liefert. Diese Klas-
90
ANHANG A. MODELLIERUNG DES IMPORTWERKZEUGS
se muss eine Ableitung von DbConnection sein. Das Element dbFileLoader
spezifiziert in dem Attribut name diejenige Klasse (eine Ableitung von dbFileLoader), die den Import der Shape- und dBASE-Dateien übernimmt.
Zuletzt ist hier auch die Anzahl der Updates angegeben, nachdem ein Commit ausgeführt wird.
Der in spatial wurzelnde Bereich beschreibt die allgemeine Konfigurationen des Spatial Extenders der Datenbank. Momentan wird hier nur der
Name der Spalte (spatialColumn) mit den Geometrien festgelegt.
Die Definition von beliebig vielen SQL-Prozessen erfolgt innerhalb des
Elements sqlProcesses. Jedem SQL-Prozess (sqlProcess) können ein oder
mehr SQL-Dateien (sqlFile) zugeordnet werden, die bei Ausführung nacheinander abgearbeitet werden. Dabei kann für jede Datei die Substitution
von Zeichenketten (mapping) spezifiziert werden, um zum Beispiel den aktuellen Schemanamen in SQL-Anweisungen einzufügen oder ein Kommando
datenbankspezifisch abzuwandeln. Das Mapping wird in den Attributen von
mapping angegeben, wobei im Attribut token die zu ersetzende Zeichenkette
steht. Der neue Text kann entweder direkt im Attribut value oder indirekt in
valueRef gesetzt werden. Dabei bedeutet letzteres, dass in einer systeminternen und zur Laufzeit erstellten Tabelle die Substitution mit dem Schlüssel
valueRef abgelegt wird. Dies ermöglicht eine dynamische Substitution bestimmter Werte zur Laufzeit, z. B. der Datenbankname oder Datenbanknutzer.
A.1.3
Datenbankspezifische Konfiguration
Die datenbankspezifische Konfiguration erlaubt es dem Programmierer, Parameter für konkrete Datenbankmanagementsysteme zentral zuzugreifen.
Dies umfasst zum Beispiel Datenbankeinstellungen oder zusätzliche Angaben für den Spatial Extender. Der Name der Konfigurationsdatei kann mittels einer Option beim Start des Werkzeugs angegeben werden. Anhand
der DB2-Konfigurationsdatei soll die Anwendung der Konfigurationsdatei
verdeutlicht werden. Anschließend folgen Erklärungen zu den räumlichen
Bezugssystemen, die vom DB2 Spatial Extender verwendet werden.
Die Struktur der Konfigurationsdatei für DB2 wird in Abbildung A.2
gezeigt. Das Dokumentelement config besitzt die Kindelemente databaseParameter und spatialReference. Das zuerst genannte Element beschreibt
notwendige Einstellungen, damit der DB2 Spatial Extender ohne Fehler auf
DB2 UDB läuft. Das andere Kindelement speichert die Informationen zur
Speicherung der Koordinaten in der Datenbank. Die Attribute der Elemente
werden im Folgenden erläutert.
Der erste Abschnitt der datenbankspezifischen Konfiguration definiert
die notwendigen Datenbankeinstellungen, damit das Zusammenwirken von
DB2 UDB und DB2 Spatial Extender reibungslos abläuft. Innerhalb DB2
werden global auf das gesamte DBMS (dbm) und lokal bezüglich einer Da-
A.1. KONFIGURATIONSDATEIEN
91
Abbildung A.2: Aufbau der Konfigurationsdatei für DB2 UDB
tenbank (db) wirkende Systemvariablen unterschieden (vgl. Abbildung A.2).
Beide Arten von Variablen können in der Konfigurationsdatei gesetzt werden. Bedarf es der Installation des DB2 Spatial Extenders in einer Datenbank1 , so werden die Einstellungen aus der XML-Datei ausgelesen und für
die Datenbank gesetzt. Dabei gibt name den Parameternamen und value
den einzutragenden Wert an.
Alle Koordinaten der zu verwaltenden Geometrien werden datenbankintern als positive ganzzahlige Werte gespeichert, weshalb es im Allgemeinen
einer Transformation der zu verwaltenden Geometrien bedarf. Die Attribute und die Kindelemente von spatialReference beschreiben gerade diese
Transformation. Mit den Attributen srID und srName wird ein räumliches
Bezugssystem (spatial reference) identifiziert. Mit dem Attribut scID wird
das Koordinatensystem referenziert, das dem räumlichen Bezugssystem zugrunde liegt, z. B. WGS84. Dies ermöglicht später Umrechnungen zwischen
verschiedenen Koordinatensystemen.
1
Es ist nicht die Installation im Betriebssystem gemeint.
92
ANHANG A. MODELLIERUNG DES IMPORTWERKZEUGS
Die eigentlichen Transformationsregeln zum Berechnen der Datenbankrepräsentation von Koordinaten werden in den Elementen shift und scale
definiert. Der erste von der Datenbank durchgeführte Schritt ist die Beseitigung des negativen Vorzeichens durch Translation um die in falsex, falsey
und falsez gesetzten Werten entlang der jeweiligen Achsen. Dabei werden
die dort definierten Werte von der jeweiligen Koordinate subtrahiert. Im
zweiten Schritt erfolgt eine Skalierung mit den Multiplikatoren xyunits bzw.
zunits, so dass keine Nachkommastellen mehr auftreten. Bei Zugreifen auf
die Daten wird die Transformation wieder umgekehrt.
Ein konkretes Beispiel veranschaulicht diese Transformation. Ein Koordinatenpaar (x, y) = (−6.01, 48.1) wird durch Translation um falsex = −7
in x-Richtung und Skalierung mit xyunits = 100 der xy-Koordinaten in die
Datenbankrepräsentation (xDB , yDB ) = (99, 4810) transformiert.
Die Attribute falsem bzw. munits bestimmen die Transformation von
Koordinaten, die zusätzlich ein Maß beinhalten. Weiterführende Erklärungen gibt es in der Dokumentation des DB2 Spatial Extender [IBM00a].
Anhang B
Realisierung des Webservice
B.1
WSDL-Beschreibung
In diesem Abschnitt ist das vollständige WSDL-Dokument des in der Diplomarbeit realisierten Webservice. Der Webservice liefert zu einem gegebenen Punkt alle POIs in einem parametrisierbaren Umkreis. Zur Erklärung
der einzelnen Abschnitte der WSDL-Dokumente wird auf Abschnitt 4.1.2
Seite 68 sowie den Spezifikation [W3C01a] verwiesen.
B.1.1
Schnittstellendefinition
Nachfolgend findet sich die Schnittstellendefinition für den PoiService.
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="PoiService"
targetNamespace="http://www.dbis.com/poiservice-interface"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.dbis.com/poiservice-interface"
xmlns:types="http://www.dbis.com/poiservice-interface/types/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<documentation>
Definition komplexer Datentypen fuer PoiService.
</documentation>
<types>
<xsd:schema
targetNamespace="http://www.dbis.com/poiservice-interface/types/"
xmlns="http://www.w3.org/2001/XMLSchema/">
<annotation>
<documentation>
Definition komplexer Datentypen fuer PoiService.
</documentation>
</annotation>
<xsd:complexType name="ShapePoint">
<xsd:sequence minOccurs="1" maxOccurs="1" >
93
94
ANHANG B. REALISIERUNG DES WEBSERVICE
<xsd:element name="x" type="xsd:double"
minOccurs="1" maxOccurs="1" />
<xsd:element name="y" type="xsd:double"
minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Poi">
<xsd:sequence>
<xsd:element name="id" type="xsd:long"
minOccurs="1" maxOccurs="1" />
<xsd:element name="name" type="xsd:string"
minOccurs="1" maxOccurs="1" />
<xsd:element name="featureType" type="xsd:int"
minOccurs="1" maxOccurs="1" />
<xsd:element name="geometry" type="types:ShapePoint"
minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ArrayOfPoi">
<xsd:sequence>
<xsd:element name="item" type="types:Poi"
minOccurs="1" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</types>
<message name="IngetPoisRequest">
<part name="x" type="xsd:double"/>
<part name="y" type="xsd:double"/>
<part name="buffer" type="xsd:double"/>
<part name="featureType" type="xsd:int"/>
<part name="limit" type="xsd:int"/>
</message>
<message name="OutgetPoisResponse">
<part name="pois" type="types:ArrayOfPoi"/>
</message>
<portType name="PoiService">
<operation name="getPois">
<input message="tns:IngetPoisRequest"/>
<output message="tns:OutgetPoisResponse"/>
</operation>
</portType>
<binding name="PoiServiceBinding" type="tns:PoiService">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getPois">
<soap:operation soapAction="urn:poiservice"/>
<input>
B.1. WSDL-BESCHREIBUNG
95
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:poiservice" use="encoded"/>
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:poiservice" use="encoded"/>
</output>
</operation>
</binding>
</definitions>
B.1.2
Implementationsabschnitt
Das hier gezeigte WSDL-Dokument beschreibt eine Implementation der obigen Schnittstelle.
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="PoiService"
targetNamespace="http://www.dbis.com/poiservice"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:interface="http://www.dbis.com/poiservice-interface"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<import location="http://localhost:8080/wsdl/wsdl/PoiService-interface.wsdl"
namespace="http://www.dbis.com/poiservice-interface">
</import>
<service name="PoiService">
<documentation>Service zum Bestimmen umliegender POIs</documentation>
<port binding="interface:PoiServiceBinding"
name="PoiServicePort">
<soap:address location="http://localhost:8080/soap/servlet/rpcrouter"/>
</port>
</service>
</definitions>
Literaturverzeichnis
[Ada01]
Colin J. Adam. Whitepaper: XML as a basis for remote procedure
calls. Webservices.org, 2001. http://www.webservices.org.
[Bag01]
Jo Bager. Das Handy kennt den Weg. c’t 22/01, S 168, Verlag
Heinz Heise GmbH & Co KG, 2001.
[BCEG01] Peter Brittenham, Francisco Curbera, David Ehnebuske, and Steve Graham.
Understanding WSDL in
a UDDI Registry.
IBM, August 2001.
http://www106.ibm.com/developerworks/webservices/library/ws-wsdl/.
[BKSS94] Thomas Brinkhoff, Hans-Peter Kriegel, Ralf Schneider, and
Bernhard Seeger. Multi-step processing of spatial joins. In Proceedings of the 1994 ACM SIGMOD International Conference
on Management of Data, Minneapolis, Minnesota, May 24-27,
1994, pages 197–208. ACM Press, 1994.
[BRJ99a]
Grady Booch, James Rumbaugh, and Ivar Jacobsen. The Unified
Modeling Language Reference Manual. Addison Wesley Longman, Inc., 1999.
[BRJ99b] Grady Booch, James Rumbaugh, and Ivar Jacobsen. The Unified
Modeling Language User Guide. Addison Wesley Longman, Inc.,
1999.
[Col01]
Mark Colan. Dynamic e-business: Using Web services to transform business - White Paper. IBM, June 2001. http://www3.ibm.com/software/ebusiness/docs/Dynamic.pdf.
[ESR98]
ESRI. ESRI Shapefile Technical Description - White Paper, July
1998. http://www.esri.com/software/opengis/openpdf.html.
[Fla97]
Miroslaw A. Flasza. Implementation von Geo-Funktionalität in
einem erweiterbaren relationalen DBMS. Institut für Informatik,
Humbold-Universität zu Berlin, August 1997.
[GDF95]
European Committee for Standardisation. Geographic Data Files, first draft edition, October 1995.
96
LITERATURVERZEICHNIS
[GG98]
97
Volker Gaede and Oliver Günther. Multidimensional access methods. ACM Computing Surveys, 30(2):170–231, 1998.
[GHJV96] Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Entwurfsmuster; Elemente wiederverwendbarer objektorientierter Software. Addison-Wesley (Deutschland) GmbH, 1996.
1. Auflage.
[Gla00]
Graham Glass. The Web services (r)evolution. IBM, November 2000. http://www-4.ibm.com/software/developer/library/wspeer1.html.
[Gra01]
Steve Graham. The role of private UDDI nodes in Web services, Part 1: Six species of UDDI. IBM, May 2001. http://www106.ibm.com/developerworks/library/ws-rpu1.html.
[GSC+ 00] Madhusudhan Govindaraju, Aleksander Slominski, Venkatesh Choppella, Randall Bramley, and Dennis Gannon.
Requirements for and Evaluation of RMI Protocols for Scientific Computing.
Department of Computer Science Indiana University Bloomington, IN, 2000.
http://www.sc2000.org/techpapr/papers/pap.pap261.pdf.
[Gut84]
Antonin Guttman. R-trees: A dynamic index structure for spatial searching. In SIGMOD’84, Proceedings of Annual Meeting,
Boston, Massachusetts, June 18-21, 1984, pages 47–57. ACM
Press, 1984.
[Hee01]
Ralf Heese. Datenbankentwurf für kartographische Informationen mit Unterstützung verschiedener Anwendungsfelder. Institut
für Informatik, Humbold-Universität zu Berlin, Juni 2001.
[Hew01]
Hewlard-Packard.
hp Web services platform - White Paper, 2001.
http://www.e-speak.hp.com/downloads/PDF/11-1701 webservices bus level wp.pdf.
[HR99]
Theo Härder and Erhard Rahm. Datenbanksysteme. SpringerVerlag Berlin Heidelberg, 1999.
[IBM00a] IBM. IBM DB2 Spatial Extender User’s Guide and Reference
Version 7, 2000.
[IBM00b] IBM.
IBM
DB2
Universal
Database
OnlineInformationen
Version
7.1,
2000.
http://www4.ibm.com/software/data/db2/library/publications.
[IBM00c]
IBM.
Web Services architecture overview, September 2000.
http://www-106.ibm.com/developerworks/web/library/w-ovr.
98
LITERATURVERZEICHNIS
[Kin01]
Kingston Centre for GIS, Kingston University.
troduction
to
GIS
and
Geospatial
Data,
http://www.kingston.ac.uk/geog/gis/intro.htm.
[Kir01]
Mary Kirtland.
- White Paper.
ary
2001.
A
Platform
Microsoft
In2001.
for Web Services
Corporation,
Janu-
http://msdn.microsoft.com/library/enus/dnwebsrv/html/websvcs platform.asp.
[Kre01]
Heather Kreger.
ture (WSCA 1.0).
Web Services Conceptual ArchitecIBM, May 2001.
http://www4.ibm.com/software/solutions/webservices/pdf/WSCA.pdf.
[LLWS97] Jong-Hak Lee, Young-Koo Lee, Kyu-Young Whang, and Il-Yeol
Song. A region splitting strategy for physical database design of
multidimensional file organizations. In VLDB’97, Proceedings of
23rd International Conference on Very Large Data Bases, August 25-29, 1997, Athens, Greece, pages 416–425. Morgan Kaufmann, 1997.
[Mye02]
Judith M. Myerson. Web Services Architectures, January 2002.
http://www.webservicesarchitect.com/content/articles/myerson01.asp.
[NHS84]
Jürg Nievergelt, Hans Hinterberger, and Kenneth C. Sevcik.
The grid file: An adaptable, symmetric multikey file structure.
TODS, 9(1):38–71, 1984.
[PSTW93] Bernd-Uwe Pagel, Hans-Werner Six, Heinrich Toben, and Peter Widmayer. Towards an analysis of range query performance
in spatial data structures. In Proceedings of the Twelfth ACM
SIGACT-SIGMOD-SIGART Symposium on Principles of Database Systems, May 25-28, 1993, Washington, DC, pages 214–
221. ACM Press, 1993.
[PTS97]
D. Papadias, Y. Theodoridis, and E. Stefanakis. Multidimensional range query processing with spatial relations, 1997.
http://citeseer.nj.nec.com/papadias97multidimensional.html.
[Sam94]
Hanan Samet. The Design and Analysis of Spatial Data Structures. Addison-Wesley Publishing Company, Inc., 1994.
[See02]
Scott Seely. SOAP. Prentice-Hall PTR, 2002.
[Sho01]
Yasser
Shohoud.
Introduction
to
http://www.devxpert.com/tutors/wsdl/wsdl.asp.
WSDL,
2001.
[SHSF01] Tanja Sollazzo, Siegfried Handschuh, Steffen Staab, and
Martin Frank.
Semantic Web Service Architecture, 2001.
http://www.aifb.uni-karlsruhe.de/WBS/sha/papers/swobis flairs.pdf.
LITERATURVERZEICHNIS
99
[SK88]
Bernhard Seeger and Hans-Peter Kriegel. Techniques for design and implementation of efficient spatial access methods. In
Fourteenth International Conference on Very Large Data Bases,
August 29 - September 1, 1988, Los Angeles, California, USA,
Proceedings, pages 360–371. Morgan Kaufmann, 1988.
[SRF87]
Timos K. Sellis, Nick Roussopoulos, and Christos Faloutsos. The
r+-tree: A dynamic index for multi-dimensional objects. In
VLDB’87, Proceedings of 13th International Conference on Very Large Data Bases, September 1-4, 1987, Brighton, England,
pages 507–518. Morgan Kaufmann, 1987.
[Ste01a]
The
Stencil
Services
-
[Ste01b]
The Stencil Group.
Why UDDI Will Succeed, Quietly: Two Factors Push Web Services Forward, April 2001.
http://www.stencilgroup.com/ideas scope 200104uddi.html.
[SW88]
Hans-Werner Six and Peter Widmayer. Spatial searching in geometric databases. In Proceedings of the Fourth International
Conference on Data Engineering, February 1-5, 1988, Los Angeles, California, USA, pages 496–503. IEEE Computer Society,
1988.
[Tap01]
Carlos
C.
Tapang.
Web Services Description
Language (WSDL) Explained.
Microsoft
Corporation,
July
2001.
msdn.microsoft.com/library/enus/dnwebsrv/html/wsdlexplained.asp.
[Tel00a]
Tele Atlas NV. Data Specification Volume 1, January 2000. Dokumentation zu den kartographischen Daten.
[Tel00b]
Tele Atlas NV. Data Specification Volume 2, January 2000. Dokumentation zu den kartographischen Daten.
[Tel01a]
Tele Atlas NV. MultiNet Shapefile 4.0 Format Specifications,
2001. Dokumentation zu den kartographischen Daten.
[Tel01b]
Tele Atlas NV. MultiNet Shapefile 4.0 User Guide, 2001. Dokumentation zu den kartographischen Daten.
[Tid00]
Doug Tidwell. Web services - The Web’s next revolution. IBM,
2000.
http://www6.software.ibm.com/developerworks/education/
wsbasics/.
Group.
White
Defining
June
Web
Paper,
2001.
http://www.stencilgroup.com/ideas scope 200106wsdefined.html.
100
LITERATURVERZEICHNIS
[TS96]
Yannis Theodoridis and Timos K. Sellis. A model for the prediction of r-tree performance. In Proceedings of the Fifteenth ACM
SIGACT-SIGMOD-SIGART Symposium on Principles of Database Systems, June 3-5, 1996, Montreal, Canada, pages 161–171.
ACM Press, 1996.
[TSS00]
Yannis Theodoridis, Emmanuel Stefanakis, and Timos K. Sellis.
Efficient cost models for spatial queries using r-trees. Knowledge
and Data Engineering, 12(1):19–32, 2000.
[udd00a]
uddi.org.
UDDI Executive White Paper, September 2000.
http://www.uddi.org/whitepapers.html.
[udd00b]
uddi.org.
UDDI Technical White Paper, September 2000.
http://www.uddi.org/whitepapers.html.
[udd01a]
uddi.org.
on,
UDDI
UDDI
Version
2.0
API
SpecificatiOpen
Draft
Specification,
June
2001.
http://www.uddi.org/pubs/ProgrammersAPI-V2.00-Open20010608.pdf.
[udd01b]
uddi.org.
UDDI Version
ference UDDI Open Draft
2.0 Data Structure ReSpecification, June 2001.
http://www.uddi.org/pubs/DataStructure-V2.00-Open-20010608.pdf.
[Vas00]
Venu
Vasudevan.
mer - White Paper.
A
Web
Services
XML.com, April
http://www.xml.com/pub/a/2001/04/04/webservices/.
Pri2000.
[W3C00a] W3C.
Extensible Markup
W3C Recommendation, second
Language (XML) 1.0;
edition, October 2000.
http://www.w3.org/TR/2000/REC-xml-20001006.
[W3C00b] W3C. Simple Object Access Protocol (SOAP) 1.1; W3C Note,
May 2000. http://www.w3.org/TR/2000/NOTE-SOAP-20000508 .
[W3C01a] W3C. Web Services Description Language (WSDL) 1.1; W3C
Note, March 2001.
http://www.w3.org/TR/2001/NOTE-wsdl20010315.
[W3C01b] W3C. XML Schema Part 1: Structures; W3C Recommendation, May 2001. http://www.w3.org/TR/2001/REC-xmlschema-120010502/.
[W3C01c] W3C. XML Schema Part 2: Datatypes; W3C Recommendation, May 2001. http://www.w3.org/TR/2001/REC-xmlschema-220010502/ .
LITERATURVERZEICHNIS
[War01]
101
Frank Warmerdam. Shapefile C Library V1.2, December 2001.
pobox.com/ warmerdam.
Glossar
Allgemeines Referenzmodell Das allgemeine Referenzmodell aus dem
GDF-Standard beschreibt die Transformation von Objekten der realen
Welt in ihre Datenbankrepräsentation.
Beziehung
∼semantische In der Terminologie des GDF-Standards beschreibt
eine semantische Beziehung (Relationship) die Korrelation zwischen zwei oder mehr Feature.
Clipping Unter Clipping versteht man die Aufteilung eines räumlichen Objekts. Dieses Verfahren wird häufig bei der Indizierung größerer räumlicher Objekte mittels mehrdimensionaler Zugriffsverfahren angewendet.
Data Definition Language Als Data Definition Language (DDL) wird
der Bereich des SQL-Standards bezeichnet, der der Erzeugung von
Objekten (Tabellen, Indizes, usw.) in der Datenbank dient.
Data Manipulation Language Die Data Manipulation Language (DML)
ist Teil des SQL-Standards und dient der Anfrage und Manipulation
von Datenbankinhalten.
Datenfeld Ein Datenfeld ist ein Bestandteil eines Rekords, der ein einzelnes
Datum umfasst, z. B. das Datenfeld Rekordtyp in einem Rekord.
Datenfeldgruppe Eine Datenfeldgruppe umfasst mehrere Datenfelder, die
zusammen gehören, z. B. {Sprache, Name}.
dBASE Im dBASE-Dateiformat könne die Daten einer relationalen Datenbanktabelle inklusive Datentypen und Spaltenbezeichnungen gespeichert werden.
DBMS Ein Datenbankmanagementsystem (DBMS) bezeichnet die Software zum Zugriff auf die Datenbank (Daten).
102
GLOSSAR
103
DEL-Dateiformat (delimited) Das DEL-Dateiformat speichert Datenfelder in einer ASCII-Datei, wobei diese durch ein Trennzeichen separiert
sind.
Entwurfsmuster Ein Entwurfsmuster ist eine Beschreibung zusammenarbeitender Objekte und Klassen, die maßgeschneidert sind, um ein
allgemeines Entwurfsproblem in einem bestimmten Kontext zu lösen.
[GHJV96]
Feature Ein Feature ist die Datenbankdarstellung eines Objektes der realen
Welt (z. B. Frankfurter Allee, Berlin).
Feature-Klasse Eine Feature-Klasse bezeichnet einen Oberbegriff für eine
Gruppe von Feature mit ähnlichen Eigenschaften (z. B. Straße, Stadt).
Fläche Eine Fläche (face) ist ein (abgeschlossenes) zwei- dimensionales Element, das durch eine Menge von Linien begrenzt wird. Innerhalb einer
Fläche dürfen sich Null oder mehr sich nicht schneidende, geschlossene
Mengen von Linien befinden. Diese inneren Flächen werden als Ringe
oder Löcher bezeichnet.
GDF-Standard Der GDF-Standard bietet ein Referenz- und ein Datenaustauschformat zum Speichern und Austauschen von geografischen
Daten codiert in einer ASCII-Datei.
Geokodierung Unter Geokodierung (geocoding) versteht man die Ermittlung der Koordinaten aus einer gegebenen postalischen Adresse.
gespeicherte Prozedur Mit einer gespeicherte Prozedur kann der Nutzer
eines DBMS einen Algorithmus kapseln und mittels CALL aufrufen.
GIS Ein Geo-Informationssystem (GIS) bezeichnet ein Computersystem
zur Erfassung, Verwaltung, Manipulation, Analyse und Visualisierung
von kartografischen Daten [Kin01].
Iterator Ein Iterator definiert eine Sicht auf eine Menge, bei der jedes Element genau einmal berücksichtigt wird. Übliche Methoden sind hasNext() zum Abfragen, ob noch weitere Elemente existieren, und next()
zum Liefern des nächsten Elements.
Knoten Ein Knoten (node) ist ein null-dimensionales Element, das der
Schnittpunkt von zwei oder mehr Linien, der Endpunkt einer Linie
oder ein einzelner isolierter Punkt ist.
Layer Ein Layer gruppiert die kartografischen Daten bezüglich ihrer Thematik, z. B. Autobahnen, Landstraßen, usw.
104
GLOSSAR
Level Mit Level werden die unterschiedlichen Abstraktionsebenen bei der
geometrischen Repräsentation von Feature bezeichnet. Es gibt die Level 0 bis 2, wobei Level 2 die höchste Abstraktion beinhaltet.
Linie Eine Linie (edge) ist eine Folge von sich nicht schneidenden Kanten.
An jedem Ende einer Linie befindet sich ein Knoten.
LOB Unter einem großem Objekt (Large Objekt – LOB) versteht man spezielle Datenbankdatentypen, die zur Aufnahme von besonders großen
Datenmengen (Video, o.ä.) geeignet sind.
Loch siehe Fläche
Map In dieser Arbeit bezieht sich der Begriff Map auf die Standard Template Library (STL). Eine Map verwaltet Schlüssel-Wert-Paare in einem
B-Baum.
nutzerdefinierte Funktion Eine nutzerdefinierte Funktion (UDF) erweitert ein DBMS um vom Nutzer definierte Operationen. Diese Operationen werden innerhalb einer SQL-Anweisung (insbesondere SELECT)
aufgerufen.
Paket Der Begriff Paket wird im Sinne des UML-Standards (package) verwendet und bezeichnet eine logische Gruppierung von Elementen
Point of Interest (POI) Darunter versteht man markante oder wichtige Punkte auf Landkarten wie zum Beispiel Sehenswürdigkeiten und
Freizeitanlagen.
Referenzmodell, allgemeines siehe allgemeines Referenzmodell
Rekord Ein Rekord ist ein Element einer GDF-Datei zur Speicherung eines
Datensatzes.
∼logischer Ein logischer Rekord ist die Aneinanderreihung von Datenfeldern. Ein logischer Rekord kann sich über mehrere physische
erstrecken.
∼physischer Ein physischer Rekord bezeichnet die Aufteilung eines
logischen Rekord zu Zeilen mit maximal 80 Zeichen.
Rekordtyp Je nach Art der Information besitzt der Rekord eine unterschiedliche Struktur. Gleichartige Rekords werden zu einem Rekordtyp
zusammengefasst, z. B. Koordinatenrekords, Punkt-Feature-Rekords.
Relationship siehe Beziehung
Ring siehe Fläche
GLOSSAR
105
RPC Remote Procedure Call bezeichnet ein Kommunikationsprotokoll, das
zum Aufruf von Operationen vor allem über ein Netzwerk verwendet
werden kann.
Shapefile Im Shapefile-Format können Geometrien mit dazugehörigen Eigenschaften kombiniert gespeichert werden. Dabei werden die Geometrien in Shape-Dateien (.shp, .shx) abgelegt und die Eigenschaften in
dBASE-Dateien (.dbf).
SOAP Das Simple Object Access Protocol bietet einen einfachen Mechanismus zum Austausch von strukturierten und getypten Informationen
zwischen dezentralisierten und verteilten Umgebung mittels XML.
Spatial Extender Ein Spatial Extender ist eine Erweiterung eines DBMS
zur Verwaltung, Abfragen und Indizierung von räumlichen Objekten.
stored procedure siehe gespeicherte Prozedur
Strukturierter Datentyp Ein strukturierter Datentyp (structured datatype) ist ein benutzerdefinierter Datentyp, der ein oder mehrere Attribute enthält, die wiederum über Namen und Datentypen verfügen.
Thread Auf einem Betriebssystem in Ausführung befindliche Programminstanzen heißen Prozesse. Threads sind leichtgewichtige Unterprozesse, die die CPU in besonderer Weise bei der Umschaltung zwischen
(Unter-)Prozessen unterstützen.
UDDI Die Universal Description, Discovery and Integration (UDDI) Spezifikation standardisiert das Publizieren und Finden von Informationen
über Webservices.
UDF Abkürzung für user defined function. siehe nutzerdefinierte Funktion
UDT Abkürzung für user defined type. siehe strukturierter Datentyp
ungültiger Treffer Im Zusammenhang mit mehrdimensionalen Zugriffsverfahren versteht man diesem Begriff die Geometrien, die zwar beim
Indexzugriff zurückgeliefert werden, aber nach genauer Überprüfung
der Koordinaten das Anfragefenster doch nicht schneiden.
WSDL Die Webservice Description Language ist eine XML-basierte Sprache zur Definition von Webservices und zur Beschreibung des Zugriffs
auf diese.
XML Die Extensible Markup Language ist eine baumstruktur-orientierte
Sprache zur Repräsentation von semistrukturierten Daten, die dabei
leicht zu erzeugen und zu parsen ist.
106
GLOSSAR
Erklärung
Hiermit erkläre ich, dass ich die vorliegende Arbeit selbständig und ohne
unerlaubte Hilfe verfasst habe.
Berlin, den 28. März 2002
Ralf Heese