Synchronisation

This commit is contained in:
Marco Ammon 2019-02-12 13:31:31 +01:00
parent 7f97bbc520
commit 613cb7da22
3 changed files with 55 additions and 1 deletions

View File

@ -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}

Binary file not shown.

View File

@ -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}