1 / 27

Objektorientierte Datenbanken

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

sibyl
Télécharger la présentation

Objektorientierte Datenbanken

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 generierteSeite 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 BestellungRedefinition von Methoden möglich

  14. Persistenzkonzepte (1) Ortogonale PersistenzTyp 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 writeVermeidung 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 bwhere 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.setrelationships, 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-CompilerOptions-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 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 leiter Vorlesung Angestellter vorl. * vnr name pnr name Assistent chef Professor assis *

More Related