Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Objektorientierte Datenbanken

Ähnliche Präsentationen


Präsentation zum Thema: "Objektorientierte Datenbanken"—  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 + Datenbank Trend zu Multi-Tier-Architekturen => Middle-Ware (Java/Corba) Frontend + Datenbank (Backend) Trend zur OO-Modellierung => UML -> Java/C Datenbank

3 2-Tier-Architektur mit Common Gateway Interface (CGI)
Eingabe ruft HTML- Seite Browser CGI- Programm Produkt- datenbank generierte Seite Client Server + minimale Anforderung an den Client + Server: CGI-Programm in beliebiger Sprache + Robust - Session-lose Kopplung: keine zwischenzeitliche Interaktion - hohe Serverlast - Sicherheitsrisiken

4 3-Tier-Architektur (mit Java und DB)
HTML- Seite Produkt- datenbank Eingabe Browser Applet Business- Logik (Java) DB-Zugr. Programm RMI RMI Client Application-Server DB-Server +/- 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)

5 Ziele von Datenbanken Daten gegen Verlust sichern (Persistenz)
Atomizität von Transaktionen Isolation von Transaktionen Konsistenzerhaltung persistenter Daten Effiziente Anfragebearbeitung Benutzer-nahe Modellierung

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

7 Zusätzliche Eigenschaften objekt-orientierter Datenbanken
Typkonstruktoren und komplexe Objekte, Klassen, Methoden und Kapselung, Vererbung, Redefinition und späte Bindung, Orthogonale Persistenz Objekt-Identität

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

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<Bestellung> best inverse Bestellung::ku ; }

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

12 ODMG-Datenmodell Typkonstruktoren
Basistypen: int nr; string bezeichnung; ... Tupelkonstruktor: struct(int plz, string ort, ...) Objektkonstruktor: Teil(int nr, string bez) Kollektionen: Array<Kunde> kunden; List<Bestellung> best; Bag<Teil> teile; Set<Bestellung> best;

13 ODMG-Datenmodell: Vererbung
class Eilbestellung extends Bestellung ( extent Eilbestellungen ) { attribute int prioritä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 Persistenz durch Erreichbarkeit: bestellung33.teil.bezeichnung ; ist auch persistent in DB

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

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

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

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/OOP
verkürzen Entwicklungszeit / kein Modellbruch sind mächtiger als relationale DB sind meistens effizienter als relationale DB sind standardisiert, Produkte sind verfügbar geringerer 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 [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 Vorlesung leiter Angestellter * vorl. vnr name pnr name
Assistent chef Professor * assis


Herunterladen ppt "Objektorientierte Datenbanken"

Ähnliche Präsentationen


Google-Anzeigen