Objektorientierte Datenbanken

27
Objektorientierte Objektorientierte Datenbanken Datenbanken Prof. Dr. Stefan Böttcher Fachbereich 17 - Informatik Universität Paderborn

description

Objektorientierte Datenbanken. Prof. Dr. Stefan Böttcher Fachbereich 17 - Informatik Universität Paderborn. Einordnung von OODB. Trend zum Internet => HTML + CGI + Programmiersprache => HTML/XML + Java + Datenbank - PowerPoint PPT Presentation

Transcript of Objektorientierte Datenbanken

Page 1: Objektorientierte Datenbanken

Objektorientierte Objektorientierte DatenbankenDatenbanken

Prof. Dr. Stefan BöttcherFachbereich 17 - Informatik

Universität Paderborn

Page 2: Objektorientierte Datenbanken

Einordnung von OODBEinordnung von OODB

• Trend zum Internet Trend zum Internet => HTML + CGI + Programmiersprache=> HTML + CGI + Programmiersprache=> HTML/XML + Java + Datenbank => HTML/XML + Java + Datenbank

• Trend zu Multi-Tier-Architekturen Trend zu Multi-Tier-Architekturen => Middle-Ware (Java/Corba) + => Middle-Ware (Java/Corba) + Frontend + Datenbank (Backend) Frontend + Datenbank (Backend)

• Trend zur OO-ModellierungTrend zur OO-Modellierung=> UML -> Java/C++ + Datenbank=> UML -> Java/C++ + Datenbank

Page 3: Objektorientierte Datenbanken

2-Tier-Architektur mit 2-Tier-Architektur mit Common Gateway Interface Common Gateway Interface (CGI)(CGI)

CGI-Programm

BrowserProdukt-

datenbankHTML-

Seite

+ minimale Anforderung an den Client + Server: CGI-Programm in beliebiger Sprache+ Robust - Session-lose Kopplung: keine zwischenzeitliche Interaktion - hohe Serverlast- Sicherheitsrisiken

Client Server

ruft

generierteSeite

Eingabe

Page 4: Objektorientierte Datenbanken

3-Tier-Architektur (mit Java und 3-Tier-Architektur (mit Java und DB)DB)

BrowserApplet

Produkt-datenbank

HTML-Seite

+/- geringe Anforderung an den Client +/- 2 Server: Java-Anwendung (portabel) und DB-Zugriff + Robust + Session-Konzept bei Kopplung: zwischenzeitliche Interaktion + geringere Serverlast als bei CGI Anwendungslast zwischen Client und Application-Server verteilbar + weniger Sicherheitsrisiken (durch Sandbox)

Client Application-Server DB-Server

RMI

Eingabe

Business-Logik (Java)

DB-Zugr.Programm

RMI

Page 5: Objektorientierte Datenbanken

Ziele von Datenbanken Ziele von Datenbanken

• Daten gegen Verlust sichern (Persistenz)Daten gegen Verlust sichern (Persistenz)

• Atomizität von TransaktionenAtomizität von Transaktionen

• Isolation von TransaktionenIsolation von Transaktionen

• Konsistenzerhaltung persistenter DatenKonsistenzerhaltung persistenter Daten

• Effiziente AnfragebearbeitungEffiziente Anfragebearbeitung

• Benutzer-nahe ModellierungBenutzer-nahe Modellierung

Page 6: Objektorientierte Datenbanken

Warum objektorientiert? Warum objektorientiert?

Software-Engineering verlangt: Software-Engineering verlangt:

• Wartbarkeit / Modularität (von Software)Wartbarkeit / Modularität (von Software)

• Anpaßbarkeit Anpaßbarkeit

• Erweiterbarkeit Erweiterbarkeit

• WiederverwendbarkeitWiederverwendbarkeit

OO Analyse -> OO Design -> OO Programm OO Analyse -> OO Design -> OO Programm

Page 7: Objektorientierte Datenbanken

Zusätzliche Eigenschaften Zusätzliche Eigenschaften objekt-orientierter objekt-orientierter DatenbankenDatenbanken• Typkonstruktoren und komplexe Objekte,Typkonstruktoren und komplexe Objekte,

• Klassen, Methoden und Kapselung, Klassen, Methoden und Kapselung,

• Vererbung, Redefinition und späte Bindung,Vererbung, Redefinition und späte Bindung,

• Orthogonale Persistenz Orthogonale Persistenz

• Objekt-Identität Objekt-Identität

Page 8: Objektorientierte Datenbanken

ODMG-Datenmodell ODMG-Datenmodell (Beispiel)(Beispiel)

Bestellung

Verk.bnrTeil

Bez.tnr

Kunde

Adr.knr

Page 9: Objektorientierte Datenbanken

ODMG-Datenmodell ODMG-Datenmodell (Beispiel)(Beispiel)

class Bestellungclass Bestellung(extent Bestellungen)(extent Bestellungen){ attribute int bnr ; { attribute int bnr ; attribute string verkäufer ; attribute string verkäufer ; relationship Teil teil inverse Teil::best ; relationship Teil teil inverse Teil::best ; relationship Kunde ku inverse Kunde::best ; relationship Kunde ku inverse Kunde::best ; ... ...}}

Page 10: Objektorientierte Datenbanken

ODMG-Datenmodell ODMG-Datenmodell (Beispiel)(Beispiel)

class Kundeclass Kunde(extent Kunden)(extent Kunden){ attribute int knr ; { attribute int knr ; attribute struct Adresse (int plz, sring ort, attribute struct Adresse (int plz, sring ort, string str, int hausnr) adresse ; string str, int hausnr) adresse ; relationship list<Bestellung> best relationship list<Bestellung> best inverse Bestellung::ku ; inverse Bestellung::ku ; ... ...}}

Page 11: Objektorientierte Datenbanken

ODMG-Datenmodell ODMG-Datenmodell (Beispiel)(Beispiel)

class Teilclass Teil(extent Teile)(extent Teile){ attribute int tnr ; { attribute int tnr ; attribute string bezeichnung ; attribute string bezeichnung ; relationship set<Bestellung> best relationship set<Bestellung> best inverse Bestellung::teil ; inverse Bestellung::teil ; ... ...}}

Page 12: Objektorientierte Datenbanken

ODMG-Datenmodell ODMG-Datenmodell TypkonstruktorenTypkonstruktoren

• Basistypen: int nr; string bezeichnung; ...Basistypen: int nr; string bezeichnung; ...

• Tupelkonstruktor: struct(int plz, string ort, ...)Tupelkonstruktor: struct(int plz, string ort, ...)

• Objektkonstruktor: Teil(int nr, string bez)Objektkonstruktor: Teil(int nr, string bez)

• Kollektionen:Kollektionen: Array<Kunde> Array<Kunde> kunden; kunden; List<Bestellung> List<Bestellung> best; best; Bag<Teil> Bag<Teil> teile; teile; Set<Bestellung> Set<Bestellung> best; best;

Page 13: Objektorientierte Datenbanken

ODMG-Datenmodell: ODMG-Datenmodell: VererbungVererbung

class Eilbestellung extends Bestellungclass Eilbestellung extends Bestellung( extent Eilbestellungen )( extent Eilbestellungen ){{ attribute int attribute int priorität ; priorität ; attribute Date attribute Date deadline ; deadline ; ... ...}}

Erbt Attribute und Methoden von BestellungRedefinition von Methoden möglich

Page 14: Objektorientierte Datenbanken

Persistenzkonzepte (1)Persistenzkonzepte (1)

Ortogonale PersistenzOrtogonale PersistenzTyp des Objektes ist unabhängig von Typ des Objektes ist unabhängig von seiner Lebenszeit seiner Lebenszeit => persistente und transiente Objekte gleich=> persistente und transiente Objekte gleich

(nicht: erben von einer Klasse PersistentObjekt)(nicht: erben von einer Klasse PersistentObjekt)

Persistenz-unabhängiger Code: Persistenz-unabhängiger Code: gleicher Code für persistente und transiente gleicher Code für persistente und transiente Bestellung => nur eine Klasse BestellungBestellung => nur eine Klasse Bestellung

Page 15: Objektorientierte Datenbanken

Persistenzkonzepte (2)Persistenzkonzepte (2)

Persistenz durch explizites binden in die DB Persistenz durch explizites binden in die DB

db.bind( bestellung33 , hp5l ) ; db.bind( bestellung33 , hp5l ) ; Objekt-Ref. , globaler Name Objekt-Ref. , globaler Name

Persistenz durch Erreichbarkeit: Persistenz durch Erreichbarkeit:

bestellung33.teil.bezeichnung ;bestellung33.teil.bezeichnung ;

ist auch persistent in DBist auch persistent in DB

Page 16: Objektorientierte Datenbanken

Transaktionen Transaktionen

Transaction-Objekte - Factory-Idee

...Transaction txn ; try{ txn.begin() ; ... ; db.bind(...) ; ... db.lookup(...) ; ... ; db.delete( ... ) ; } catch( ODMGException e) { txn.abort() ; }txn.commit() ; ...

Page 17: Objektorientierte Datenbanken

Transaktionen Transaktionen (Sperrkonflikte)(Sperrkonflikte)

read write upgrade

read o.K. - o.K.

write - - -

upgrade o.K. - -

upgrade-Sperre : jetzt read, später writeVermeidung von Deadlocks

Sperrdauer bis Transaktionsende

Page 18: Objektorientierte Datenbanken

Anfragesprache OQLAnfragesprache OQL

Welches Teil hat Kunde nr 7 bestellt ? Welches Teil hat Kunde nr 7 bestellt ? select b.teil.bezeichnung select b.teil.bezeichnung from Bestellungen b from Bestellungen b where where b.ku.knr = 7b.ku.knr = 7

Wo wohnt der Kunde, der Teil 33 bestellt hat ?Wo wohnt der Kunde, der Teil 33 bestellt hat ?select struct (plz: ad.plz , ort: ad.ort)select struct (plz: ad.plz , ort: ad.ort)from Bestellungen bfrom Bestellungen bwhere where b.teil.tnr = 33 and b.teil.tnr = 33 and

b.ku.adresse = ad b.ku.adresse = ad

Joins in kommerziellen OODBMS nicht unterstütztJoins in kommerziellen OODBMS nicht unterstützt

Page 19: Objektorientierte Datenbanken

Sprach-Bindings Sprach-Bindings (z.B. Java-Binding, C++-(z.B. Java-Binding, C++-Binding)Binding)

Idee: Nur 1 Sprache für ProgrammiererIdee: Nur 1 Sprache für Programmierer

C++ - Binding: z.B. Templates für List, Set, ...C++ - Binding: z.B. Templates für List, Set, ...

Java - Binding: Java - Binding: erweitert java.util.List und java.util.seterweitert java.util.List und java.util.setrelationships, Schlüssel, Extents werden relationships, Schlüssel, Extents werden nicht vom ODMG-Java-Bindung unterstützt,nicht vom ODMG-Java-Bindung unterstützt,

aber: z.B. Poet-JavaODMG bietet Extents anaber: z.B. Poet-JavaODMG bietet Extents an

Page 20: Objektorientierte Datenbanken

Effizienz von relationalen Effizienz von relationalen im Vergleich zu OO-im Vergleich zu OO-DatenbankenDatenbanken

Vorteile von OODBVorteile von OODB+ Pfadausdrücke in Queries+ Pfadausdrücke in Queries+ gut für stark strukturierte Daten+ gut für stark strukturierte Daten+ keine Modellierungsbruch -> Effizienz+ keine Modellierungsbruch -> Effizienz

Vorteil von RDBMSVorteil von RDBMS+ große Mengen exakt gleichartiger, + große Mengen exakt gleichartiger, nicht unterstrukturierter Daten nicht unterstrukturierter Daten -> Standard-Anfrageoptimierung -> Standard-Anfrageoptimierung

Page 21: Objektorientierte Datenbanken

Kompilierungskonzepte Kompilierungskonzepte (Java)(Java)

Precompiler Precompiler Options-Datei sagt, welche Klassen des Options-Datei sagt, welche Klassen des Java-Programms Persistenz-fähig sindJava-Programms Persistenz-fähig sind

(z.B. Poet)(z.B. Poet)

Post-CompilerPost-CompilerOptions-Datei sagt, welche Klassen des Options-Datei sagt, welche Klassen des Java-Programms Persistenz-fähig sindJava-Programms Persistenz-fähig sind

(z.B. Versant)(z.B. Versant)

Page 22: Objektorientierte Datenbanken

SystemeSysteme

Poet und VersantPoet und Versant+ nahe am ODMG-Standard + nahe am ODMG-Standard + High-level DB-Operationen+ High-level DB-Operationen+/- Plattenzugriff auf Objekt-Level+/- Plattenzugriff auf Objekt-Level

ObjektStoreObjektStore+/- etwas weiter entfernt vom Standard+/- etwas weiter entfernt vom Standard-/+ Plattenzugriffe auf Page-Level-/+ Plattenzugriffe auf Page-Level

O2O2+ erfüllt voll ODMG-Standard+ erfüllt voll ODMG-Standard- nicht mehr am Markt- nicht mehr am Markt

Page 23: Objektorientierte Datenbanken

Zusammenfassung OODBZusammenfassung OODB• passen zu Internet/Middleware/OOPpassen zu Internet/Middleware/OOP

• verkürzen Entwicklungszeit / kein Modellbruchverkürzen Entwicklungszeit / kein Modellbruch

• sind mächtiger als relationale DBsind mächtiger als relationale DB

• sind meistens effizienter als relationale DBsind meistens effizienter als relationale DB

• sind standardisiert, Produkte sind verfügbarsind standardisiert, Produkte sind verfügbar

• geringerer Marktanteil als relationale DB,geringerer Marktanteil als relationale DB,aber steigende Tendenzaber steigende Tendenz

Page 24: Objektorientierte Datenbanken

Kompilierungskonzepte Kompilierungskonzepte am Beispiel von Poet am Beispiel von Poet (Java)(Java)

Options-Datei ( ptjavac.opt in Version 5.1 bzw. ptj.opt in 6.1) sagt, welche Klassen des Java-Programms Persistenz-fähig sind

[schemata\my_dict1] ; so heisst das Dictionary (=Schema) oneFile = false

[databases\my_base1] ; so heisst die DatenbankoneFile = false

[classes\Liefert] ; daraus wird Dictionary-Info generiertpersistent = true ; diese Klasse ist persistent

Page 25: Objektorientierte Datenbanken

Kompilierungskonzepte Kompilierungskonzepte am Beispiel von Poet am Beispiel von Poet (Java)(Java)

Precompiler (Version 5.1) Übersetzen von Java-Programmen mit Zugriff auf die Datenbank > ptjavac -classpath '%CLASSPATH%' *.java

Post-Compiler (Version 6.1) > javac *.java - compilieren mit gewöhnlichen Java-Compiler > ptj -enhance -inplace -create

Programme starten mit > java Bind poet://LOCAL/my_base1 obj1 > java Lookup poet://LOCAL/my_base1 obj1 > java Delete poet://LOCAL/my_base1 obj1

Page 26: Objektorientierte Datenbanken

Beispielklasse: LiefertBeispielklasse: Liefert

class Liefert{ String lieferant, teil ; int preis, lieferzeit ; java.util.Date uhrzeit ;

public Liefert( String l, String t, int p, int z ) { lieferant=l ; teil=t ; preis=p ; lieferzeit=z ; } public String toString() { return lieferant + " " + teil + " " + preis + " " + lieferzeit + " um " + uhrzeit ; }}

Page 27: Objektorientierte Datenbanken

Uni-BeispielUni-Beispiel

Angestellter

namepnr

Professor

Vorlesung

namevnr

Assistent

leiter

chef

vorl.

assis*

*