diff --git a/fig/zustandsuebergangsdiagramm.tex b/fig/zustandsuebergangsdiagramm.tex new file mode 100644 index 0000000..d94fe9d --- /dev/null +++ b/fig/zustandsuebergangsdiagramm.tex @@ -0,0 +1,18 @@ +\begin{tikzpicture}[shorten >=1pt,node distance=3cm,on grid,auto] + + \node[rectangle state,initial] (q_0) {potentiell}; + \node[rectangle state] (q_1) [right=3.8cm of q_0] {aktiv}; + \node[rectangle state] (q_2) [below=1.5cm of q_1] {abgeschlossen}; + \node[rectangle state, accepting] (q_3) [right=5cm of q_2] {persistent}; + \node[rectangle state](q_4) [above right=1.5cm and 2.5cm of q_1] {gescheitert}; + \node[rectangle state](q_5) [right=5cm of q_1] {wiederholbar}; + \node[rectangle state, accepting](q_6) [right=5cm of q_4] {aufgegeben}; + \path[->] + (q_0) edge node {inkarnieren} (q_1) + (q_1) edge node {beenden} (q_2) + (q_2) edge node {festschreiben} (q_3) + (q_1) edge node {abbrechen} (q_4) + (q_4) edge node {zurücksetzen} (q_6) + (q_4) edge node {zurücksetzen} (q_5) + (q_5) edge node {neustarten} (q_1); +\end{tikzpicture} \ No newline at end of file diff --git a/zusammenfassung.pdf b/zusammenfassung.pdf index a3c335e..e9d05d5 100644 Binary files a/zusammenfassung.pdf and b/zusammenfassung.pdf differ diff --git a/zusammenfassung.tex b/zusammenfassung.tex index 1a6dd96..e5f7c97 100644 --- a/zusammenfassung.tex +++ b/zusammenfassung.tex @@ -20,7 +20,11 @@ \usepackage{pdflscape} \usepackage{tikz} \usetikzlibrary{positioning} -\usetikzlibrary{arrows.meta} +\usetikzlibrary{arrows} +\usetikzlibrary{automata} +\usetikzlibrary{shapes} +\usetikzlibrary{calc} +\usetikzlibrary{decorations.markings} \usepackage{datetime} \usepackage{xcolor} @@ -51,6 +55,8 @@ \setlist[enumerate,1]{label={\alph*)}} \setlist[enumerate,2]{label={\roman*)}} +\tikzset{rectangle state/.style={draw,rectangle}} + \title{Zusammenfassung IDB} \author{Marco Ammon} \date{\today} @@ -275,6 +281,36 @@ \item \begriff{Isolation} (gegenüber anderen Zugriffen auf DB) \item \begriff{Dauerhaftigkeit} (auch nach Fehler bleiben erfolgreiche Transaktionen bestehen) \end{itemize} + \item \enquote{Lebenszyklus} einer Transaktion\\ + \input{fig/zustandsuebergangsdiagramm.tex} + \item \begriff{Anomalien} im \begriff{Mehrbenutzerbetrieb}: \begin{itemize} + \item \begriff{dirty read}: Lesen von nicht freigegeben Änderungen: $w_1[x], r_2[x]$, erst danach Commit / Rollback + \item \begriff{dirty write}: Überschreiben von nicht freigegebenen Änderungen: $w_1[x], w_2[x]$, erst danach Commit / Rollback + \item \begriff{non-repeatable read}: Änderung nachdem gelesen wurde: $r_1[x], w_2[x]$, erst danach Commit / Rollback + \item \begriff{Phantom-Problem}: Ändern/Anlegen eines Tupels, das gelesenes Prädikat $P$ erfüllt: $r_1[P], w_1[y\in P]$, erst danach Commit/Rollback + \end{itemize} + \item \begriff{Serialisierbarkeitstheorie}: \begin{itemize} + \item Ablauf ist \begriff{serialisierbar}, wenn es einen \begriff{äquivalenten} \wichtig{seriellen} Ablauf seiner Transaktionen gibt + \item Äquivalenz von Abläufen $G$, $H$, wenn für jedes Datenobjekt $A$ gilt ($<$ $\widehat{=}$ \enquote{vor}): + \begin{align*} + r_i[A] <_H w_j[A] &\Leftrightarrow r_i[A] <_G w_j[A]\\ + w_i[A] <_H r_j[A] &\Leftrightarrow w_i[A] <_G r_j[A]\\ + w_i[A] <_H w_j[A] &\Leftrightarrow w_i[A] <_G w_j[A] + \end{align*} + \item \begriff{Abhängigkeitsgraph} hat \wichtig{keine} Zyklen $\Rightarrow$ Ablauf serialisierbar + \end{itemize} + \item \begriff{Sperrverfahren} mittels \begriff{Sperrtabelle}: \begin{itemize} + \item Sperrung muss \wichtig{vor} Zugriff erfolgen + \item Transaktionen fordern Sperre nicht erneut an + \item Sperren müssen beachtet werden + \item erst am Ende einer Transaktion dürfen Sperren freigegeben werden + \item \begriff{X-Sperre}: exklusiv, für Änderungen notwendig + \item \begriff{S-Sperre}: geteilt, für Lesen notwendig + \item \begriff{IX-Sperre}: exklusiv, zeigt Sperren auf feingranularerer Ebene an + \item \begriff{IS-Sperre}: geteilt, zeigt Sperren auf feingranularerer Ebene an + \item \begriff{SIX-Sperre}: S + IX, wenn alle Tupel gelesen, aber nur einige geändert werden + \item \begriff{Top-Down}-Erwerb, \begriff{Bottom-Up}-Freigabe der Sperren + \end{itemize} \end{itemize} \section{Speicherung}