Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der...

49
Objektorientierte Datenbanken Beim vorigen Mal: Architektur von DB-Systemen Grundlagen der Entity-Relationship-Modellierung Probleme beim Übergang in relationale Modellierung Heute: Anfragesprachen: SQL (kurz) Mehrbenutzerbetrieb und Sperren Transaktionen Anbindung an Programmiersprachen Probleme der relationalen Datenbanktechnologie Ralf Möller, FH-Wedel

Transcript of Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der...

Page 1: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Objektorientierte Datenbanken

Beim vorigen Mal: Architektur von DB-Systemen Grundlagen der Entity-Relationship-Modellierung Probleme beim Übergang in relationale Modellierung

Heute: Anfragesprachen: SQL (kurz) Mehrbenutzerbetrieb und Sperren Transaktionen Anbindung an Programmiersprachen Probleme der relationalen Datenbanktechnologie

Ralf Möller, FH-Wedel

Page 2: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Übung

Ziel: Vertiefung des Vorlesungsstoffes ... ... durch Lösen von Aufgaben ... durch Beantwortung von Fragen

Durchführung: Christine Apfel, Katrin FitzTermin: Mi, 8.00 UhrOrt: RZ2Beginn: 16.4.03

Page 4: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Weitere Literatur und Danksagung

A. Kemper, A. Eickler, Datenbanksysteme: Eine Einführung

Diese Vorlesungbasiert aufPräsentations-material zu diesem Buch

Page 5: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Vom Entwurfs- zum Implementierungsmodell

ProfessorenPersNr Name Ran

gRaum

2125 Sokrates C4 2262126 Russel C4 2322127 Kopernikus C3 3102133 Popper C3 522134 Augustinus C3 3092136 Curie C4 362137 Kant C4 7

VorlesungenVorlNr Titel SWS Gelesen

Von5001 Grundzüge 4 21375041 Ethik 4 21255043 Erkenntnistheorie 3 21265049 Mäeutik 2 21254052 Logik 4 21255052 Wissenschaftstheorie 3 21265216 Bioethik 2 21265259 Der Wiener Kreis 2 21335022 Glaube und Wissen 2 21344630 Die 3 Kritiken 4 2137

Professoren Vorlesungenlesen1 N

Page 6: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Vorsicht: So geht es NICHT

ProfessorenPersNr Name Ran

gRaum liest

2125 Sokrates C4 226 50412125 Sokrates C4 226 50492125 Sokrates C4 226 4052

... ... ... ... ...2134 Augustinus C3 309 50222136 Curie C4 36 ??

VorlesungenVorlNr Titel SWS5001 Grundzüge 45041 Ethik 45043 Erkenntnistheorie 35049 Mäeutik 24052 Logik 45052 Wissenschaftstheorie 35216 Bioethik 25259 Der Wiener Kreis 25022 Glaube und Wissen 24630 Die 3 Kritiken 4

Professoren Vorlesungenlesen1 N

Page 7: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Anomalien

Update-Anomalie: Was passiert wenn Sokrates umzieht Lösch-Anomalie: Was passiert wenn „Glaube und Wissen“ wegfällt Einfügeanomalie: Curie ist neu und liest noch keine Vorlesungen

ProfessorenPersNr Name Rang Raum liest2125 Sokrates C4 226 50412125 Sokrates C4 226 50492125 Sokrates C4 226 4052

... ... ... ... ...2134 Augustinus C3 309 50222136 Curie C4 36 ??

VorlesungenVorlNr Titel SWS5001 Grundzüge 45041 Ethik 45043 Erkenntnistheorie 35049 Mäeutik 24052 Logik 45052 Wissenschaftstheorie 35216 Bioethik 25259 Der Wiener Kreis 25022 Glaube und Wissen 24630 Die 3 Kritiken 4

Page 8: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Relationale Modellierung der Generalisierung

Fachgebiet

Assistenten

Professoren

Raum Rang

is_a Angestellte

PersNr Name

Angestellte: {[PersNr, Name]}Professoren: {[PersNr, Rang, Raum]}Assistenten: {[PersNr, Fachgebiet]}

Page 9: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Relationale Modellierung schwacher Entitytypen

Studenten ablegen Prüfungen1 N Note

PrüfTeil

MatrNr

Vorlesungen

umfassen

VorlNr

abhalten

Professoren

PersNr

N N

M M

Prüfungen: {[MatrNr: integer, PrüfTeil: string, Note: integer]}

umfassen: {[MatrNr: integer, PrüfTeil: string, VorlNr: integer]}

abhalten: {[MatrNr: integer, PrüfTeil: string, PersNr: integer]}

Page 10: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Man beachte, dass in diesem Fall der (global eindeutige) Schlüssel der Relation Prüfung nämlich MatrNr und PrüfTeil als Fremdschlüssel in die Relationen umfassen und abhalten übernommen werden muß.

Relationale Modellierung schwacher Entitytypen

Page 11: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

standardisierte - Datendefinitions (DDL)-- Datenmanipulations (DML)-- Anfrage (Query)-Sprache

derzeit aktueller Standard ist SQL 99 objektrelationale Erweiterung

SQL

Page 12: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Studenten

Assistenten

MatrNr

PersNr

Semester

Name

Name

Fachgebiet

Note

hören

prüfen

arbeitenFür Professoren

Vorlesungen

lesen

voraussetzen

SWS

VorlNr

Titel

Raum

Rang

PersNr

Nach-folgerVorgänger

Name

Uni-Schema

1

N

1

1

N N

N

M

MMN

Page 13: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

ProfessorenPersNr Name Rang Raum2125 Sokrates C4 226

2126 Russel C4 232

2127 Kopernikus C3 310

2133 Popper C3 52

2134 Augustinus C3 3092136 Curie C4 36

2137 Kant C4 7

StudentenMatrNr Name Semester24002 Xenokrates 18

25403 Jonas 1226120 Fichte 10

26830 Aristoxenos 8

27550 Schopenhauer

6

28106 Carnap 329120 Theophrastos 2

29555 Feuerbach 2

VorlesungenVorlNr Titel SWS gelesenV

on5001 Grundzüge 4 2137

5041 Ethik 4 2125

5043 Erkenntnistheorie 3 2126

5049 Mäeutik 2 21254052 Logik 4 2125

5052 Wissenschaftstheorie 3 2126

5216 Bioethik 2 2126

5259 Der Wiener Kreis 2 2133

5022 Glaube und Wissen 2 21344630 Die 3 Kritiken 4 2137

voraussetzenVorgänger Nachfolger

5001 5041

5001 5043

5001 5049

5041 52165043 5052

5041 5052

5052 5259

hörenMatrNr VorlNr26120 5001

27550 5001

27550 405228106 5041

28106 5052

28106 5216

28106 5259

29120 500129120 5041

29120 5049

29555 5022

25403 5022

AssistentenPerslNr Name Fachgebiet Boss

3002 Platon Ideenlehre 2125

3003 Aristoteles Syllogistik 2125

3004 Wittgenstein Sprachtheorie 2126

3005 Rhetikus Planetenbewegung 21273006 Newton Keplersche Gesetze 2127

3007 Spinoza Gott und Natur 2126

prüfenMatrNr VorlNr PersNr Note28106 5001 2126 1

25403 5041 2125 2

27550 4630 2137 2

Page 14: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

(Einfache) Datendefinition in SQL Datentypen character (n), char (n) character varying (n), varchar (n) numeric (p,s), integer blob oder raw für sehr große binäre Daten clob für sehr große String-Attribute date für DatumsangabenAnlegen von Tabelle create table Professoren

(PersNr integer not null, Name varchar (30) not null Rang character (2) );

Page 15: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Einfache SQL-Anfrage

PersNr Name2125 Sokrates2126 Russel2136 Curie2137 Kant

select PersNr, Namefrom Professorenwhere Rang= ´C4´;

Page 16: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Einfache SQL-Anfragen

Sortierungselect PersNr, Name, Rangfrom Professorenorder by Rang desc, Name asc;

PersNr Name Rang2136 Curie C42137 Kant C42126 Russel C42125 Sokrates C42134 Augustinus C32127 Kopernikus C32133 Popper C3

Page 17: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

select distinct Rangfrom Professoren

RangC3C4

Duplikateliminierung

Page 18: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

ProfessorenPersNr Name Rang Raum2125 Sokrates C4 226

2126 Russel C4 232

2127 Kopernikus C3 310

2133 Popper C3 52

2134 Augustinus C3 3092136 Curie C4 36

2137 Kant C4 7

StudentenMatrNr Name Semester24002 Xenokrates 18

25403 Jonas 1226120 Fichte 10

26830 Aristoxenos 8

27550 Schopenhauer

6

28106 Carnap 329120 Theophrastos 2

29555 Feuerbach 2

VorlesungenVorlNr Titel SWS gelesenV

on5001 Grundzüge 4 2137

5041 Ethik 4 2125

5043 Erkenntnistheorie 3 2126

5049 Mäeutik 2 21254052 Logik 4 2125

5052 Wissenschaftstheorie 3 2126

5216 Bioethik 2 2126

5259 Der Wiener Kreis 2 2133

5022 Glaube und Wissen 2 21344630 Die 3 Kritiken 4 2137

voraussetzenVorgänger Nachfolger

5001 5041

5001 5043

5001 5049

5041 52165043 5052

5041 5052

5052 5259

hörenMatrNr VorlNr26120 5001

27550 5001

27550 405228106 5041

28106 5052

28106 5216

28106 5259

29120 500129120 5041

29120 5049

29555 5022

25403 5022

AssistentenPerslNr Name Fachgebiet Boss

3002 Platon Ideenlehre 2125

3003 Aristoteles Syllogistik 2125

3004 Wittgenstein Sprachtheorie 2126

3005 Rhetikus Planetenbewegung 21273006 Newton Keplersche Gesetze 2127

3007 Spinoza Gott und Natur 2126

prüfenMatrNr VorlNr PersNr Note28106 5001 2126 1

25403 5041 2125 2

27550 4630 2137 2

Page 19: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Anfragen über mehrere Relationen

Welcher Professor liest "Mäeutik"?

select Name, Titelfrom Professoren, Vorlesungenwhere PersNr = gelesenVon and Titel = `Mäeutik‘ ;

n))Vorlesungeen(Professor ( Mäeutik''TitelgelesenVonPersNr TitelName, ×∏ =∧=σ

Page 20: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Anfragen über mehrere Relationen

RaumRangNamePersNr226232

7

C4C4

C4

SokratesRussel

Kant

21252126

2137

Professorengelesen VonSWSTitelVorlNr

21374Grundzüge5001

21374Die 3 Kritiken4630

21252Mäeutik5049

21254Ethik5041

Vorlesungen

Verknüpfung

Page 21: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

4630

50415001

5049

50415001

VorlNr

Die 3 Kritiken

EthikGrundzüge

Mäeutik

EthikGrundzüge

Titel

4

44

2

44

SWS

2137

21252137

2125

21252137

gelesen Von

7

232232

226

226226

Raum

C4Kant2137

RangNamePersNrC4Sokrates2125

C4Russel2126C4Russel2126

C4Sokrates2125

C4Sokrates1225

PersNr

Name Rang Raum VorlNr Titel SWS gelesen Von

2125 Sokrates C4 226 5049 Mäeutik 2 2125

Name TitelSokrate

sMäeutik

Auswahl

Projektion

Page 22: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Anfragen über mehrere RelationenWelche Studenten hören welche Vorlesungen?

select Name, Titelfrom Studenten, hören, Vorlesungenwhere Studenten.MatrNr = hören.MatrNr and

hören.VorlNr = Vorlesungen.VorlNr;Alternativ:select s.Name, v.Titelfrom Studenten s, hören h, Vorlesungen vwhere s. MatrNr = h. MatrNr and

h.VorlNr = v.VorlNr

Page 23: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Veränderung am Datenbestand

Einfügen von Tupelninsert into hören

select MatrNr, VorlNrfrom Studenten, Vorlesungenwhere Titel= `Logik‘ ;

insert into Studenten (MatrNr, Name)values (28121, `Archimedes‘);

Page 24: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

StudentenMatrNr Name Semester

29120 Theophrastos

2

29555 Feuerbach 228121 Archimedes -

Null-Wert

Page 25: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Veränderungen am Datenbestand

Löschen von Tupelndelete Studentenwhere Semester > 13;

Verändern von Tupelnupdate Studenten

set Semester= Semester + 1;

Page 26: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Nebenläufigkeit und Transaktionen

Der erste Teil dieser Vorlesung (13 Präsentationen) baut auf der Vorlesung "P3" von Bernd Neumann an der Universität Hamburg auf.

Für eine Vertiefung desThemas Transaktionen und Sperren (Locks) siehe Kapitel 12 aus:

Page 27: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Beispiel Kontoführung

Prozeß 1: Umbuchung eines Betrages von Konto A nach Konto BProzeß 2: Zinsgutschrift für Konto A

Umbuchungread (A, a1)a1 := a1 - 300write (A, a1)read (B, b1)b1 := b1 + 300write (B, b1)

Zinsgutschriftread (A, a2)a2 := a2 * 1.03write (A, a2)

Möglicher verzahnter Ablauf:

Umbuchung Zinsgutschriftread (A, a1)a1 := a1 - 300

read (A, a2)a2 := a2 * 1.03write (A, a2)

write (A, a1)read (B, b1)b1 := b1 + 300write (B, b1)

Wo ist die Zinsgutschrift geblieben??

Page 28: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Beispiel Besucherzählung

Drehkreuz1:loop {read (Counter, c1)if (c1 ≥ MaxN) lockif (c1 < MaxN) openif enter incr(c1)if leave decr(c1)write (Counter, c1)}

Drehkreuz2:loop {read (Counter, c2)if (c2 ≥ MaxN) lockif (c2 < MaxN) openif enter incr(c2)if leave decr(c2)write (Counter, c2)}

Verzahnte Ausführung der zwei Prozesse Drehkreuz1 und Drehkreuz2 mit Zugriff auf gemeinsamen Counter kann inkorrekte Besucherzahl ergeben!

=> Überfüllung, Panik, Katastrophen durch Studium der Nebenläufigkeit vermeiden

Page 29: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Mehrbenutzersynchronisation

Die nebenläufige Ausführung mehrerer Prozesse auf einem Rechner kann grundsätzlich zu einer besseren Ausnutzung des Prozessors führen, weil Wartezeiten eines Prozesses (z.B. auf ein I/O-Gerät) durch Aktivitäten eines anderen Prozesses ausgefüllt werden können.

Zeitunverzahnte Ausführung

verzahnte Ausführung

Prozesse synchronisieren = partielle zeitliche Ordnung herstellen

Page 30: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Mehrbenutzerbetrieb von Datenbanksystemen

Um Probleme durch unerwünschte Verzahnung nebenläufiger Zugriffe (s. Beispiel Kontoführung) zu vermeiden, werden atomare Aktionen zu größeren Einheiten geklammert: Transaktionen.Eine Transaktion ist eine Folge von Aktionen (Anweisungen), die ununterbrechbar ausgeführt werden soll.

Da Fehler während einer Transaktion auftreten können, muß eine Transaktionsverwaltung dafür sorgen, daß unvollständige Transaktionen ggf. zurückgenommen werden können.Befehle für Transaktionsverwaltung:• begin of transaction (BOT) Beginn der Anweisungsfolge einer Transaktion • commit Einleitung des Endes einer Transaktion,

Änderungen der Datenbasis werden festgeschrieben• abort Abbruch der Transaktion, Datenbasis wird in den

Zustand vor der Transaktion zurückversetzt

Page 31: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Eigenschaften von Transaktionen

ACID-Paradigma steht für 4 Eigenschaften:

Atomicity (Atomarität)Eine Transaktion wird als unteilbare Einheit behandelt ("alles-oder-nichts").

Consistency (Konsistenz)Eine Transaktion hinterläßt nach (erfolgreicher oder erfolgloser) Beendigung eine konsistente Datenbasis.

IsolationNebenläufig ausgeführte Transaktionen beeinflussen sich nicht gegenseitig.

Durability (Dauerhaftigkeit)Eine erfolgreich abgeschlossene Transaktion hat dauerhafte Wirkung auf die Datenbank, auch bei Hardware- und Software-Fehlern.

Page 32: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Mehrbenutzerbetrieb in DBsystemenSynchronisation mehrerer nebenläufiger Transaktionen:• Bewahrung der indendierten Semantik einzelner Transaktionen• Protokolle zur Sicherung der Serialisierbarkeit • Sicherung von Rücksetzmöglichkeiten im Falle von Abbrüchen• Vermeidung von Schneeballeffekten beim Rücksetzen• Behandlung von Verklemmungen

Page 33: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Synchronisation bei Mehrbenutzerbetrieb

Synchronisationsproblem = verzahnte sequentielle Ausführung nebenläufiger Transaktionen, so daß deren Wirkung der intendierten unverzahnten ("seriellen") Hintereinanderausführung der Transaktionen entspricht.

Konfliktursache im DB-Kontext ist read und write von zwei Prozessen i und k auf dasselbe Datum A: readi(A) readk(A) Reihenfolge irrelevant, kein Konflikt

readi(A) writek(A) Reihenfolge muß spezifiziert werden, Konflikt

writei(A) readk(A) analog

writei(A) writek(A) Reihenfolge muß spezifiziert werden, Konflikt

Serialisierbarkeitsgraph:Knoten = atomare Operationen (read, write)Kanten = Ordnungsbeziehung (Operation i vor Operation k)

Serialisierbarkeitstheorem:Eine partiell geordnete Menge nebenläufiger Operationen ist genau dann serialisierbar, wenn der Serialisierungsgraph zyklenfrei ist.

Page 34: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Beispiel für nicht serialisierbare Historie

T1 T2

BOTread(A)write(A)

BOTread(A)write(A)read(B)write(B)commit

read(B)write(B)commit

Der Effekt dieser Verzahnung entspricht keiner der 2 möglichen Serialisierungen T1 vor T2 oder T2 vor T1: Die Historie ist nicht serialisierbar

T1 T2

BOTread(A)write(A)read(B)write(B)commit

BOTread(A)write(A)read(B)write(B)commit

T1 T2

BOTread(A)write(A)read(B)write(B)commit

BOTread(A)write(A)read(B)write(B)commit

verzahnte Historie Serialisierung 1 Serialisierung 2

Page 35: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Sperrsynchronisation

Viele Datenbank-Scheduler verwenden Sperranweisungen zur Erzeugung konfliktfreier Abläufe:

• Sperrmodus S (shared, read lock, Lesesperre)Wenn Transaktion Ti eine S-Sperre für ein Datum A besitzt, kann Ti read(A) ausführen. Mehrere Transaktionen können gleichzeitig eine S-Sperre für dasselbe Objekt A besitzen.

• Sperrmodus X (exclusive, write lock, Schreibsperre)Nur eine einzige Transaktion , die eine X-Sperre für A besitzt, darf write(A) ausführen.

Verträglichkeit der Sperren untereinander: (NL = no lock, keine Sperrung)

NL S X

S ok ok -

X ok - -

Page 36: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Zwei-Phasen-Sperrprotokoll(Englisch: two-phase locking, 2PL)Protokoll gewährleistet die Serialisierbarkeit von Transaktionen.Für jede individuelle Transaktion muß gelten:

Verschärfung zum "Strengen 2PL-Protokoll" zur Vermeidung von Schneeballeffekten beim Zurücksetzen:Keine Schrumpfungsphase, alle Sperren werden bei EOT freigegeben.

1. Jedes von einer Transaktion betroffene Objekt muß vorher entsprechend gesperrt werden.

2. Eine Transaktion fordert eine Sperre, die sie besitzt, nicht erneut an.

3. Eine Transaktion muß solange warten, bis es eine erforderliche Sperre entsprechend der Verträglichkeitstabelle erhalten kann.

4. Jede Transaktion durchläuft 2 Phasen:

- in Wachstumsphase werden Sperren angefordert, aber nicht freigegeben- in Schrumpfungsphase werden Sperren freigegeben, aber nicht angefordert

5. Bei EOT (Transaktionsende) muß eine Transaktion alle ihre Sperren zurückgeben.

Page 37: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Beispiel für 2PL-Verzahnung

T1 T2

BOTlockX(A)read(A)write(A)

BOTlockS(A) T2 muß warten

lockX(B)read(B)unlockX(A) T2 wecken

read(A)lockS(B) T2 muß warten

write(B)unlock(B) T2 wecken

read(B)commit

unlockS(A)unlockS(B)commit

T1: Modifikation von A und B(z.B. Umbuchung)

T2: Lesen von A und B(z.B. Addieren der Salden)

Page 38: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Verklemmungen (Deadlocks)

Sperrbasierte Synchronisationsmethoden können (unvermeidbar) zu Verklemmungen führen:Gegenseitiges Warten auf Freigabe von Sperren

T1 T2

BOTlockX(A)

BOTlockS(B)read(B)

read(A)write(A)lockX(B) T1 muß auf T2 warten

lockS(A) T2 muß auf T1 warten=> Deadlock

T1: Modifikation von A und B(z.B. Umbuchung)

T2: Lesen von B und A(z.B. Addieren der Salden)

Transaktionen leicht modifiziert:

Page 39: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Strategien zur Erkennung und Vermeidung von Verklemmungen

1. Wartegraph hat Zyklen

T1 T2

T3

w = wartet aufw w

w T4w Nach Erkennen eines Zyklus muß

Verklemmung durch Zurücksetzen einer geeigneten Transaktion beseitigt werden.

2. Preclaiming - Vorabforderung aller SperrenBeginn einer Transaktion erst, nachdem die für diese Transaktion insgesamt erforderlichen Sperren erfolgt sind.Problem: Vorab die erforderlichen Sperren erkennen

3. ZeitstempelTransaktionen werden durch Zeitstempel priorisiert. Zurücksetzen statt Warten, wenn T1 Sperre fordert, T2 aber Sperre erst freigeben muß:

• Strategie Wound-wait: Abbruch von T2, falls T2 jünger als T1, sonst warten

• Strategie Wait-die: Abbruch von T1, wenn T1 jünger als T2, sonst warten

Page 40: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Zugriff auf Daten in Progr.sprachen: Embedded SQL#include <stdio.h>/*Kommunikationsvariablen deklarieren */

exec sql begin declare section;varchar user_passwd[30];int exMatrNr;

exec sql end declare section;exec sql include SQLCA;main() {

printf("Name/Password:");scanf("%", user_passwd.arr);

Page 41: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

user_passwd.len=strlen(user_passwd.arr);exec sql wheneversqlerror goto error;exec sql connect :user_passwd;while (1) {

printf("Matrikelnummer (0 zum beenden):");scanf("%d", &ecMatrNr);if (!exMatrNr) break;exec sql delete from Studenten

where MatrNr= :exMatrNr;}exec sql commit work release;exit(0);

Page 42: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

error:exec sql whenever sqlerror continue;exec sql rollback work release;printf(“Fehler aufgetreten!\n");exit(-1);}

Page 43: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Anfragen in Anwendungsprogrammen

genau ein Tupel im Ergebnis

exec sql select avg (Semester)into :avgsemfrom Studenten;

Page 44: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Anfragen in Anwendungsprogrammen• mehrere Tupel im Ergebnis

SatzorientierteProgrammiersprache

mengenorientiertesDBMS

1. Anfrage

3. Tupel sequentiell verarbeiten

4. Cursor/Iterator schließen

2. Anfrage auswerten, Ergebnistupel im Cursor/Iterator/ResultSet bereitstellen

Page 45: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Cursor-Schnittstelle in SQL1. exec sql declare c4profs cursor for

select Name, Raum from Professoren

where Rang=‘C4‘;

2. exec sql open c4profs;

3. exec sql fetch c4profs into :pname, :praum;

4. exec sql close c4profs;

Page 46: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Impedance MismatchDatenmodellierungsform in

Programmiersprachen paßt nicht zu Form in Datenbanken

Programmiersprachen: Record/Tupelorientiert Mit hoher Frequenz einfache

Operationen durchführenDatenbanksysteme: Mengenorientiert

Mit niedriger Frequenz komplexe Operationendurchführen

Page 47: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Probleme relationaler Datenbanktechnologie

Zwar methodisch saubere aber schwierig zu lernende manuelle Umsetzung des Entwurfsmodells (ERM) in das Implementierungsmodell

Impedance MismatchJoins bei Navigierendem Zugriff sehr

aufwendigSprache für Integritätsbedingungen meist

schwach (hier nicht vertieft)

Page 48: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Zusammenfassung, Kernpunkte

Anfragesprachen: SQLMehrbenutzerbetrieb und SperrenTransaktionenAnbindung an ProgrammiersprachenProbleme der relationalen

Datenbanktechnologie

Page 49: Objektorientierte Datenbanken zBeim vorigen Mal: yArchitektur von DB-Systemen yGrundlagen der Entity-Relationship-Modellierung yProbleme beim Übergang.

Was kommt beim nächsten Mal?

Objektorientierte Modellierung