Kapitel 8

Werbung
Kapitel 8
Erweiterbarkeit
Oracle Cartridges
DB2 Extenders
Informix DataBlades
Motivation
l Neuere Anwendungen benötigen spezielle Datentypen und Funktionen
–
–
–
–
–
geometrische, mehrdimensionale Daten
zeitbezogene Daten
Bild-, Audio- oder Video-Daten
HTML- oder XML-Daten
...
l Erweiterung des Datenbanksystem um neue Funktionalität
l Ein DBS kann aber nicht alle möglichen Erweiterungen vorhersehen
–
–
Lösung: Offene (erweiterbare) Datenbanksysteme
Anpassung je nach Bedarf
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-2
Ebenen der Erweiterbarkeit
l Erweiterung des Typsystems um anwendungsspezifische Datentypen
–
–
Räumliche, zeitliche, Bild-, Audio- und Videodatentypen
Angereichertes Typsystem allein bietet noch keine allgemeine Lösung
n Typsystem muss an spezielle Bedürfnisse anpassbar sein
l Erweiterung der Anfragesprache um neue Operationen
–
–
Neue Resultattypen und Arten von Aggregationen in der SELECT-Klausel
Neue Prädikate in der WHERE-Klausel
l Erweiterung um passende Methoden des physischen Datenbankentwurfs
–
Indextypen für benutzerdefinierte Datentypen
l Erweiterung der Anfrageoptimierung um neue Regeln
–
–
Selektivitäts- und Kostenfunktionen für benutzerdefinierte Funktionen und Indexe
Kombination von Indexen
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-3
Erweiterungsmodule
Erweiterungsmodul
Erweiterungsmodul
l Kommerzielle Module (DataBlades,
Cartridges, Extenders) beinhalten
–
Spezielle, benutzerdefinierte
Datentypen und Operationen
–
Spezielle Indextypen &
Zugriffsmethoden
–
Regeln und Informationen für
den Anfrageoptimierer
Erweiterungsmodul
Erweiterungsmodul
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Erweiterbarer
Typmanager
Erweiterbarkeitsschnittstelle - API
l Serverseitige Pakete, die
Funktionalität für ein bestimmtes
Anwendungsgebiet bieten
Erweiterbarer
SQL-Parser
Erweiterbare
Zugriffsmethoden
Erweiterbarer
Optimierer
Erweiterbare
Anfrageverarbeitung
Erweiterbarer
Speichermanager
8-4
Erweiterung des Datenbankservers
l Gründe
–
–
–
Performance
n Optimierung von Anfragen mit benutzerdefinierten Operationen
n Indexunterstützung für benutzerdefinierte Datentypem
n Geringere Netzwerkbelastung
Flexibiltät
n Transparente Erweiterung auch bei Upgrades von Erweiterungsmodulen
Transaktionskontrolle
n Operationen des Erweiterungsmoduls in Transaktionen ausgeführt
l Erweiterungsmodule statt Erweiterungen über Stored Procedures/Trigger
–
–
Kontrolle: Einfaches Installieren, Upgraden und Entfernen eines Moduls
Wiederverwendung/Strukturierung: Ein Modul kann Teil ein anderes Moduls sein
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-5
Erweiterbarkeit in Informix durch DataBlade
l DataBlade
–
–
–
–
Software-Paket, das die Funktionalität des Datenbankservers erweitert
Besteht aus SQL-Anweisungen und Code in SPL (Stored Procedure Language)
oder einer externen Programmiersprache geschrieben
Kann spezielle Zugriffsmethoden definieren und Funktionen für den Aufbau,
Verwaltung und Verwendung von Indexen bereitstellen
Kann Selektivitäts- und Kostenfunktionen für den Anfrageoptimierer bereitstellen
l Verfügbare DataBlades
–
–
–
–
Excalibur Text Search, Image DataBlades
Spatial, Time Series, Geodetic DataBlades
Video, Web, NAG (Numerical Algorithm Group) DataBlades
...
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-6
Excalibur Text Search DataBlade
l Stellt Funktionen bereit für
–
–
–
–
–
Effiziente Volltextsuche
Anlegen und Entfernen von Synonymen und Stopwortlisten
Anlegen und Entfernen von eigenen Zeichensätzen
Relevanzbewertung und Ranking von Suchergebnissen
Highliting von Suchbegriffen
l Besteht im wesentlichen aus drei Komponenten
–
–
–
Zugriffsmethode ermöglicht das Erzeugen eines Indexes auf einem Attribut vom
Typ BLOB, CLOB, CHAR, VARCHAR, LVARCHAR
Operator etx_contains führt die Suche aus
Routinen zum Aufbau, Abgleich und Zugriff auf den Index
8-7
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Erzeugen eines Indexes
l Sei folgende Tabellendefinition gegeben
CREATE TABLE Videos (ID
Titel
Beschreibung
INTEGER,
VARCHAR(30),
BLOB);
l Anlegen eines Indexes auf dem Attribut "Beschreibung"
CREATE INDEX BeschreibungIdx
ON Videos (Beschreibung etx_clobs_ops)
USING etx;
–
Zugriffsmethode und sonstige Parameter werden in der USING-Klausel festgelegt
n USING etx (Parameter) ...
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-8
Index-Parameter
l Festlegen des Zeichensatzes
–
–
CHAR_SET = X, wobei X∈{ASCII, ISO, OVERLAP_ISO}
Eigene Zeichensätze können mit etx_CreateCharSet() und etx_DropCharSet()
definiert bzw. entfernt werden
l Filterung von Formatierungsimformationen (Umwandlung in ASCII-Text)
–
FILTER = X, wobei X∈{NONE, STOP_ON_ERROR, CONTINUE_ON_ERROR}
l Unterstützung der Pattern-Suche
–
WORD_SUPPORT = X, wobei X∈{EXACT, PATTERN}
l Grad der Phrasen-Unterstützung
–
PHRASE_SUPPORT = X, wobei X∈{NONE, MEDIUM, MAXIMUM}
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-9
Der etx_contains Operator
l etx_contains(Indexattribut, Suchstring, [etxReturnVariable])
–
Art der Suche im Suchstring festgelegt
n SEARCH_TYPE=WORD
(Default; Schlüsselwortsuche)
n SEARCH_TYPE=BOOLEAN_SEARCH
(Ausdrücke gebildet mit &, |, !)
n SEARCH_TYPE=PHRASE_EXACT
(Exakte Phrasen-Suche)
n SEARCH_TYPE=PHRASE_APPROX
(Approximative Phrasen-Suche)
n SEARCH_TYPE=PROX_SEARCH(X)
(Proximity-Suche, X-viele
Wörter dürfen maximal zwischen zwei gesuchten Begriffen stehen)
n PATTERN_BASIC
(Pattern-Suche mit Best Match)
n PATTERN_TRANS
(Pattern-Suche mit einfacher Vertauschung)
n PATTERN_SUBS
(Pattern-Suche mit einfacher Ersetzung)
n PATTERN_ALL
(Pattern-Suche mit allen drei obigen Optionen)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-10
Tupeltyp etx_ReturnType
l Verwaltet Score- und Highlite-Informationen
–
Typ des optionalen Parameters der Funktion etx_contains
CREATE ROW TYPE etx_ReturnType (
score
REAL,
hilite_info
etx_InternalHilite,
);
–
–
Attribut score gibt die Relevanz des Suchergebnisses an (0 bis 100)
n 100 entspricht "Exact Match"
Attribut hilite_info enthält Information über die zu hervorzuhebenden Teile der
Suchergebnisse
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-11
Beispiele für Sucharten (1)
l Schlüsselwort-Suche (... liefere alle Videos, deren Beschreibung die Worte
"Database" und/oder "Object" enthalten)
SELECT * FROM Videos
WHERE etx_contains(Beschreibung,
ROW('Database Object', 'SEARCH_TYPE=WORD'));
l Boole'sche Suche (... liefere alle Videos, deren Beschreibung die Begriffe
"Database" und "Object", aber nicht "Relation" enthalten)
SELECT * FROM Videos
WHERE etx_contains(Beschreibung,
ROW('Database & Object & !Relation',
'SEARCH_TYPE=BOOLEAN_SEARCH'));
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-12
Beispiele für Sucharten (2)
l Pattern-Suche (... liefere maximal 5 Videos, deren Beschreibung die Worte
"Database" und/oder "Object" mit maximal nur einem Verdreher enthalten)
SELECT * FROM Videos
WHERE etx_contains(Beschreibung,
ROW('Database Object',
'PATTERN_TRANS & MAX_MATCHES=5'));
l Pattern-Suche (... liefere alle Videos, deren Beschreibung die Teile der Worte
"Database" und/oder "Object" mit einer bestimmte Quote enthalten)
SELECT * FROM Videos
WHERE etx_contains(Beschreibung,
ROW('Database Object',
'PATTERN_ALL & WORD_SCORE=85'));
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-13
Lesestoff
Beispiele für Sucharten (3)
l Pattern-Suche (... liefere sortiert die Videos, deren Beschreibung die Worte
"Database" und/oder "Object" mit maximal nur einem Verdreher bzw. Tippfehler
enthalten)
SELECT rcl.score, Titel FROM Videos
WHERE etx_contains(Beschreibung,
ROW('Database Object',
'PATTERN_TRANS & PATTERN_SUBS'),
rcl#etx_ReturnType)
ORDER BY 1;
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-14
Lesestoff
Anlegen und Entfenen von Synonym- und Stopwortlisten
l Anlegen von Synonym- und Stopwortlisten
EXECUTE PROCEDURE etx_CreateSynWlst('MySynList',
'/local0/exclist/MySynList');
EXECUTE PROCEDURE etx_CreateStopWlst('MyStopWList',
'/local0/exclist/MyStopWList');
–
Listen bestehen aus Wörtern, die durch Blanks getrennt sind
l Entfernen von Synonym- und Stopwortlisten
EXECUTE PROCEDURE etx_DropSynWlst('MySynList');
EXECUTE PROCEDURE etx_DropStopWlst('MySynList');
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-15
Lesestoff
Verwenden von Synonym- und Stopwortlisten
l Synonymliste bei der Suche verwenden
SELECT *
FROM Videos
WHERE etx_contains(Beschreibung,
ROW('Database',
'MATCH_SYNONYM=MySynList'));
l Stopwortliste bei der Suche verwenden
SELECT *
FROM Videos
WHERE etx_contains(Beschreibung,
ROW('Object-Relational Database',
'SEARCH_TYPE=PHRASE_EXACT &
CONSIDER_STOPWORDS'));
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-16
Entwicklung eigener DataBlades
l DataBlade Developers Kit bietet graphische Entwurf- und Debuggingtools
–
–
–
–
–
BladeSmith: Erzeugen eines DataBlades
n Generiert Quellcode, SQL-Skripte, Test- und Installationsdateien
BladePack: Verpacken eines DataBlades
BladeManager: Registrierung eines DataBlades in einer Datenbank
DBDK Visual C++ Add-In: Debugging eines DataBlades
IfxQuery: Durchführung von SQL-Debugging-Tests
l Entwicklungssprachen: C, C++, JAVA, SPL
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-17
Entwicklung eigener DataBlades (Forts.)
l Entwicklung von DataBlades erfordert sowohl Wissen über die interne
Server-Architektur als auch über den Einfluss von DataBlades auf
–
–
Virtuelle Prozessoren - Betriebssystemtasks für z.B.
n Ausführung von SQL-Anfragen und Stored Procedures
n Verbindungsaufbau
n Holen der Daten
Speicherverwaltung
n Kommunikation erfolgt über Shared Memory
n Funktionen der DataBlade API bzw. JDBC 2.0 API müssen verwendet werden
l DataBlades werden i.d.R. von spezialisierten Drittanbietern entwickelt
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-18
Opaque Typen als zentrales Erweiterbarkeitskonzept
l Opaque Typen sind atomare, benutzerdefinierte Typen, deren interne
Struktur vollständig eingekapselt und somit dem DBMS nicht bekannt ist
l Bei der Definition muss dem DBMS folgendes bereitgestellt werden:
–
–
Interne Speicherstruktur für Instanzen des Opaque-Typs dient
Support-Funktionen, die auf der internen Speicherstruktur operieren
n Ermöglichen dem DB-Server Opaque-Typen zu verwenden
n INPUT- Konvertiert Opaque-Typ von externer in interne Darstellung
n OUTPUT- Konvertiert Opaque-Typ von interner in externe Darstellung
n ASSIGN - Konstruktor
n DESTROY - Destruktor
n COMPARE - Vergleicht zwei Instanzen des Opaque-Typs
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-19
Opaque-Typen
l Syntax:
–
–
–
–
CREATE OPAQUE TYPE Typname (
INTERNALLENGTH = [VARIABLE|Länge]
[MAXLEN=Länge]
[CANNOTHASH]
[PASSBYVALUE]
)
INTERNALLENGTH legt Grösse (in Bytes) fest
MAXLEN legt maximal Grösse (in Bytes) fest
CANNOTHASH sagt, dass der DB-Server keine Hash-Funktion verwenden kann
PASSBYVALUE spezifiziert, dass ein Opaque-Typ "By Value" übergeben wird
(Defaulteinstellung: "By Reference")
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-20
Vorgehensweise
l Interne Struktur in C oder JAVA definieren
l Support-Funktionen als externe Funktionen implementieren
l Registrierung des Opaque-Typs mittels CREATE OPAQUE TYPE
l Registrierung der Support-Funktionen mittels CREATE FUNCTION
l Definition von Cast-Funktionen mittels CREATE CAST
l Tabellen und Indexe anlegen
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-21
Erweiterbarkeit in Oracle durch Cartridges
l Cartridge
–
–
–
–
Software-Paket, das die Funktionalität des Datenbankservers erweitert
Besteht aus benutzerdefinierten Datentypen und Funktionen
n Code-Implementierung in PL/SQL, C, C++, JAVA
Kann eigene Zugriffsmethoden definieren und Funktionen für den Aufbau,
Verwaltung und Verwendung spezieller Indexstrukturen bereitstellen
Kann Selektivitäts- und Kostenfunktionen enthalten, die bei der Verarbeitung
cartridge-definierter Operationen vom Anfrageoptimierer benutzt werden
l Verfügbare Cartridges (heissen nun Optionen)
–
–
–
interMedia Option (Text, Audio, Image, Video, Locator)
Spatial, Time Series, Visual Information Retrieval Options
...
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-22
InterMedia Image Option
l Unterstützt die Speicherung und Bearbeitung von digitalisierten Bildern
l Stellt Funktionen zur Verfügung, um
–
–
–
–
Bildinhalte zu speichern, kopieren und auszulesen
automatisch die technischen Bildattribute zu bestimmen
n Höhe und Breite (in Pixeln)
n Grösse (in Bytes)
n Graphikformat (z.B. GIF oder BMP)
n Art der Farbkodierung (S/W, Anzahl der Graustufen/Farben)
n Art der Komprimierung (z.B. JPEG oder LZW)
die Kodierung eines Bildes zu ändern
die technischen Bildattribute in Anfragen zu verwenden
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-23
Image - Objekttyp
l Speicherungsformate für Bildinhalte: BLOB (für grosse Binärobjekte)
und BFILE (als externe Dateien)
l Image Cartridge definiert PL/SQL-Paket ORDSYS mit Objekttyp
CREATE TYPE ORDImage AS OBJECT (
source
ORDSource,
height
INTEGER,
width
INTEGER,
contentLength
INTEGER,
fileFormat
VARCHAR2(4000),
contentFormat
VARCHAR2(4000),
compressionFormat VARCHAR2(4000),
mimeType
VARCHAR2(4000),
-- Methodendeklarationen
);
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-24
Image - Methoden
l Methoden (nur einige ausgewählte)
–
setProperties()
n extrahiert und speichert die Bildattribute
n nach jeder Aktualisierung des Bildinhalts aufrufen, damit die aktuellen Werte
der Bildattribute Anfragen zur Verfügung stehen
–
copyContent(dest IN OUT ORDImage)
n kopiert Bild nach dest
–
process(command IN VARCHAR2)
n kodiert Bildinhalte um entsprechendem Konversionsparameter command
–
importFrom(ctx IN OUT RAW, sourceType IN VARCHAR2,
sourceLocation IN VARCHAR2, sourceName IN VARCHAR2 )
n importiert ein externes Bild in die DB
... (get/set-Methoden, Migrations-Methoden, etc.)
–
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-25
Lesestoff
command-Parameter der process-Methoden
l Konversionsparameter der Form:
–
–
"´" Parametername = Wert [Parametername = Wert] "´"
Parameternamen (Werte):
n fileFormat (GIFF, TIFF, PCXF, ...)
n contentFormat (MONOCHROME, RAW, 4BITGRAYSCALE, ...)
n compressionFormat (JPEG, LZW, BMPRLE, ...)
n compressionQuality (LOWCOMP, MEDCOMP, HIGHCOMP, ...)
n ...
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-26
Benutzung des Image-Objekttyps
l Definition einer Tabelle mit Bildern
CREATE TABLE Personen (
Name
VARCHAR(30),
Passphoto
ORDSYS.ORDImage,
Freizeitphoto
ORDSYS.ORDImage
);
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-27
Erzeugen von Image-Instanzen
l Speicherung von Bildern in der Tabelle Personen
–
–
Passphoto als BFILE
Freizeitphoto als BLOB
l Beispiel: Folgende Anweisung erzeugt Person 'Billy' mit einem Freizeitphoto, das
extern als GIF-Datei 'PBilly.gif' abgelegt ist
INSERT INTO Personen
VALUES ('Billy',
ORDSYS.ORDImage(ORDSYS.ORDSource(empty_blob(),
'file','ORDIMGDIR', 'PBilly.gif', SYSDATE,0),
NULL,NULL,NULL,NULL,NULL,NULL,NULL),
ORDSYS.ORDImage(ORDSYS.ORDSource(empty_blob(),
NULL,NULL,NULL,SYSDATE,1),
NULL,NULL,NULL,NULL,NULL,NULL,NULL));
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-28
Extraktion von Bildattributen
l Im Rahmen von PL/SQL-Programmen
DECLARE i ORDSYS.ORDImage;
-- Anwendungsvariable
BEGIN
SELECT Passphoto INTO i
-- Passphoto von Billy
FROM Personen
-- in Variable speichern
WHERE Name = 'Billy' FOR UPDATE;
i.setProperties;
-- Bildattribute ermitteln
UPDATE Personen
SET Passphoto = i
WHERE Name = 'Billy';
-- Passphoto mit neuen
-- Bildattributwerte belegen
END;
8-29
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Umwandlung von Bildformaten
l Im Rahmen von PL/SQL-Programmen
DECLARE i ORDSYS.ORDImage;
-- Anwendungsvariable
BEGIN
SELECT Passphoto INTO i
-- Passphoto von Billy
FROM Personen
-- in Variable speichern
WHERE Name = 'Billy' FOR UPDATE;
i.process('fileFormat=TIFF');
-- In TIFF-Format umwandeln
UPDATE Personen
SET Passphoto = i
WHERE Name = 'Billy';
-- Passphoto mit neuem
-- Bildformat speichern
END;
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-30
Lesestoff
Import von Bildern
l Bild von einer externen Datei in die DB einbringen
DECLARE i ORDSYS.ORDImage;
-- Anwendungsvariablen
ctx RAW(4000) := NULL;
BEGIN
SELECT Freizeitphoto INTO i
-- Freizeitphoto von Billy
FROM Personen
-- in Variable speichern
WHERE Name = 'Billy' FOR UPDATE;
i.importFrom(ctx, 'file', 'ORDIMGDIR', 'Billy.gif'); -- Bild importieren
UPDATE Personen
SET Freizeitphoto = i
WHERE Name = 'Billy';
-- Freizeitphoto mit neuem
-- Bild belegen
END;
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-31
Beispielanfragen
l Liefere alle Freizeitbilder von Billy, die eine bestimmte Breite nicht
überschreiten
SELECT Name, Freizeitphoto.getWidth()
FROM Personen
WHERE Name = 'Billy' AND Freizeitphoto.getWidth() < 32;
l Liefere die Namen der Personen mit der "Länge" der zugehörigen
Passphotos, wenn das Bild im JPEG-Format vorliegt
SELECT Name, Passphoto.getContentLength()
FROM Personen
WHERE Passphoto.getCompressionFormat() = 'JPEG';
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-32
Lesestoff
Erweiterung der Image Option
l Anlegen eines neues Objekttyps "AnnotatedImage"
CREATE TYPE AnnotatedImage AS OBJECT (
image ORDSYS.ORDImage,
description VARCHAR(2000),
MEMBER PROCEDURE setProperties(SELF IN OUT AnnotatedImage),
MEMBER PROCEDURE copy(dest IN OUT AnnotatedImage),
...
);
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-33
Lesestoff
Erweiterung der Image Option (2)
l Definition der Methoden des Objekttyps "AnnotatedImage"
CREATE TYPE BODY AnnotatedImage AS
MEMBER PROCEDURE setProperties(SELF IN OUT AnnotatedImage)
IS BEGIN
SELF.image.setProperties;
SELF.description := 'Dies ist eine Beispielbeschreibung';
END SetProperties;
MEMBER PROCEDURE copy(dest IN OUT AnnotatedImage)
IS BEGIN
SELF.image.copy(dest.image);
dest.description := SELF.description;
END Copy;
...
);
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-34
Lesestoff
Nutzung des neuen Image-Typs (1)
l Anlegen eines Verzeichnisses und einer Tabelle mit annotierten Bildern
und erzeugen eines entsprechenden Tupels
CREATE DIRECTORY AIMGDIR AS 'C:\AnnotatedImages';
CREATE TABLE AnnotierteBilder (
ID
NUMBER,
Bild
AnnotatedImage);
INSERT INTO AnnotierteBilder
VALUES (1, AnnotatedImage(ORDSYS.ORDImage(
ORDSYS.ORDSource(empty_blob(), 'file','ORDIMGDIR', 'Billy.gif',
SYSDATE,0), NULL,NULL,NULL,NULL,NULL,NULL,NULL), NULL));
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-35
Lesestoff
Nutzung des neuen Image-Typs (2)
l Bildattribute extrahieren und speichern
DECLARE a AnnotatedImage;
BEGIN
SELECT Bild INTO a
FROM AnnotierteBilder
WHERE ID = 1 FOR UPDATE;
a.setProperties();
DBMS_OUTPUT.PUT_LINE('Dieses Bild hat wird beschrieben durch ');
DBMS_OUTPUT.PUT_LINE(a.description);
UPDATE AnnotierteBilder
SET Bild = a
WHERE ID = 1;
END;
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-36
Entwicklung eigener Cartridges
l Definition der Objekttypen und Methoden
l Definition eines Indextyps:
–
–
–
Definition der Operatoren, die durch den neuen Indextyp unterstützt werden
Implementierung der Index-Schnittstelle ODCIIndex
n Index-Definition: ODCIIndexCreate, ODCIIndexAlter, ODCIIndexDrop
n Index-Aktualisierung: ODCIIndexInsert, ODCIIndexDelete, ODCIIndexUpdate
n Index-Scan: ODCIIndexStart, ODCIIndexFetch, ODCIIndexClose
Erzeugen des Indextyps als Schemaobjekt
l Definition von Statistiken, Selektivitäts- und Kostenfunktionen
l Wissen über interne Speicher- und Threadverwaltung ist für die
Cartridge-Implementierung notwendig (Oracle bietet Cartridge-Services)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-37
Entwicklung eines Text-Indextyps
CREATE FUNCTION TextContains(Text IN VARCHAR2, Key IN VARCHAR2)
RETURN NUMBER AS
BEGIN ... END TextContains;
CREATE OPERATOR Contains
BINDING (VARCHAR2, VARCHAR2)
RETURN NUMBER USING TextContains;
CREATE TYPE TextIndexMethods (FUNCTION ODCIIndexCreate(...),
FUNCTION ODCIIndexAlter(...), ...);
CREATE TYPE BODY TextIndexMethods ( ... );
CREATE INDEXTYPE TextIndexType
FOR Contains(VARCHAR2, VARCHAR2)
USING TextIndexMethods;
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-38
Verwendung des Text-Indextyps
-- Definition einer Beispieltabelle
CREATE TABLE Personen (
Name
VARCHAR2(30),
Bewerbung
VARCHAR2(2000)
);
-- Erzeugung eines Text-Indexes auf dem Attribut Bewerbung
CREATE INDEX PersonenIdx
ON Personen (Bewerbung)
INDEXTYPE IS TextIndexType;
-- Verwendung des indexgestützten Contains-Operators
SELECT *
FROM Employees
WHERE Contains(Bewerbung, 'Datenbanken')=1;
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-39
Erweiterbarkeit in DB2 durch Extender
l Extender
–
–
–
–
Software-Paket, das die Funktionalität des Datenbankservers erweitert
Besteht aus benutzerdefinierten Datentypen und Funktionen
Kann Zugriffsmethoden mit Funktionen für den Aufbau, Verwaltung und
Verwendung spezieller Indexstrukturen bereitstellen
Kann Selektivitäts- und Kostenfunktionen für die Anfrageoptimierung definieren
l Verfügbare Extenders
–
–
–
–
Image, Audio, Video, Text Extender
Spatial, XML, Net Search Extender
EcoWin Time Series Extender
...
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-40
DB2 Spatial Extender
l Als Teil des DataJoiner ausgeliefert
l Unterstützt die Speicherung und Bearbeitung von raumbezogenen Daten
l Stellt Funktionen bereit, um
–
–
–
Punkte, Linienzüge, Flächen zu erzeugen, ändern und löschen
Räumliche Beziehungen zwischen derartigen geometischen Objekten zu ermitteln
Flächenberechnungen etc. durchzuführen
100
l Bietet Grid-File als Spatial-Indexstruktur an
75
50
25
0
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
A
F
L
R
Z
8-41
Geometry-Typhierarchie
ST_Geometry
ST_Curve
ST_Surface
ST_LineString
ST_Polygon
ST_Point
ST_MultiPoint
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
ST_GeomCollection
ST_MultiCurve
ST_MultiSurface
ST_MultiLineString
ST_MultiPolygon
8-42
Benutzung eines Geometry-Typs
l Definition einer Tabelle mit raumbezogenen Daten
CREATE TABLE Markt (
Name VARCHAR(30),
Flaeche db2sge.ST_Polygon
);
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-43
Erzeugen von Geometry-Instanzen
l Erzeugen neuer Märkte
INSERT INTO Markt
VALUES ('Cola',
db2gse.ST_PolyFromText('polygon (1 1, 1 7, 5 7, 5 1, 1 1)',
db2gse.coordref()..srid(0)));
INSERT INTO Markt
VALUES ('Wein',
db2gse.ST_PolyFromText('polygon (3 3, 6 3, 6 5, 4 5, 3 3)',
db2gse.coordref()..srid(0)));
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-44
Erzeugen eines Spatial-Indexes
l Definition mittels der CREATE INDEX Anweisung
CREATE INDEX MarktSpatialIdx
ON Markt(Flaeche)
USING SPATIAL_INDEX (10.0e0, 100.0e0, 1000.0e0);
–
–
Spatial-Index wird als Grid-File angelegt
Parameter geben die Grösse der jeweiligen Grid-Stufen an
l Funktionsweise des Spatial-Indexes bei Einfügen eines Eintrags
–
–
Falls mehrere Grid-Stufen definiert wurden, versucht DB2 immer den kleinsten
Level zu gebrauchen
Überlappt jedoch das Geometry-Objekt mit mehr als drei Grid-Zellen der
jeweilgen Grid-Stufe, wird die nächsthöhere Grid-Stufe verwendet
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-45
Geometry-Funktionen (1)
FUNCTION db2sge.ST_Intersection(g1 db2sge.ST_Geometry,
g2 db2sge.ST_Geometry)
RETURNS db2sge.ST_Geometry;
–
–
Liefert den Durchschnitt der beiden Objekte
Weitere Funktionen
n ST_Union
n ST_Difference
FUNCTION db2sge.ST_AREA(g db2sge.ST_Geometry)
RETURNS DECIMAL;
–
Liefert die Fläche eines geometischen Objektes
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-46
Geometry-Funktionen (2)
db2sge.Intersects( g1 db2sge.ST_Geometry,
g2 db2sge.ST_Geometry)
RETURN INTEGER;
–
–
Liefert 1 (TRUE), wenn der Durchschnitt der beiden Objekte nicht leer ist
Weitere Funktionen
n ST_Within
(g2 vollständig in g1 enthalten)
n ST_Contains
(g1 vollständig in g2 enthalten)
n ST_Equals
(g1 gleich g2)
n ST_Touches
(g1 und g2 berühren sich; nur gemeinsame Kantenpunkte)
n ST_Disjoint
(Durchschnitt ist leer)
n ST_Overlaps
(Durchschnitt und beide Differenzen sind nicht leer)
n ST_Crosses
(Durchschnitt ist nicht leer und eine Dimension kleiner)
n ST_Distance
(Berechnet Distanz zwischen g1 und g2)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-47
Geometry-Funktionen (3)
db2sge.Relate(g1
g2
PatternMatrix
RETURN INTEGER;
–
–
db2sge.ST_Geometry,
db2sge.ST_Geometry,
String)
Liefert 1 (TRUE), wenn g1 und g2 wie in PatternMatrix angegeben in Beziehung
stehen
PatternMatrix für Equals
Interior Boundary Exterior
n String('T*F**FFF*')
Interior
T
*
F
Boundary
Exterior
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
*
F
*
F
F
*
8-48
Beispielanfragen (1)
l Liefere den Durchschnitt zweier Geometrie-Objekte
SELECT db2sge.ST_Intersection(a.Flaeche, b.Flaeche)
FROM Markt a, Markt b
WHERE a.name = 'COLA' AND b.name = 'WEIN';
l Gib die Namen aller Märkte aus, deren Flächen sich schneiden
SELECT a.Name, a.Name
FROM Markt a, Markt b
WHERE db2sge.ST_Intersects(a.Flaeche, b.Flaeche);
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-49
Beispielanfragen (2)
l Liefere alle Märkte, deren Fläche einen bestimmten Wert überschreitet
SELECT a.Name, db2sge.ST_Area(a.Flaeche)
FROM Markt a
WHERE db2sge.ST_Area(a.Flaeche) > 100;
l Gib die Distanz zwischen zwei Geometrie-Objekten aus
SELECT a.Name, b.Name, db2sge.ST_Distance(a.Flaeche, b.Flaeche)
FROM Markt a, Markt b;
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-50
Lesestoff
Anhang
Oracle Spatial Cartridge
Informix Geodetic DataBlade
Informix Spatial DataBlade
Lesestoff
Oracle Spatial Cartridge
l Unterstützt die Speicherung und Bearbeitung von raumbezogenen Daten
l Stellt Funktionen bereit, um
–
–
–
–
Punkte, Linienzüge, Flächen zu erzeugen, ändern und löschen
Räumliche Beziehungen zwischen derartigen geometischen Objekten zu ermitteln
Flächenberechnungen durchzuführen
...
l Bietet einen Quad-Tree als Spatial-Indexstruktur an
NW
NO
SW
SO
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-52
Lesestoff
Objekttyp SDO_GEOMETRY (1)
l PL/SQL-Paket MDSYS definiert Objekttyp SDO_GEOMETRY
CREATE TYPE SDO_GEOMETRY AS OBJECT (
SDO_GTYPE
NUMBER,
SDO_SRID
NUMBER,
SDO_POINT
SDO_POINT_TYPE,
SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY,
SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY);
);
l SDO_GTYPE: Typ des Geometrie-Objekts, D definiert #Dimensionen
D001-D007 = POINT, LINESTRING, POLYGON, COLLECTION, MULTIPOINT,
MULTILINESTRING, MULTIPOLYGON
l SDO_SRID: Reserviert für zukünftige Erweiterungen
l SDO_POINT: Punktdaten
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-53
Lesestoff
Objekttyp SDO_GEOMETRY (2)
l SDO_ELEM_INFO:
–
–
–
–
Tripel (SDO_STARTING_OFFSET, SDO_ETYPE, SDO_INTERPRETATION)
SDO_STARTING_OFFSET: Bestimmt ersten Punkt in SDO_ORDINATES
SDO_ETYPE-Werte:
n 1, 2, 3, 1003, 2003: einfache Polygon-Ringe
n 4, 5, 1005, 2005: zusammengesetzte Polygon-Ringe
n 100X ("Exterior"; Gegenuhrzeigersinn)
n 200X ("Interior"; Uhrzeigersinn)
SDO_INTERPRETATION: Legt Interpretation der SDO_ETYPE-Werte fest
l SDO_ORDINATES: Variabler Array von NUMBER-Werten definiert die
Koordinaten des Geometrie-Objekts
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-54
Lesestoff
Illustration der Eigenschaften eines Geometrie-Objektes
• Zweidimensionales Polygon-Objekt r:
(10,40)
(25,40)
(10,15)
(25,15)
SDO_GEOMETRY r = (SDO_GTYPE
SDO_SRID
SDO_POINT
SDO_ELEM_INFO
SDO_ORDINATES
=2003,
=NULL,
=NULL,
=(1, 1003, 3),
=(10,15, 25,40));
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-55
Lesestoff
Benutzung des Geometry-Objekttyps
l Definition einer Tabelle mit raumbezogenen Daten
CREATE TABLE Markt (
Name VARCHAR(30),
Flaeche MDSYS.SDO_GEOMETRY
);
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-56
Lesestoff
Erzeugen von Geometry-Instanzen
l Erzeugen neuer Märkte
INSERT INTO Markt
VALUES ('Cola',
MDSYS.SDO_GEOMETRY(2003, -- zweidimensionales Polygon
NULL, NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1), -- Rechteck
MDSYS.SDO_ORDINATE_ARRAY(1,1, 5,7))); -- Eckpunkte (lu,ro)
INSERT INTO Markt
VALUES ('Wein',
MDSYS.SDO_GEOMETRY(2003,
NULL, NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),
MDSYS.SDO_ORDINATE_ARRAY(3,3, 6,3, 6,5, 4,5, 3,3)));
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-57
Lesestoff
Erzeugen von Meta-Daten
l Propagiere Änderungen an die Sicht USER_SDO_GEOM_METADATA
–
–
Notwendig, um einen Spatial-Index aufzubauen
Jede Tabellen-Attribut-Kombination muss separat bekannt gemacht werden
INSERT INTO USER_SDO_GEOM_METADATA
VALUES ('Markt', 'Flaeche',
MDSYS.SDO_DIM_ARRAY(1,1003,1),
MDSYS.SDO_DIM_ELEMENT('X', 0, 20, 0.005), --20x20-Grid
MDSYS.SDO_DIM_ELEMENT('Y', 0, 20, 0.005),
NULL);
-- SRID (reserviert für zukünftige Spatial Releases)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-58
Lesestoff
Erzeugen eines Spatial-Indexes
l Definition mittels der CREATE INDEX Anweisung
CREATE INDEX MarktSpatialIdx
ON Markt(Flaeche)
INDEXTYPE IS MDSYS.SPATIAL_INDEX;
–
Angabe von Parametern möglich
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-59
Lesestoff
Geometry-Funktionen (1)
SDO_GEOM.INTERSECT(geom1
IN MDSYS.SDO_GEOMETRY,
dim1
IN MDSYS.SDO_DIM_ARRAY,
geom2
IN MDSYS.SDO_GEOMETRY,
dim2
IN MDSYS.SDO_DIM_ARRAY
) RETURN MDSYS.SDO_GEOMETRY;
–
–
Liefert den Schnittbereich der beiden Objekte
Weitere Funktionen:
n SDO_GEOM.SDO_UNION
n SDO_GEOM.SDO_DIFFERENCE
n SDO_GEOM.SDO_XOR
SDO_GEOM.AREA(geom1 IN MDSYS.SDO_GEOMETRY,
dim1 IN MDSYS.SDO_DIM_ARRAY
) RETURN NUMBER;
–
Liefert Fläche eines zweidimensionalen Polygons
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-60
Lesestoff
Geometry-Funktionen (2)
SDO_GEOM.RELATE(geom1
dim1
mask
geom2
dim2
) RETURN VARCHAR2;
–
–
–
IN MDSYS.SDO_GEOMETRY,
IN MDSYS.SDO_DIM_ARRAY,
IN VARCHAR2,
IN MDSYS.SDO_GEOMETRY,
IN MDSYS.SDO_DIM_ARRAY
Liefert TRUE, wenn die Objekte gemäss Masken-Parameter in Beziehung stehen
Liefert Beziehung, falls das Schlüsselwort DETERMINE in der Maske auftaucht
Masken-Parameter (logische Disjunktion gebildet mit +)
n TOUCH, EQUAL, INSIDE, CONTAINS, COVERS, COVEREDBY,
ANYINTERACT, OVERLAPBDYDISJOINT, OVERLAPBDYINTERSECT
8-61
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Lesestoff
Geometry-Funktionen (3)
SDO_GEOM.WITHIN_DISTANCE(geom1
dim1
distance
geom2
dim2
) RETURN VARCHAR2;
–
Liefert TRUE, wenn die Objekte innerhalb des Distanzwertes liegen
SDO_GEOM.DISTANCE(geom1
dim1
geom2
dim2
) RETURN NUMBER;
–
IN MDSYS.SDO_GEOMETRY,
IN MDSYS.SDO_DIM_ARRAY,
IN NUMBER,
IN MDSYS.SDO_GEOMETRY,
IN MDSYS.SDO_DIM_ARRAY
IN MDSYS.SDO_GEOMETRY,
IN MDSYS.SDO_DIM_ARRAY,
IN MDSYS.SDO_GEOMETRY,
IN MDSYS.SDO_DIM_ARRAY
Berechnet die (minimale) Distanz zwischen zwei Objekten
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-62
Lesestoff
Beispielanfragen (1)
l Liefere den Durchschnitt zweier Geometrie-Objekte
SELECT SDO_GEOM.SDO_INTERSECTION(a.Flaeche, m.diminfo,
b.Flaeche, m.diminfo)
FROM Markt a, Markt b, USER_SDO_GEOM_METADATA m
WHERE m.table_name = 'MARKT' AND m.column_name = 'FLAECHE' AND
a.Name = 'COLA' AND b.Name = 'WEIN';
l Gib die Beziehung zwischen Geometrie-Objekte aus
SELECT SDO_GEOM.RELATE(a.Flaeche, m.diminfo, 'ANYINTERACT',
b.Flaeche, m.diminfo)
FROM Markt a, Markt b, USER_SDO_GEOM_METADATA m
WHERE m.table_name = 'MARKT' AND m.column_name = 'FLAECHE' AND
a.Name = 'COLA' AND b.Name = 'WEIN';
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-63
Lesestoff
Beispielanfragen (2)
l Berechne die Flächen der Märkte
SELECT a.Name, SDO_GEOM.SDO_AREA(a.Flaeche, m.diminfo)
FROM Markt a, USER_SDO_GEOM_METADATA m
WHERE m.table_name = 'MARKT' AND m.column_name = 'FLAECHE';
l Gib die Distanz zwischen zwei Geometrie-Objekte aus
SELECT a.Name, SDO_GEOM.SDO_DISTANCE(a.Flaeche, m.diminfo,
b.Flaeche, m.diminfo)
FROM Markt a, Markt b, USER_SDO_GEOM_METADATA m
WHERE m.table_name = 'MARKT' AND m.column_name = 'FLAECHE';
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-64
Lesestoff
Informix Geodetic DataBlade
l Unterstützt die Speicherung und Bearbeitung von raum- und
zeitbezogenen Daten
l Stellt Funktionen bereit, um
–
–
–
Geometische Objekte mit Zeitbezug zu erzeugen, ändern und löschen
Räumliche und zeiltliche Beziehungen zwischen derartigen geometischen
Objekten zu abzufragen
...
l Bietet R-Baum als Spatial-Indexstruktur an
C
1
A
D
B
2
E
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-65
Lesestoff
Geometry-Typhierarchie
GeoObject
GeoPoint
GeoString
GeoLineseg
GeoRing
GeoPolygon
GeoEllipses
GeoCircle
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
GeoBox
8-66
Lesestoff
Konstruktoren
GeoLatitude, GeoAltitude = [-90, 90]
GeoAzimuth= [0, 360)
GeoAltRange= (GeoAltitude, GeoAltitude) |GeoAltitude|ANY
GeoTimeRange = (Datetime, Datetime) |Datetime|ANY
GeoCoords(GeoLatitude, GeoAltitude)
GeoPoint(GeoCoords, GeoAltRange, GeoTimeRange)
GeoBox(GeoCoords, GeoCoords, GeoAltRange, GeoTimeRange)
GeoCircle(GeoCoords, GeoDistance, GeoAltRange, GeoTimeRange)
GeoEllipse(GeoCoords, GeoDistance, GeoDistance, GeoAzimuth, GeoAltRange, GeoTimeRange)
GeoLineseg(GeoCoords, GeoCoords, GeoAltRange, GeoTimeRange)
GeoString(GeoCoords, ..., GeoCoords, GeoAltRange, GeoTimeRange)
GeoRing(GeoCoords, ..., GeoCoords, GeoAltRange, GeoTimeRange)
GeoPolygon((GeoCoords, ..., GeoCoords), ..., (GeoCoords, ..., GeoCoords), GeoAltRange, GeoTimeRange)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-67
Lesestoff
Benutzung eines Geometry-Typs
l Definition einer Tabelle mit raumbezogenen Daten
CREATE TABLE Markt (
Name VARCHAR(30),
Flaeche GeoPolygon
);
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-68
Lesestoff
Erzeugen von Geometry-Instanzen
l Erzeugen neuer Märkte
–
mit explizitem oder implizitem Konstruktoraufruf möglich
INSERT INTO Markt
VALUES ('Cola',
'GeoPolygon(((1, 1), (1, 7), (5, 7), (5, 1), (1, 1)), ANY, ANY)');
INSERT INTO Markt
VALUES ('Wein',
'(((3, 3), (6, 3), (6, 5), (4, 5), (3, 3)), ANY, ANY)');
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-69
Lesestoff
Erzeugen eines Geo-Indexes
l Definition mittels der CREATE INDEX Anweisung
CREATE INDEX MarktSpatialIdx
ON Markt(Flaeche GeoObject_ops)
USING RTREE;
–
–
Geo-Index wird als R-Baum angelegt
Operatorklasse GeoObject_ops
n Ermöglicht das Erzeugen und Verwenden eines R-Baum-Indexes
n Index-Unterstützung für die Operatoren Inside, Intersect, Outside
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-70
Lesestoff
Geometry-Funktionen
FUNCTION Intersect(g1
g2
RETURN BOOLEAN;
–
–
–
–
GeoObject,
GeoObject)
Liefert TRUE, wenn die Objekte sich sowohl räumlich als auch zeitlich schneiden
Weitere Funktionen
n Inside
(g1 räumlich enthalten in g2, zeitlich überlappend)
n Within
(g1 räumlich enthalten in g2, zeitlich überlappend)
n Outside
(Räumlicher Durchschnitt ist leer, zeitlich überlappend)
n Beyond
(Räumlicher und/oder zeitlicher Durchschnitt ist leer)
Keine GeoObject-erzeugenden Operatoren: Intersection, Union, Difference
Keine Funktion "Relate", um die Beziehung zwischen Geo-Objekten zu ermitteln
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-71
Lesestoff
Beispielanfragen
l Liefere alle Märkte, die räumlich mit einem Rechteck assoziiert werden
SELECT *
FROM Markt
WHERE IsGeoBox(Flaeche);
l Gib die Namen aller Märkte aus, die sich räumlich (und zeitlich)
schneiden
SELECT a.Name, a.Name
FROM Markt a, Markt b
WHERE Intersect(a.Flaeche, b.Flaeche);
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-72
Lesestoff
Informix Spatial DataBlade
l Eines der ersten DataBlades (wird nicht mehr von Informix angeboten)
–
Ähnliche Spatial DataBlades verfügbar von Drittanbietern wie ESRI Spatial
Database Engine (SDE), Formida Fire Spatial oder MapInfo SpatialWare
l Unterstützt die Speicherung und Bearbeitung von raumbezogenen Daten
l Stellt Funktionen bereit, um
–
–
–
Punkte, Linienzüge, Flächen zu erzeugen, ändern und löschen
Räumliche Beziehungen zwischen derartigen geometischen Objekten zu ermitteln
C
Flächenberechnungen etc. durchzuführen
1
A
l Bietet R-Baum als Spatial-Indexstruktur an
D
2
B
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
E
8-73
Lesestoff
Geometry-Typhierarchie
sp2geometry
sp2pnt
sp2quad
sp2lseg
sp2path
sp2poly
sp2ellp
sp2circ
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
sp2box
8-74
Lesestoff
Benutzung eines Geometry-Typs
l Definition einer Tabelle mit raumbezogenen Daten
CREATE TABLE Markt (
Name VARCHAR(30),
Flaeche sp2poly
);
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-75
Lesestoff
Erzeugen von Geometry-Instanzen
l Erzeugen neuer Märkte
INSERT INTO Markt
VALUES ('Cola',
'(1 1, 1 7, 5 7, 5 1, 1 1)'::sp2poly);
INSERT INTO Markt
VALUES ('Wein',
'(3 3, 6 3, 6 5, 4 5, 3 3)'::sp2poly);
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-76
Lesestoff
Erzeugen eines Spatial-Indexes
l Definition mittels der CREATE INDEX Anweisung
CREATE INDEX MarktSpatialIdx
ON Markt(Flaeche spatial_ops)
USING RTREE;
–
Spatial-Index wird als R-Baum angelegt
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-77
Lesestoff
Geometry-Funktionen (1)
FUNCTION sp2intersection( g1 sp2geometry,
g2 sp2geometry)
RETURNS sp2geometry;
–
–
Liefert den Durchschnitt der beiden Objekte
Weitere Funktionen
n sp2union
n Sp2difference
FUNCTION sp2area(g sp2geometry)
RETURNS DECIMAL;
–
Liefert die Fläche eines geometrischen Objektes
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-78
Lesestoff
Geometry-Funktionen (2)
FUNCTION sp2intersects(g1 sp2geometry,
g2 sp2geometry)
RETURN INTEGER;
–
–
Liefert 1 (TRUE), wenn der Durchschnitt der beiden Objekte nicht leer ist
Weitere Funktionen
n sp2contained
(g2 vollständig in g1 enthalten)
n sp2contains
(g1 vollständig in g2 enthalten)
n sp2equals
(g1 gleich g2)
n sp2overlap
(Durchschnitt und beide Differenzen sind nicht leer)
n sp2intersectIn
(Schneiden sich im Punkt)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-79
Lesestoff
Beispielanfragen (1)
l Liefere den Durchschnitt zweier Geometrie-Objekte
SELECT sp2intersection(a.Flaeche, b.Flaeche)
FROM Markt a, Markt b
WHERE a.name = 'COLA' AND b.name = 'WEIN';
l Gib die Namen aller Märkte aus, die sich schneiden
SELECT a.Name, a.Name
FROM Markt a, Markt b
WHERE sp2intersects(a.Flaeche, b.Flaeche);
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-80
Lesestoff
Beispielanfragen (2)
l Liefere alle Märkte, deren Fläche einen bestimmten Wert überschreitet
SELECT a.Name, sp2area(a.Flaeche)
FROM Markt a
WHERE sp2area(a.Flaeche) > 100;
l Gib die Distanz zwischen zwei Geometrie-Objekten aus
SELECT a.Name, b.Name, sp2distance(a.Flaeche, b.Flaeche)
FROM Markt a, Markt b;
l Liefere den Umfang aller Märkte eines bestimmten Gebietes
SELECT Name, sp2circumference(Flaeche)
FROM Markt
WHERE sp2contained(Flaeche, '(150,10, 200,20)'::sp2box);
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
8-81
Herunterladen