• Keine Ergebnisse gefunden

Objektrelationale Datenbanken

N/A
N/A
Protected

Academic year: 2022

Aktie "Objektrelationale Datenbanken"

Copied!
34
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Objektrelationale Datenbanken

Erweiterung von relationalen

Datenbanksystemen mit OO Features

(2)

Objekte und Datenbanken

• Neue Anwendungen und neue Arten von Daten

– Text, Audio / Video, Landkarten – Hierarchien (Land, Region, Stadt) – Sensordaten, Messreihen

• Komplexe Funktionen

– Graustufenanlayse, FFT, Wegplanung, ...

• Unterschiedliche Arten von Daten und Funktionen sollten in einer Anfrage nutzbar sein:

Wieviele Landkarten zeigen den Weg von M nach PA

• Mächtigeres Modell, Erweiterbare Datenbanken

(3)

Nachteile Relationaler Datenbanken

• Jeder Polyeder besteht aus mindestens vier Flächen

• Jede Fläche hat mindestens drei Kanten

• Jede Kante berührt mindestens drei Eckpunkte

• Frage: Wie rotiert man einen Würfel?

f6 w1

...

w1

f1 w1

fid pid

...

...

...

...

...

p3 p2

f2 f1

k2

p4 p1

f4 f1

k1

PB PA

FlB FlA

kid

Flächen Kanten

1.0 1.0

0.0 p8

...

...

...

...

0.0 0.0

1.0 p2

0.0 0.0

0.0 p1

Z Y

X pid

Punkte

(4)

Nachteile Relationaler Datenbanken

• Struktur eines Polyeders steckt nur implizit in der DB

• Operationen wie „Rotation“ sind schwer zu programmieren.

Man muss die einzelnen Punkte ändern.

• Eine Ausführung solcher Operationen ist sehr ineffezient:

– Join zwischen (mindestens) drei Tabellen – Acht verschiedene Update Operationen

• Lösung:

– Erlaube die Definition komplexer Objekte in der Datenbasis – Speichere die Definition von Operationen in der Datenbasis

(5)

Objektorientierte Datenbanken

• Forschung seit 1984; viele schöne Ergebnisse

• Erste Produkte seit Ende der achtziger Jahre (Versant, GemStone, ObjectStore, O2, Poet)

• ODMG Standard 2.0: Cattell 1997

• Anwendungen: CAD, einige andere Nischen

• Kein großer kommerzieller Erfolg

Probleme: nicht robust genug, skalieren nicht, schlecht bei Anfragen, nur gut bei „Navigation“

• Literatur: Kemper, Moerkotte 1994

(6)

Objektrelationale Datenbanken

• Laguna Beach Report 1990 (Stonebraker et al.)

• Erste Produkte seit ca. 1997

Informix Universal Server, Oracle 8i, IBM UDB

• Versuch, Mächtigkeit von OO Datenbanken mit Robustheit von relationalen Datenbanken zu

kombinieren

• Inkrementeller Ansatz, Einbau von OO Features in bestehende relationale Datenbankprodukte

• Standard: SQL 99 (aktuell), noch nicht alles drin

• Literatur: Chamberlin 96, Using the New DB2

(7)

Objektrelationale Datenbanken

• Large Objects

• Benutzerdefinierte Typen

• Objektidentität, Objektreferenzen

• Mengenwertige Attribute (Kollektionstypen)

• Vererbung

• Benutzerdefinierte Funktionen

• ADTs (Data Blades, Extenders, Cartridges)

Hinweis: Wir verwenden die IBM UDB Konventionen

(8)

Large Objects

• „varchars“ können max. 4096 Bytes groß werden

• Für größere Felder (z.B. Videos) stellt IBM sogenannte Blobs zur Verfügung

• Einstellungen: Komprimierung, TA-Verwaltung

CREATE TABLE personalWebPage(

url varchar(100),

picture blob(100K) NOT LOGGED COMPACT, html clob(20K) NOT LOGGED COMPACT

);

(9)

Arbeiten mit Blobs

• Es gibt wesentliche Einschränkungen

– Keine Indexe

– Keine Vergleichsoperationen: like, <, ...

– Kein „distinct“, „group by“ oder „max“

• Die eigentlichen Daten kann man in einer separaten Datei speichern und bearbeiten. In diesem Fall

wird nur ein Locator in der Datenbank gespeichert

• Mit Locators kann man auch in

Anwendungsprogrammen arbeiten

• Interessant werden Blobs nur mit anderen Features

(10)

Distinct Types

• Einfachste Form eines benutzerdefinierten Typs

• Dient dazu eine „strenge“ Typisierung zu erzielen

• Explizite Casts zum Basistyp und zurück werden aber unterstützt

CREATE DISTINCT TYPE dollar AS DECIMAL(9,2);

CREATE DISTINCT TYPE euro AS DECIMAL(9,2);

CREATE TABLE product(

name varchar(100), USAsales dollar, Esales euro);

(11)

Distinct Types

• Folgende Queries sind zunächst illegal

(mit benutzerdefinierten Funktionen kann man sich aber elegant behelfen)

SELECT *

FROM product

WHERE Esales > USAsales;

SELECT name, sum(Esales + USAsales) FROM product

GROUP BY name;

(12)

Komplexe Typen

• Beliebige Strukturen sind vorstellbar (ähnliche zu „struct“ in C)

• Können in einer Tabelle als Spaltentyp auftreten

CREATE TYPE emp(

name varchar(30), salary euro,

picture blob(100K))

CREATE TYPE manager(

name varchar(30), history clob(100K), salary dollar)

CREATE TABLE project(

leiter manager,

schriftführer emp)

(13)

Anfragen mit komplexen Typen

• Konstruktoren und Zugriffsfunktionen werden implizit vom System erzeugt

INSERT INTO project(leiter, schriftführer)

VALUES( manager(„Lisa“, [], dollar(30000), emp(„Heini“, euro(20000), []));

SELECT *

FROM project p

WHERE p.leiter.name like „%isa%“;

(14)

Row Types

• Komplexer Typ für eine Zeile einer Tabelle

• Witz: Kombination mit „Reference Types“

CREATE ROW TYPE manager(name varchar(100));

CREATE ROW TYPE emp(

name varchar(100), boss REF(manager));

CREATE TABLE mantable;

CREATE TABLE emptable(

PRIMARY KEY name,

SCOPE FOR boss IS mantable);

(15)

Objektidentität, Referenzen

• Nur „top-level“ Tupel (also Instanzen von Row Types) haben eine Identität

• Die Identität ist unabhängig vom Wert des Tupels (anders als Fremdschlüsselkonzept!)

• In der Regel wird die Implementierung von

Referenzen und Objektidentifikatoren vom System implizit durchgeführt.

• Referenzen können einen „scope“ haben (getypt) (Wenn möglich, sollte man das immer machen)

• Verfolgung von Referenzen durch Pfadausdrücke

(16)

Pfadausdrücke

• Nur bei getypte Referenzen kann die

Autorisierung zur Übersetzungszeit durchgeführt werden.

SELECT e.boss->address.city FROM emptable e

WHERE e.boss->name like „%isa%“;

(17)

Mengenwertige Attribute

• Zusätzlicher Konstruktor für Kollektionen

• Wird von IBM noch nicht unterstützt.)

• Oracle 8i unterstützt z.B. „VARRAY“

• (Reines) ODMG unterstützt Mengen, Bags und Listen

CREATE TYPE dept(

name varchar(100), mitarbeiter {emp});

SELECT d.name, (SELECT * FROM emp e

WHERE e.works_in = d.name) FROM deptTable;

(18)

Vererbung

• Ein Row Type kann von einem oder mehreren Row Types abgeleitet werden

• Dabei erbt ein Typ alle Attribute des Obertyps

• Substituierbarkeit bei Referenzen ist gegeben

CREATE ROW TYPE emp(name, salary);

CREATE ROW TYPE manager UNDER emp(bonus);

CREATE TABLE emptable OF emp;

CREATE TABLE mantable OF manager UNDER emptable;

(19)

Bemerkung

• Row Types sind ein Artifact von OR-Systemen.

• (Reine) objektorientierte Modelle sind einfacher:

– Es gibt nur eine Form von Komplexen Typen

– Es können beliebig Instanzen (Objekte) erzeugt werden – Die Menge aller Instanzen eines Types wird Klasse

genannt (Analogon zur Tabelle)

• Wieso geht SQL hier diesen Weg???

(20)

Funktionen

Es gibt drei Arten von Funktionen

• Built-in: z.B. +, <, avg, max, IS NULL, ...

• System-generated:

– Z.B. CAST-Funktionen für Distinct Types

• User-defined:

– Sourced scalar functions

– Externale scalar functions, Methoden – Table functions

(21)

Sourced Functions

• Wird vorwiegend für distinct types verwendet

• Definition beruht auf einer anderen Funktion (built-in, system-generated oder user-defined)

CREATE FUNCTION +(money, money) RETURNS money SOURCE + (DECIMAL(), DECIMAL())

CREATE FUNCTION sum(money) RETURNS money SOURCE sum(DECIMAL())

(22)

Sourced Functions

CREATE DISTINCT TYPE money as DECIMAL(9,2);

CREATE TABLE emp(

name varchar(100), salary money,

bonus money );

SELECT sum(salary + bonus) FROM emp;

(23)

External Scalar Functions

• Sehr nützlich, um etwas komplexere

Berechnungen durchzuführen, für die SQL nicht geeignet ist

• Werden bei IBM DB2 in C, Java, OLE formuliert

• Liefern als Ergebnis einen skalaren Wert; dies kann allerdings auch ein Wert eines UDT sein

• Vom Server ausgeführt für gute Performance

• Viele kleine Besonderheiten zu beachten

• Kann von allen Benutzern derselben DB in Anfragen verwendet werden

(24)

External Scalar Functions

CREATE FUNCTION deltaTage(date, date) RETURNS Integer EXTERNAL NAME „/home/kossmann/deltaTage.o“

LANGUAGE C DETERMINISTIC

FENCED ... <weitere Optionen>

PARAMETER STYLE DB2SQL NO SQL;

Bestimme Aufträge mit mehr als 10 Tagen Lieferverzug

SELECT * FROM order

WHERE deltaTage(o.promisedShipDate, CURRENTDATE) > 10;

(25)

Besonderheiten

• Deterministic oder External Action (z.B. eMail) Dies kann den Optimierer beeinflussen.

• Fenced / Unfenced Läuft die Funktion im selben Adressraum wie das Datenbanksystem

• NULL call Was passiert, wenn ein Nullwert als Parameter übergeben wird

• Typkompatiblität Es gelten die üblichen Regeln;

z.B. smallint -> int

• Scratchpad Bewahre Zustand zwischen zwei

Aufrufen (z.B. seed eines Zufallsgenerators). Hat evtl. Auswirkungen auf parallele Ausführungen!

(26)

Implementierung der C Funktion

SQL_API_FN deltaTage(

char * date1In, /* erstes Datum */

char * date2In, /* zweites Datum */

int * out, /* Ergebnis */

short * nullDate1In, /* ist NULL? */

short * nullDate2In, /* ist NULL? */

short * nullOut, /* Ergebnis = null? */

char * sqlState, /* Fehlercode */

char * message /* Fehlermedlung */) { ...

}

(27)

Methoden

• Besondere skalare Funktionen, die als Parameter eine Referenz eines Row Types bekommen und somit „vererbt“ werden können

• Im Grunde aber etwas „misslich“

CREATE FUNCTION raise (r REF(emp)) RETURNS euro

LANGUAGE SQL RETURN

CASE r->status

WHEN EXEMPT THEN r->salary * 1.2 ELSE r->salary * 1.1

END;

(28)

Table Functions

• Besondere externe Funktionen, deren Ergebnis eine Tabelle ist

• Können somit in der FROM Klausel von SQL Anfragen oder in Subanfragen verwendet werden

• Implementierung: eine C Funktion, die mit jedem Aufruf ein neues Tupel liefert.

• Sehr nützlich, um Daten die außerhalb des DBMS liegen, zu integrieren (z.B. Daten von Webseiten)

• Mechanismen und Deklarationen (fast) genauso wie bei „External Skalar Functions.“

(29)

Table Functions

CREATE FUNCTION searchWeb(varchar(100)) RETURNS TABLE(url varchar(100),

score Integer,

country varchar(50)) EXTERNAL NAME „altavista.o“

...

Funktion, die nach Webpages zu einem bestimmten Suchbegriff sucht. (Z.B. durch Aufruf einer

Suchmaschine wie AltaVista, Yahoo oder so.)

(30)

Table Functions

Suche alle deutschen Webpages zum Thema „Köln“

SELECT w.url,

FROM TABLE(searchWeb(„Köln“)) w WHERE w.country = „Germany“

(31)

Table Functions

Suche Webpages zum Wohnort von Studenten?

Geht das so???

SELECT s.name, w.url,

FROM Student s, TABLE(searchWeb(s.city)) w;

SELECT s.name, (SELECT w.url

FROM TABLE(searchWeb(s.city)) w) FROM Student s;

(32)

Stored Procedures

• Stored Procedures sind ein Mechanismus, um

Anwendungsprogramme auf dem Datenbankserver zu registrieren.

• Idee: Man spart sich Overhead, wenn das

Anwendungsprogramm viele kleine Aufrufe an das Datenbanksystem hat und wenig Eingaben von

einem Benutzer erwartet.

• VORSICHT: Das ist kein besonderes OR Feature.

Hier geht es „nur“ um Performance.

(33)

Data Blades, Extenders, ...

• Schnittstelle im Datenbankkern zur „first-class“

Unterstützung neuer Datentypen und besonderer Zugriffsfunktionen

• Bild: Ein Datenbanksystem ist ein Bündel von

Steckplätzen für Data Blades. „Tabelle“ ist quasi nur ein Beispiel eines Data Blades.

• Beispiele: Landkarten, Zeitreihen, ...

• Wichtig: es können auch innerhalb des Data Blades auch Indexe bereitgestellt werden

• Business: Data Blades auch von Drittanbietern

(34)

Fazit

• Trend: Die Datenbankhersteller bauen OO Features in ihre Systeme ein.

• Es gibt noch keine hinreichenden Standards

– SQL 99 hat noch Lücken – SQL 3 ist noch nicht fertig – ODMG ist quasi tot

• Selbst wenn es einen Standard geben wird, wird es Jahre dauern, bis die Systeme ihn

implementiert haben. Es ist auch fraglich, ob sich alle daran halten werden: IBM und Oracle gehen bereits eigene Wege. Microsoft macht gar nichts.

Referenzen

ÄHNLICHE DOKUMENTE

CREATE OR REPLACE TYPE PruefungsListenTyp AS TABLE OF PruefungenTyp CREATE OR REPLACE TYPE StudentenTyp AS OBJECT (.

Hypothese der Studie ist, dass die arthroskopische Mason-Allen- Naht in der single-row-Technik ähnliche Kontaktdrücke erzeugt wie eine Naht in der double-row-Technik aus

Die Hypothese, dass die single-row-Technik, kombiniert mit geflochtenen, nicht resorbierbaren Polyethylenfäden, eine der double-row-Technik mit Verwendung von

Drei Wochen nach single-row-Rekonstruktion wurde eine positive Reaktion für Kollagen Typ I im Knochen sichtbar.. Ansonsten trat eine positive Kollagen-I-Reaktion im

Wenn ein Datenbank-Entwerfer diese Entscheidung trifft, dann ist sie natürlich subjektiv gefärbt, deshalb wurde in [Klettke, Meyer 2000] eine Methode ent- wickelt, mit der

For testing the validity of the extended MINDO/3- FORCES method, in Table 1 the calculated heats of formations, dipole moments and ionization energies of ten molecules containing S

9 Severe attack of French beans by the fungus Sclerotinia, particularly on the lower ground facing part of the stems (right side) and beans. For an effective control of the disease

On the right-hand side, first the row player commits to her probability vector and only then the column player chooses hers, possibly depending on the row player’s choice.. So,