Objektorientierte Datenbanken

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

Objektrelationales Mapping mit JPA
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Objektorientierte Datenbanken
Kapselung , toString , equals , Java API
MySQL.
Basis-Architekturen für Web-Anwendungen
Datenbankzugriff im WWW (Kommerzielle Systeme)
Paderborner Forum Industrie trifft Informatik - Internet: Herausforderungen für den Mittelstand Vergleichender Überblick über gängige Technologien.
Tomcat Web-Server installieren
Internetzugriff mit Strings und Streams
JDBC & ODMG Motivation - Beispielanwendung JDBC - DriverManager - Connection - Statement - ResultSet Anwendung ODMG - Objektmodell /ODL - OQL - Java-Binding.
Objektorientierter Entwurf (OOD) Übersicht
Anbindung an Anwendungen
Datenbanken I (0,*) Produkt 3 Karczewski Datenbanken I.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Seminar zum pi-Kalkül betreut von Andreas Rossberg
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Transaction Script Software Component Technology for Distributed Applications.
JAVA RMI.
Remote Methode Invocation (RMI)
Was ist eine Datenbank? ermöglicht die Eingabe von Daten
Datenmodellierung - Aufbau einer Datenbank -
DVG Klassen und Objekte
1 Kapitel 12: Transaktionsverwaltung. 2 Transaktion Bündelung mehrerer Datenbankoperationen Mehrbenutzersynchronisation Recovery.
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
Java Data Objects (JDO) und Implementierung in FastObjects.
UML Begleitdokumentation des Projekts
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Visualisierung objektrelationaler Datenbanken
RelationentheorieObjektorientierte Datenbanken AIFB SS Die Anbindung an Programmiersprachen (1/2) Prinzip und Zielsetzung der Sprachanbindungen.
Wir bauen uns eine Webapplikation!
1 Sg 3 – JSP - Java Server Pages Softwareengineering Praktikum Java Server Pages Nicole Brandstätter Josef Sturm Karl Streicher.
Architekturen und Techniken für computergestützte Engineering Workbenches.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Beschreiben Sie eine Web Interaktion mittels Java Applets.
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #3 ER Modellierung.
Esprit Database Suite Eine leistungsfähige Java-Persistzenzschicht zur einfachen Programmierung von Datenbankapplikation.
Datenanbindung in Webapplikationen
Datenbankanbindung mit
Objektorientierte Modellierung mit UML
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Persistenz: Objekt-Lebensdauer In RDBMS wird Lebensdauer von Werten durch ihren Typ festgelegt: Instanzen von Relationstypen sind persistent, alle anderen.
Objekte und Literale ODMG-Objektmodell kennt zwei Arten von Datenelementen: Literale: Identität ist ausschließlich durch Wert gegeben. Nur maximal eine.
RelationentheorieObjektorientierte Datenbanken  AIFB SS Der ODMG Standard 6.2 Der ODMG Standard (1/2) Wesentliche Bestandteile des ODMG-93 Standards.
Motivation Motivation für objektorientierte DBMS (ODBMS): –„Impedance Mismatch“ zwischen relationalem Datenmodell und Programmiersprachen-Datenmodell erfordert.
RelationentheorieObjektorientierte Datenbanken  AIFB SS C++-ODL (1/6) Erweiterung des deklarativen Teils einer C++-Klasse Datentypen d_String,
Datenbanken im Web 1.
SS 2014 – IBB4C Datenmanagement Do 17:00 – 18:30 R Vorlesung #3 ER Modellierung.
OOSE nach Jacobson Sebastian Pohl/ST7 Betreuer: Prof. Dr. Kahlbrandt.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Was ist eine Datenbank „MS Access“
Objektorientierte (OO) Programmierung
Objektorientierte Datenbanken zBeim vorigen Mal: yJava Data Objects zHeute: yDer Object Data Standard der ODMG-Group xKurz: ODMG-Standard yDie POET-Implementierung.
 Präsentation transkript:

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 Trend zu Multi-Tier-Architekturen => Middle-Ware (Java/Corba) + Frontend + Datenbank (Backend) Trend zur OO-Modellierung => UML -> Java/C++ + Datenbank

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

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)

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

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

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

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

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 ; ... }

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 ; ... }

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

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;

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

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

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

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

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

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

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

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

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)

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

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

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

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

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 ; } }

Uni-Beispiel Vorlesung leiter Angestellter * vorl. vnr name pnr name Assistent chef Professor * assis