OODBS - Bildungsportal Sachsen

Werbung
Objektorientierte Datenbanksysteme (OODBS)
• Motivation: siehe Postrelationale System + Kompatibilität mit OOPS
• OODBMS‐Manifesto 1989:
– The golden rules:
•
•
•
•
•
•
•
•
•
•
•
•
•
Komplexe Objekte
Objektidentität
Datenabstraktion / Kapselung
Typen / Klassen
Vererbung
Polymorphismus
Berechnungsvollständigkeit
g
g
Erweiterbarkeit
Persistenz
Sekundärspeicherverwaltung
Ablaufintegrität (Concurrency)
Physische Integrität (Recovery)
Interaktive Anfragesprache
17. Prof. Jasper: Datenbanksysteme
1
OODBS: • Objektidentität und Objektstruktur
–
–
–
–
OID (eindeutig, unveränderlich, persistent)
Was ist ein Objekt? Körpergröße = Länge des Schreibtisches? Was sind Werte?
j
p g
g
Typkonstruktoren (Atom, Tupel, Menge, (List, Bag, Array))
Ein Objekt (i, c, v) besteht aus
• i = Objekt
i = Objekt‐ID
ID
• c = Typkonstruktor
• v = Objektzustand (Wert)
• c == „Atom
c == Atom“ => v ist atomarer Wert aus den vom Systeme zur Verfügung gestellten => v ist atomarer Wert aus den vom Systeme zur Verfügung gestellten
Wertebereichen
• c == „Tupel“ => v hat die Form <a1:i1, ..., an:in> mit ai Attributname und ij
Objektidentifikator
• c == „Menge“ => v hat die Form {i1, ..., in} mit ij Objektidentifikator
17. Prof. Jasper: Datenbanksysteme
2
OODBS: •
Beispiele: –
–
–
–
–
–
–
–
–
–
–
–
•
o1 = (i1, atom, ‘Houston’)
o2 = (i2, atom, ‘Bellaire’)
o3 = (i
= (i3, atom, atom ‘Sugarland’)
Sugarland )
o4 = (i4, atom, 5)
o5 = (i5, atom, ‘Research’)
o6 = (i6, atom, ‘1988‐05‐22’)
o7 = (i
( 7, set, {i1, i2, i3})
{
})
o8 = (i8, tuple, <dname:i5, dnumber:i4, mgr:i9, locations:i7, employees:i10, projects:i11>)
o9 = (i9, tuple, <manager:i12, manager_start_date:i6>)
o10 = (i
(i10, set, {i
set {i12, ii13, ii14})
o11 = (i11, set {i15, i16, i17})
o12 = (i12, tuple, <fname:i18, minit:i19, lname:i20, ssn:i21, . . ., salary:i26, supervi‐sor:i27, dept:i8>)
Identität und Gleichheit: Beispiel
–
–
–
–
–
–
o1 = (i1, tuple, <a1:i4, a2:i6>)
o2 = (i2, tuple, <a1:i5, a2:i6>)
o3 (i3 tuple <a1:i4 a2:i6>)
o3 = (i3, tuple, <a1:i4, a2:i6>)
o4 = (i4, atom, 10)
o5 = (i5, atom, 10)
o6 = (i6, atom, 20)
( ,
, )
17. Prof. Jasper: Datenbanksysteme
3
OODBS: • Typkonstruktoren: Object
Typkonstruktoren: Object Definition Language
Definition Language
– Beispiel:
define type Angestellter:
tuple(
vname:
initial:
nname:
ssn:
geburtsdatum:
adresse:
geschlecht: char;
gehalt:
vorgesetzter:
abt:
define type Datum
tuple(
jahr:
monat:
tag:
define type Abteilung
tuple( aname:
abtnummer:integer;
mgr:
string;
char;
string;
string;
Datum;
string;
float;
Angestellter;
Abteilung;);
integer;
integer;
integer;);
string;
tuple (
manager: Angestellter;
anfangsdatum: Datum;);
standorte set(string);
angestellte set(Angestellter);
projekte
set(Projekt););
17. Prof. Jasper: Datenbanksysteme
4
OODBS: • Kapselung
l
– Information Hiding
• Schnittstelle des Objekts = Menge von Operationen
• Signatur in ODL
• Implementierung = Methode in Programmiersprache
• Aufruf durch Nachricht an das jeweilige Objekt
• create, alter‐, destroy‐Operationen
l
d
O
i
Define class Abteilung
type tuple( operations(
aname:
abtnummer:integer;
mgr:
string;
tuple (
manager: Angestellter;
anfangsdatum: Datum;);
standorte set(string);
angestellte set(Angestellter);
projekte
set(Projekt););
anzahl_angest:
integer;
create_abt: Abteilung;
destroy abt:
destroy_abt:
boolean;
assign_angest(e: Angestellter): boolean;
remove_angest(e: Angestellter): boolean;
end Abteilung;
• Problem Datenbanken: zu starre Regeln für den Zugriff auf Zustand
17. Prof. Jasper: Datenbanksysteme
5
OODBS: • Objektpersistenz über Benennung und Erreichbarkeit
– Benennung: eindeutiger Name für ein Objekt, persistent
– Erreichbarkeit: direkt und indirekt referenzierte Objekte sind vom Ausgangsobjekt Erreichbarkeit: direkt und indirekt referenzierte Objekte sind vom Ausgangsobjekt
erreichbar
– Alle erreichbaren Objekte eines persistenten Objekts sind ebenfalls persistent!
Define class Abteilungen
type set( Abteilung);
operations(
add_abt(d: Abteilung): boolean;
remove_abt(d: Abteilung): boolean;
create_abt_set:
Abteilungen;
destroy_abt_set:
boolean;
end Abteilungen;
....
persistent name Alle_Abteilungen: Abteilungen;
....
d := create_abt;
....
b := AlleAbteilungen.add_abt(d);
....
17. Prof. Jasper: Datenbanksysteme
6
OODBS: • Typhierarchien und Vererbung
– Einfachste Art der Typvereinbarung: Name + öffentliche Funktionen (Attribute und/oder Operationen)
und/oder Operationen)
– PERSON: Name, Adresse, GebDat, Alter, SSN
– Subtyp erbt alle Eigenschaften des Supertyps:
– STUDENT subtype‐of PERSON : Fachrichtung, Semester
– ANGESTELLTER subtype‐of PERSON : Gehalt, Vorgesetzter, Abteilung
• Jeder
Jeder Typ hat zugehörige Kollektion (Extent) von kompatiblen Typ hat zugehörige Kollektion (Extent) von kompatiblen
Objekten
– Jedes Objekt eines Typs gehört zum entsprechenden Extent sowie zu allen Extents aller Supertypen
– ROOT‐Klasse (OBJECT‐Klasse) enthält alle Objekte einer OODB
– In OO(DB)‐Systemen wird zwischen persistenten und transienten Objekten In OO(DB) Systemen wird zwischen persistenten und transienten Objekten
unterschieden.
17. Prof. Jasper: Datenbanksysteme
7
OODBS: • Weitere Konzepte von OO‐Datenmodellen
– Unstrukturierte Objekte • BLOB, CLOB; siehe auch SQL:1999
BLOB CLOB i h
h SQL 1999
– Polymorphismus
• Unterschiedliche Implementierungen für eine Operator‐Signatur (siehe auch SQL:1999)
– Mehrfach‐ / Selektivvererbung
• Vermeindung / Auflösung von Namenskonflikten
/ Auflösung von Namenskonflikten
• Except‐Klausel beschreibt im Subtyp die nicht vererbten Aspekte des Supertyps
– Versionen und Konfigurationen
• In vielen Anwendungsdomänen sinnvoll (CAx)
• Version von Objekten
• Konfiguration komplexer Objekte aus „passenden
Konfiguration komplexer Objekte aus passenden“ Versionen der Basisobjekte
Versionen der Basisobjekte
17. Prof. Jasper: Datenbanksysteme
8
OODBS: • Das ODMG‐Objektmodell
• ODMG: Object Data Management Group (Herstellerkonsortium)
• Der „Standard“ enthält:
–
–
–
–
Objektmodell
Objektdefinitionssprache (ODL)
Objektanfragesprache (OQL)
Objektanfragesprache (OQL)
Bindings für OOPL
• Versionen
– 1.0: 1993 (ODMG‐93)
– 2.0: 1997 (ODMG 2.0)
17. Prof. Jasper: Datenbanksysteme
9
OODBS: • Das ODMG‐Objektmodell
– Objekte (haben ID und Zustand) und Literale (haben Wert)
– Objekte beschrieben durch
Obj kt b h i b d h
–
–
–
–
–
Objektidentifikator (systemweit eindeutig)
Name (eindeutig in DB, optional)
Lebensdauer (transient oder persistent)
Struktur beschrieben über Typkonstruktoren
Objekt ist entweder atomar oder eine Sammlung (collection object)
– Literal kann atomar, eine Sammlung oder strukturiert sein
– atomare Literale entsprechen den Werten der Basistypen (wie C, C++)
– strukturierte Literale
strukturierte Literale entspechen Tupeln, Definition über Struct
Tupeln, Definition über Struct wie C, C
wie C, C++
– Sammlungsliterale spezifizieren einen Wert, der eine Sammlung von Objekten oder Literalen darstellt; die zugehörige Sammlung hat eine OID
– Interface
Interface‐Definitionen
Definitionen für Schnittstellen;
für Schnittstellen;
– Alle Objekte erben von dem „Interface „Object“ “
17. Prof. Jasper: Datenbanksysteme
10
OODBS: • Eingebaute Schnittstellenhierarchie für OODBMS
Object
Iterator
C ll ti
Collection
set
list
D t
Date
Ti
Timestamp
t
bag
array
17. Prof. Jasper: Datenbanksysteme
I t
Interval
l
Ti
Time
dictionary
11
OODBS: • Sammlungsobjekte:
– Erben von der Schnittstelle Collection
– Für jedes Sammlungs‐Objekt O existieren
j
g
j
• O.cardinaltity() • O.is_empty()
• O.insert_element(e), O.remove_element(e)
O insert element(e) O remove element(e)
• O.contains_element(e)
• (i = )O.create_iterator() erzeugt ein Iterator‐Objekt mit i.reset(), i.next_position, i get element
i.get_element
– Sammlungsobjekte werden in Set, List, Array, Bag und Dictionary spezialisiert:
• Set enthält zusätzlich Mengenoperationen
• List ist geordnete Liste (first, last, i‐te
List ist geordnete Liste (first last i te Stelle)
• Array ist wie List mit max. Anzahl Elemente
• Bag ist wie Set; enthält zusätzlich Duplikat‐Eliminierung
• Dictionary
Di ti
verwaltet Paare von (eindeutigen) Schlüsseln mit Werten <k, v> (bind, lt t P
( i d ti ) S hlü l
it W t
k
(bi d
unbind, lookup); liefert assoziativen Zugriff auf Objekte
17. Prof. Jasper: Datenbanksysteme
12
OODBS: • Atomare Objekte
– Jedes benutzerdefinierte Objekt, das keine Sammlung ist, ist ein atomare j
Objekt
– Schlüsselwort „class“
– Spezifiziert Eigenschaften und Operationen
– Eigenschaften sind Attribute und Beziehungen
Ei
h ft
i d Att ib t
dB i h
– Attribute haben Werte (in der Regel Literale, oder OID)
– Beziehungen sind binär und als Paar von Umkehrreferenzen definiert
– Für Operationen werden Signatur und Ausnahmen definiert
– Einfaches Beispiel:
class Employee (extent all_emplyees
all emplyees key ssn) {
attribute string name;
attribute string ssn;
attribute
tt ib t short
h t age;
relationship Dept works_for;
void reassign(in string new_name);
}
17. Prof. Jasper: Datenbanksysteme
13
OODBS: •
B i i l mit
Beispiel
i (inverser) Beziehung
(i
)B i h
( l i hi )
(relationship)
class Faculty extends Person (extent faculty) {
attribute string rank;
attribute float salary;
attribute string
g p
phone;
…
relationship Dept works_in inverse
Dept::has
p
_faculty;
y
relationship set<GradStu> advises inverse
GradStu::advisor;
give_raise (in float raise);
void g
void promote (in string new_rank);
};
17. Prof. Jasper: Datenbanksysteme
14
OODBS: • Vererbung
– Von einer Schnittstelle oder Klasse werden nur die Operationen geerbt (nicht die Zustandseigenschaften); Zustandseigenschaften);
– Eine Schnittstelle ist nicht instanziierbar
– Eine Klasse ist instanziierbar
– EXTENDS‐Schlüssel erlaubt die zusätzliche Vererbung von Zustandseigenschaften (nur f
(
zwischen Klassen!)
– Mehrfachvererbung über EXTENDS nicht zulässig.
• Extents
– Zu jeder Klasse (class) kann ein benannter Extent definiert werden, der alle persistenten Objekte der Klasse dauerhaft verwaltet
persistenten Objekte der Klasse dauerhaft verwaltet.
– Eine Klasse mit einem Extent kann Schlüssel besitzen, die Objekte eindeutig identifizieren
• Factory
– Objekte werden durch Operationen der sogenannten Factory‐Objekte erzeugt; erben von „ObjectFactory“,, das „new()
von „ObjectFactory
das „new()“ bereitstellt.
bereitstellt.
17. Prof. Jasper: Datenbanksysteme
15
OODBS: • Die Objektdefinitionssprache (ODL)
– Unterstützung der semantischen Konstrukte des ODMG 2.0 Modells
– Programmiersprachenunabhängig
P
i
h
bhä i
– Dient der Definition von Objektspezifikationen (keine vollständige Programmiersprache)
g
p
)
– Über Sprachbindungen werden Konstrukte abgebildet
– Grafische Elemente von ODL:
Schnittstelle
Klasse
Beziehungen
Person-IF
Student
1:1
1:N
M:N
Vererbung
Schnittstellenvererbung
(IST-EIN) mit „:“
17. Prof. Jasper: Datenbanksysteme
Klassenvererbung mit
extends
16
OODBS: • Beispiel:
has_faculty
1
has_majors
Person
Department
1
offers
1
m offered_by
works_in
m majors_in
m
Course
completed_sections
F
Faculty
lt
advises
m
m
St d t
Student
m students
registered_in
1
Section
m
1 has_section
m of_course
GradStudent
advisor
m CurrSection
registered_students
d
d
17. Prof. Jasper: Datenbanksysteme
17
OODBS: • Die Anfragesprache OQL
– Grundlegende Syntax „select ... from ... where“
– Für jede Anfrage ist ein Einstiegspunkt (benanntes persistentes Objekt) erforderlich
Für jede Anfrage ist ein Einstiegspunkt (benanntes persistentes Objekt) erforderlich
• Name der Extents einer Klasse
• Iteratorvariable in der from‐Klausel (mehrere syntaktische Möglichkeiten)
– Ergebnistyp – bag (oder set bei select distinct ... )
– Im Allgemeinen jeder Typ der in ODMG 2.0 darstellbar ist
– Jeder persistente Name an sich ist eine Anfrage, deren Resultat eine Referenz auf das persistente Objekt ist
– Pfadausdrücke spezifizieren ein Anfrageergebnis ausgehend von einem Einstiegspunkt oder von einer Iteratorvariablen
– Spezifikation von Pfadausdrücken ist orthogonal
– Probleme: Mehrdeutigkeiten bei Ergebnistypen
Probleme: Mehrdeutigkeiten bei Ergebnistypen
– Konstruktion komplexer Ergebnistypen (struct) möglich
17. Prof. Jasper: Datenbanksysteme
18
OODBS: • Weitere OQL‐Features
– Views (define
Vi
(d fi ... as))
– Elemente von Singletons (einelementige
Elemente von Singletons (einelementige Ergebnisse)
– Aggregatfunktionen (min, max, count, avg, sum)
– Quantoren (existiert, für alle, (Elementtest))
– Listen und Arrays als Anfrageergebnisse
– Gruppierung mit expliziter Referenz auf die Partitionen
– Having‐Klausel mit expliziter Referenz auf die Partitionen
17. Prof. Jasper: Datenbanksysteme
19
Herunterladen