Objektorientierte und objektrelationale Datenbanken

Werbung
Objektorientierte
und
objektrelationale
Datenbanken
Beschreibung
komplex strukturierter Objekte
R. Oßwald
FHTW Berlin
Programmierverfahren
(Paradigmen)
vor 1960:
maschinenorientierte Programmiersprachen
(Maschinencode, Assembler)
1960:
höhere algorithmische Programmiersprachen
(Algol60, Fortran, Cobol, PL/1, Basic, Pascal)
1970:
strukturierte Programmierung
(Zusammenfassung von zusammengehörenden
Befehlsgruppen in strukturellen Einheiten:
Alternativen, Zyklen; Prozeduren, Funktionen)
1990:
objektorientierte Programmierung
(Klassenkonzept)
objektorientierte Programmierung
wesentliche Konzepte bereits 1967 in Simula festgelegt,
aber keine allgemein anerkannte Einführung
• konsequente Weiterführung der damals noch
umstrittenen strukturierten Programmierung
• ohne den Vorteil einer besonders einfachen CompilerImplementierung (vgl. Pascal !!)
¾ Klassen als nutzereigene Datentypen
¾ Objekte als Ausprägungen einer Klasse
¾ Datenkapselung in Klassen bzw. Objekten
¾ Vererbung als Technologie zum Aufbau von Klassenbzw. Objekt-Hierarchien
¾ Polymorphie zur Darstellung von Objekten als
dynamische Ausprägungen einer Klasse
(wird ermöglicht durch das Konzept des späten Bindens
von Routinen)
Datenstrukturierung
Datentyp: ist definiert durch seinen Wertebereich
und die darauf möglichen Operationen
• stellt ein Schema dar, nach dem Variable vereinbart und
erzeugt werden können
• z.B.:
integer
Wertebereich:
Operationen:
(Standardtyp in Pascal)
-32768 ... 32767
+ - * / mod div
• Probleme:
komplexe Datenstrukturen und
Verwendung nicht vorgesehener Operationen
• Forderung:
nutzerdefinierte Datentypen und
dazu gehörende problembezogene Operationen
(einfachstes Beispiel: komplexe Zahlen!)
abstrakter Datentyp (ADT):
ist ein Schema zur Realisierung eines Datentyps,
dessen Datenstruktur sowie
ausführbare Operationen festgelegt werden,
dessen interne Datenstruktur aber verborgen
(gekapselt) wird.
Beispiel: Stapel (stack)
- verwaltet Elemente eines gegebenen Datentyps nach
dem LIFO-Prinzip
-
zugehörige Operationen sind:
•
•
•
•
•
initial (Name)
push (Element)
pop ()
empty ()
top ()
Erzeugen eines Stapels
Einfügen eines neuen/obersten Elements
Entfernen des obersten Elements
Abfragen, ob der Stapel leer ist
Abfragen (Entnehmen) des obersten
Elements
Schnittstelle
Typname,
Beschreibung der Operationen
Implementierung
Algorithmen zur Realisierung der
Operationen
(einschl. Operation zum Erzeugen
von Variablen zum ADT)
Datenkapselung
vollständige Datenkapselung:
Die Daten eines Objekts werden geheim gehalten
(verborgen, gekapselt).
Die Daten sind daher nicht direkt aus der Kapsel
exportierbar, sondern können nur über vordefinierte
Operationen abgefragt werden.
Datenkapseln sind dort vorteilhaft einsetzbar, wo das
Manipulieren einer komplexen Datenstruktur im
Mittelpunkt steht.
Beispiel: Verwaltung eines Datenbestands
Schnittstelle
Beschreibung der Operationen
Implementierung
gekapselte Datenstruktur
(mit Initialisierung)
Algorithmen zur Realisierung der
Operationen
Klassen
logische Beschreibung:
Eine Klasse ist ein Schema zum Beschreiben von
Objekten ähnlichen Verhaltens.
Zu einer Klasse können beliebig viele Objekte
(Instanzen, Ausprägungen) erzeugt werden.
programmtechnische Beschreibung:
Eine Klasse ist ein nutzerdefinierter Datentyp, der
Daten und Operationen zusammenfaßt.
(siehe ADT und Datenkapselung!)
Objekte
Objekte sind die Laufzeitrepräsentationen einer Klasse,
sie sind ihre konkrete Abbildung im Speicher.
Klassen und Objekte
Eine Klasse ist die rein statische Beschreibung der
Gesamtheit aller möglichen Objekte.
Eine Klasse ist das Speichermuster ihrer Objekte.
Vererbung (inheritance)
Klassen können Hierarchien bilden, indem Oberklassen
(Elternklassen) Instanzvariablen und/oder Methoden an
Unterklassen (Kindklassen) vererben.
Die Vererbung entspricht dem Prinzip der Generalisierung:
• Die Oberklasse enthält und vererbt die allgemeinen
Eigenschaften, während in der Unterklasse spezielle
Angaben hinzukommen können.
• Dabei können in der Unterklasse auch ererbte
Eigenschaften modifiziert (überladen) werden
(virtuelle Methoden).
Oberklasse
Vererbung
Klasse
Nachricht
als Schnittstelle
erklärte
Methoden
und
Variable
ererbte Eigenschaften
(Variable und Methoden)
individuelle Eigenschaften
(Instanzvariable und
Methoden)
Vererbung
Nachricht
Dynamisches Binden
auch als spätes Binden bezeichnet
Für eine Nachricht an ein Objekt wird erst zur Laufzeit
im Objekt eine konkrete Methode ausgewählt.
Polymorphie
Gleiche Botschaften können, an verschiedene Objekte
gesendet, unterschiedliche Reaktionen bewirken.
Voraussetzungen:
• Methoden gleichen Namens für unterschiedliche
Aufgaben in unterschiedlichen Objekten
(Definition virtueller Methoden)
• spätes Binden
(vergleiche: "+"-Zeichen bei integer bzw. string)
Multiple Vererbung
auch als Mehrfachvererbung bezeichnet
Mehrfachvererbung bedeutet, daß eine Objektklasse
gleichzeitig die Eigenschaften von mehreren Oberklassen
erben kann.
DBMS-Klassifikationsmatrix
ad hocAbfragen
a/e
a/k
nur
geplante
Abfragen
g/e
g/k
einfache
Daten
komplexe
Daten
Quadrant "g/e":
• Standard-Textverarbeitung
(MS-Word, WorPerfect, StarWriter, vi, ...)
• einzige Abfrage:
hole Datei
• einzige Aktualisierung:
schreibe Datei
• Nutzung des Dateisystems im Betriebssystem
Quadrant "a/e":
• relationale Datenbanken
• Sprache: SQL-2
Quadrant "g/k":
• Anwendungen zum grafischen Layout
(MF: offene Raumplanung, Chip: Leiterbahnen, ...)
• persistente Programmiersprache; OODBMS
Quadrant "a/k":
• geografische und Bild-DB, techn. Dokumentationen
• spezif. Datentypen, nutzerdefinierte Funktionen
• SQL-3, C++, spezifische Anwendungssysteme
vereinfachte
Sicht:
realistische
Sicht:
ad hocAbfragen
RDBMS
ORDBMS
nur
geplante
Abfragen
DateiSystem
OODBMS
einfache
Daten
komplexe
Daten
ad hocAbfragen
RDBMS
ORDBMS
nur
geplante
Abfragen
DateiSystem
OODBMS
einfache
Daten
komplexe
Daten
einige existierende Systeme:
ORDBMS
OODBMS
DB2/6000 C/S
Illustra =>Informix
Omniscience
Gemstone
Itasca
Jasmine
O2
ObjectStore
Objectivity/DB
Ontos
POET
Open ODB => Odapter
ODB II
UniSQL
Versant
RDBMS-Grenzen:
• keine komplex strukturierten Daten
• Probleme beim Verwalten neuartiger Strukturen
(Codefragmente, HTML-Seiten, audio/video-Dateien, ...)
• Nichtübereinstimmung mit Prinzipien der
oo-Programmierung:
Objekte über eine Vielzahl von
Tabellen verteilt; aufwendige (teure) Verbundoperationen!
OODBMS-Nachteile:
• kein Sichtenkonzept
• Sperrverfahren bei Transaktionen noch unzureichend
• genauer Ablauf von Transaktionen nicht immer genau
vorhersehbar (information hiding: "kleine" Berechnung u.U.
mit lawinenartigen Folgen!)
• primitive Zugriffsrechte (oft nur Freund-Feind-Regelung;
nur selten Abstufungen wie mit grant/revoke)
• bei einigen Systemen: Manipulation im ungeschützten
Hauptspeicher (direkte Manipulation möglich: am OODBMS
vorbei!)
• navigierendes Arbeiten wie in Netzwerk-Datenbanken
• keine eingeführten Standards (in Entwicklung bzw. gerade
erst vorgelegt [2000]: ODMG 2.0, ODL, OQL, SQL-3)
OID == Objektidentifikator
1.) identifiziert jedes Objekt systemweit eindeutig,
2.) wird automatisch, zwingend vom System vergeben,
3.) semantisch unabhängig von Objekteigenschaften,
4.) nicht änderbar,
5.) bleibt über gesamte Systemlebensdauer erhalten,
6.) ermöglicht Duplikate
Multimedia = objektorientiert ???
Multimediale Schauspieleragentur:
• zusammengesetzte Objekte:
Film, Agentur
• einfache Objekte:
Beschreibung, Szene, Sprache
• Methoden:
start, stop, play, pause, display
• Ereignisse (Events)
Ende
Object Database Standard:
• z.Z. [2000] noch erhebliche Unterschiede
(unterstützte Programmiersprachen, Schnittstellen, ...)
• Herstellerabhängigkeit; fehlende Portabilität
• wünschenswert: durchgängige oo Technologie
(oo-Betriebssystem, OODBMS, oo Programmiersprachen)
• Herstellergruppe entwickelt gemeinsamen Standard:
"Object [Data] Management Group"
(Gemstone, Itasca, O2, ObjectStore, Objectivity, POET,
UniSQL und Versant)
• Ziel: Object Request Broker (ORB)
(Interface zwischen Hard- und Softwarekomponenten
verschiedener Hersteller: gemeinsame Schnittstellen!)
• zur Common Object Request Broker Architecture
(CORBA) erweitert
(Dienste- und Schnittstellen-Architektur heterogener,
interoperabler Systeme)
• Ergebnisse:
­
­
­
­
­
ODMG 2.0-Dokument
[1999]
ein Objektmodell,
Objekt-Definitionssprachen
(ODL = Object Definition Language,
OIF = Interface Definition Language),
eine Objekt-Anfragesprache OQL,
Anbindungen an oo Programmiersprachen
(C++, Java, Smalltalk)
Einbindung des Modells in eine ORB-Umgebung
• viele Gemeinsamkeiten zwischen OQL und SQL-3
(Dominanz von SQL am Markt zu erwarten: IBM, Oracle!)
Grundzüge des ODMG-Modells:
(1) Zentrale Modellierungskonstrukte sind:
das Objekt (mit Identität) sowie
das Literal (ohne Identität).
–
–
(2) Objekte und Literale können anhand von Typen
kategorisiert werden, wobei alle Elemente eines Typs
gleiche (Zustands-) Struktur und gleiches Verhalten
besitzen.
(3) Der Zustand eines Objekts wird definiert durch Werte
für eine Menge von Eigenschaften.
Diese Eigenschaften können entweder Attribute des
Objekts oder Beziehungen des Objekts zu anderen
Objekten sein.
(4) Das Verhalten von Objekten wird festgelegt durch
eine Menge von Operationen, welche auf einem
Objekt des betreffenden Typs ausgeführt werden
können.
Operationen müssen eine Liste von Input- und
Output-Parametern besitzen, jeder davon mit
spezifischem Typ.
Eine Operation kann ferner ein Ergebnis mit
spezifischem Typ liefern.
­
­
(5) Ein Typ besitzt grundsätzlich eine externe
Spezifikation und eine (oder auch mehrere)
Implementierungen. Die Spezifikation beschreibt die
nach außen sichtbaren Charakteristika:
Operationen, welche auf den Instanzen des Typs
ausgeführt werden können,
Eigenschaften bzw. Attribute, auf deren Werte
zugegriffen werden kann,
Ausnahmen bzw. Fehlermeldungen oder Ereignisse
(events), die von Operationen ausgelöst werden
können.
­
­
­
(6) Eine Interface-Definition spezifiziert das abstrakte
Verhalten eines Objekttyps.
(7) Eine Literal-Definition legt nur die Zustandsbeschreibung fest.
(8) Eine Klassen-Definition ist eine Kombination aus
Verhaltens- und Zustandsbeschreibung.
(9) Supertypen sind Objekttypen, die eine
Generalisierung (IS_A_Beziehung) erlauben.
(10) Ein (wahlweise benannter) Extent (oder Extension) ist
die Menge aller Ausprägungen eines Typs.
(11) Optional können Attribute eines Typs als Mitglieder
eines Schlüssels (Key) ausgezeichnet werden.
weiterführende Literatur:
Ahrens, K.; Fischer, J.:
Objektorientierte Programmierung
Berlin, München: Verlag Technik, 1992 (ISBN 3-341-01062-9)
Eisele, R.:
Neues von SQL: SQL GOES Object-Oriented
Datenbank-Fokus 2/95, 50-54
IT Verlag für innovative Technologien
Geppert, A.:
Objektorientierte Datenbanksysteme - Ein Praktikum
Heidelberg: dpunkt Verlag, 1997 (ISBN 3-920993-62-4)
Grotehen, Th.; Dittrich, K.:
Objektorientierte Datenbanken auf dem Weg ins Establishment
Datenbank-Fokus 4/95, 48-55
IT Verlag für innovative Technologien
Heuer, A.:
Objektorientierte Datenbanken: Konzepte, Modelle, Systeme
Bonn u.a.: Addison-Wesley, 1992
Meier, A.; Wüst, Th.:
Objektorientierte und objektrelationale Datenbanken (Ein Kompaß für die
Praxis)
Heidelberg: dpunkt Verlag, 2000 (ISBN 3-920993)
Stahlknecht, P.; Hasenkamp, U.:
Einführung in die Wirtschaftsinformatik
Berlin u.a.: Springer, 1999
(ISBN 3-540-65764-9)
Stonebraker, M.:
Objektorientierte Datenbanken: die nächste große Welle
München, Wien: Hanser, 1999
(ISBN 3-446-19334-0)
Vossen, G.:
Datenbankmodelle, Datenbanksprachen und Datenbankmanagementsysteme
München, Wien: R.Oldenbourg, 1999
(ISBN 3-486-24544-9)
Standard ANSI/ISO/IEC 9075-1 ... 9075-5, 1999
Information Technology - Database Languages - SGL, Part 1 ... Part 5
http://www.techstreet.com/features/ISO_IEC_9075.html (15.09.2000)
Herunterladen