Objektorientierte datenbanken
Download
1 / 27

Objektorientierte Datenbanken - PowerPoint PPT Presentation


  • 93 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Objektorientierte Datenbanken' - sibyl


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Objektorientierte datenbanken

Objektorientierte Datenbanken

Prof. Dr. Stefan Böttcher

Fachbereich 17 - Informatik Universität Paderborn


Einordnung von oodb
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
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


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
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
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
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
ODMG-Datenmodell (Beispiel)

Bestellung

bnr

Verk.

Kunde

Teil

knr

Adr.

tnr

Bez.


Odmg datenmodell beispiel1
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 beispiel2
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 beispiel3
ODMG-Datenmodell (Beispiel)

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


Odmg datenmodell typkonstruktoren
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
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


Persistenzkonzepte 1
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


Persistenzkonzepte 2
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
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
Transaktionen (Sperrkonflikte)

Sperrdauer bis Transaktionsende

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


Anfragesprache oql
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


Sprach bindings z b java binding c binding
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


Effizienz von relationalen im vergleich zu oo datenbanken
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
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)


Systeme
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
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
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


Kompilierungskonzepte am beispiel von poet java1
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
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
Uni-Beispiel

leiter

Vorlesung

Angestellter

vorl.

*

vnr

name

pnr

name

Assistent

chef

Professor

assis

*


ad