uni:8:dbs2:zusammenfassung
This is an old revision of the document!
−Table of Contents
Zusammenfassung
Grundbegriffe
Anforderungen (Codd)
- Integration einheitlicher Zugriff auf alle Daten einer Anwendung
- Operationen auf den Daten (ändern, löschen, …)
- Data Dictionary Schema anschauen
- Benutzersicheten views
- Konsistenzüberwachung bei Änderung
- Zugriffskontrolle
- Transaktionen
- Synchronisation (Mehrbenutzersystem)
Ebenen
Anwendungen (mehrere) | |
Externe Ebene | Views (mehrere) |
---|---|
↓↓ Logische Datenunabhängigkeit ↓↓ | |
Konzeptionelle Ebene | |
↓↓ Physische Datenunabhängigkeit ↓↓ | |
Interne Ebene | Speicherformat |
ACID
- Atomic (Wenn, dann wird man als ganzes abgebrochen)
- Consistency (Konsistenter Zystand → Konsistenter Zustand)
- Isolation (Man muss sich aleine fühlen)
- Durability (Abgeschlossene Transaktionen sind von dauer)
Synchronisation
Serialisierungs-Graph
x | y | z | ← Attribute |
---|---|---|---|
r1 | w2 | r1 | ← OperationTransaktion |
r2 | r3 | w1 | |
w2 | w3 | r4 | |
w3 |
Spaltenweise von oben nach unten die wr(x),rw(x),ww(x)-Paare finden
Anomalien
Lost update
t1 | r(x) | w(x) | |
---|---|---|---|
t2 | w(x) |
Dirty read/write
t1 | w(x) | w(x) | |
---|---|---|---|
t2 | r(x) |
Non-repeatable read
t1 | r(x) | r(x) | |
---|---|---|---|
t2 | w(x) |
Phantom-Problem
Non-repeatable read mit Aggregiertem read
Eigenschaften von Schedules
Eigenschaften eines Schedules:
Schedule | Beschreibung |
---|---|
allgemein | Durcheinander |
seriell | Blockform |
serialisierbar | allgemein + seriell (Zyklenfrei) |
rücksetzbar | commit erst nach commit von denen ich gelesen habe |
ohne kaskadiertes Rollback | Keine Daten einer laufenden TA lesen |
strikt | Keine Daten einer laufenden TA lesen/schreiben |
Eigenschaften zwischen Schedules:
Schedule | Beschreibung |
---|---|
konfliktäquivalent | Gleiche Abhängigkeitsmengen |
Locking
Verfahren
(Voll)
X | |
---|---|
X | ![]() |
RX
R | X | |
---|---|---|
R | ![]() | ![]() |
X | ![]() | ![]() |
RUX
- U: update/lesen
^ ^ R ^ U ^ X ^
R | ![]() | ![]() | ![]() |
---|---|---|---|
U | ![]() | ![]() | ![]() |
X | ![]() | ![]() | ![]() |
Übergänge:
- U → X: Möchte jetzt schreiben
RAX
- A: = U (update/lesen)
R | A | X | |
---|---|---|---|
R | ![]() | ![]() | ![]() |
A | ![]() | ![]() | ![]() |
X | ![]() | ![]() | ![]() |
Übergänge:
- A → X: Möchte jetzt schreiben
RIX
Auf oberer Ebene (Tabelle):
R | X | IR | IX | RIX | |
---|---|---|---|---|---|
R | ![]() | ![]() | ![]() | ![]() | ![]() |
X | ![]() | ![]() | ![]() | ![]() | ![]() |
IR | ![]() | ![]() | ![]() | ![]() | ![]() |
IX | ![]() | ![]() | ![]() | ![]() | ![]() |
RIX | ![]() | ![]() | ![]() | ![]() | ![]() |
Überprüfung auf unterer Ebene nötig |
---|
- Obere Ebene hat …
- R
- X
- Untere Ebene hat …
- R ⇒ IR
- X ⇒ IX
- Obere Ebene hat R, untere Ebene hat X …
- RIX (mix aus R und IX)
Auf unterer Ebene (Tupel): RX/RUX/RAX
RAC
- A Änderung Vneu im cache
- C Valt wird noch von alten Lesern gelesen
R | A | C | |
---|---|---|---|
R | ![]() | ![]() | ![]() |
A | ![]() | ![]() | ![]() |
C | ![]() | ![]() | ![]() |
Übergänge:
- A → C: Bei commit
Eigenschaften
Verfahren | Kein Verhungern | Deadlockfrei selbes Obj. | Deadlockfrei anderes Obj. | Schedule | Bemerkung |
---|---|---|---|---|---|
RX | ![]() | ![]() | ![]() | kaskadierte freies rücksetzen | Parallele Leser |
RUX | ![]() | ![]() | ![]() | Parallele Leser | |
RAX | ![]() | ![]() | ![]() | Zwar nach kein verklemmen, dafür verhungern für mehr Parallelität |
uni/8/dbs2/zusammenfassung.1437149606.txt.gz · Last modified: 2020-11-18 18:10 (external edit)