Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Objektorientierte Datenbanken Prof. Dr. Stefan Böttcher Fachbereich 17 - Informatik Universität Paderborn."—  Präsentation transkript:

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

2 Einordnung von OODB Trend zum Internet => HTML + CGI + Programmiersprache => HTML/XML + Java + DatenbankTrend zum Internet => HTML + CGI + Programmiersprache => HTML/XML + Java + Datenbank Trend zu Multi-Tier-Architekturen => Middle-Ware (Java/Corba) + Frontend + Datenbank (Backend)Trend zu Multi-Tier-Architekturen => Middle-Ware (Java/Corba) + Frontend + Datenbank (Backend) Trend zur OO-Modellierung => UML -> Java/C++ + DatenbankTrend zur OO-Modellierung => UML -> Java/C++ + Datenbank

3 2-Tier-Architektur mit Common Gateway Interface (CGI) CGI- Programm Browser Produkt- datenbank HTML- 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 generierte Seite Eingabe

4 3-Tier-Architektur (mit Java und DB) Browser Applet 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

5 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

6 Warum objektorientiert? Software-Engineering verlangt: Wartbarkeit / Modularität (von Software)Wartbarkeit / Modularität (von Software) AnpaßbarkeitAnpaßbarkeit ErweiterbarkeitErweiterbarkeit WiederverwendbarkeitWiederverwendbarkeit OO Analyse -> OO Design -> OO Programm

7 Zusätzliche Eigenschaften objekt-orientierter Datenbanken 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 PersistenzOrthogonale Persistenz Objekt-IdentitätObjekt-Identität

8 ODMG-Datenmodell (Beispiel) Bestellung Verk.bnr Teil Bez.tnr Kunde Adr.knr

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

10 ODMG-Datenmodell (Beispiel) class Kunde (extent Kunden) { attribute int knr ; attribute struct Adresse (int plz, sring ort, string str, int hausnr) adresse ; relationship list best inverse Bestellung::ku ;... }

11 ODMG-Datenmodell (Beispiel) class Teil (extent Teile) { attribute int tnr ; attribute string bezeichnung ; relationship set best inverse Bestellung::teil ;... }

12 ODMG-Datenmodell Typkonstruktoren 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:Array kunden; List best; Bag teile; Set best;Kollektionen:Array kunden; List best; Bag teile; Set best;

13 ODMG-Datenmodell: Vererbung class Eilbestellung extends Bestellung ( extent Eilbestellungen ) { attribute intpriorität ; attribute Date deadline ;... } Erbt Attribute und Methoden von Bestellung Redefinition von Methoden möglich

14 Persistenzkonzepte (1) Ortogonale Persistenz Typ des Objektes ist unabhängig von seiner Lebenszeit => persistente und transiente Objekte gleich (nicht: erben von einer Klasse PersistentObjekt) Persistenz-unabhängiger Code: gleicher Code für persistente und transiente Bestellung => nur eine Klasse Bestellung

15 Persistenzkonzepte (2) Persistenz durch explizites binden in die DB db.bind( bestellung33, hp5l ) ; Objekt-Ref., globaler Name db.bind( bestellung33, hp5l ) ; Objekt-Ref., globaler Name Persistenz durch Erreichbarkeit: bestellung33.teil.bezeichnung ; bestellung33.teil.bezeichnung ; ist auch persistent in DB

16 Transaktionen Transaction-Objekte - Factory-Idee... Transaction txn ; try{ txn.begin() ;... ; db.bind(...) ;... db.lookup(...) ;... ; db.delete(... ) ; } catch( ODMGException e) { txn.abort() ; } txn.commit() ;...

17 Transaktionen (Sperrkonflikte) upgrade-Sperre : jetzt read, später write Vermeidung von Deadlocks Sperrdauer bis Transaktionsende

18 Anfragesprache OQL Welches Teil hat Kunde nr 7 bestellt ? select b.teil.bezeichnung from Bestellungen b where b.ku.knr = 7 Wo wohnt der Kunde, der Teil 33 bestellt hat ? select struct (plz: ad.plz, ort: ad.ort) from Bestellungen b where b.teil.tnr = 33 and b.ku.adresse = ad Joins in kommerziellen OODBMS nicht unterstützt

19 Sprach-Bindings (z.B. Java-Binding, C++-Binding) Idee: Nur 1 Sprache für Programmierer C++ - Binding: z.B. Templates für List, Set,... Java - Binding: erweitert java.util.List und java.util.set relationships, Schlüssel, Extents werden nicht vom ODMG-Java-Bindung unterstützt, aber: z.B. Poet-JavaODMG bietet Extents an aber: z.B. Poet-JavaODMG bietet Extents an

20 Effizienz von relationalen im Vergleich zu OO-Datenbanken Vorteile von OODB + Pfadausdrücke in Queries + gut für stark strukturierte Daten + keine Modellierungsbruch -> Effizienz Vorteil von RDBMS + große Mengen exakt gleichartiger, nicht unterstrukturierter Daten -> Standard-Anfrageoptimierung

21 Kompilierungskonzepte (Java) Precompiler Options-Datei sagt, welche Klassen des Java-Programms Persistenz-fähig sind (z.B. Poet) Post-Compiler Options-Datei sagt, welche Klassen des Java-Programms Persistenz-fähig sind (z.B. Versant)

22 Systeme Poet und Versant + nahe am ODMG-Standard + High-level DB-Operationen +/- Plattenzugriff auf Objekt-Level ObjektStore +/- etwas weiter entfernt vom Standard -/+ Plattenzugriffe auf Page-Level O2 + erfüllt voll ODMG-Standard - nicht mehr am Markt

23 Zusammenfassung 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, aber steigende Tendenzgeringerer Marktanteil als relationale DB, aber steigende Tendenz

24 Kompilierungskonzepte am Beispiel von Poet (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 Datenbank oneFile = false [classes\Liefert] ; daraus wird Dictionary-Info generiert persistent = true ; diese Klasse ist persistent

25 Kompilierungskonzepte am Beispiel von Poet (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

26 Beispielklasse: 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 ; } }

27 Uni-Beispiel Angestellter namepnr Professor Vorlesung namevnr Assistent leiter chef vorl. assis * *


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

Ähnliche Präsentationen


Google-Anzeigen