Skip to content
Snippets Groups Projects
Verified Commit f8706749 authored by jonahbeneb02's avatar jonahbeneb02
Browse files

Add tutorial sheet sources

So far only new ones, or ones with changes from Swenja
parent 180909db
No related branches found
No related tags found
No related merge requests found
\documentclass{article}
% Unicode / UTF-8 Unterstützung
% Anführungszeichen
\usepackage{csquotes}
% Mathematik
\usepackage{amsmath}
\usepackage{amsthm}
\theoremstyle{plain}
\newtheorem*{lemma*}{Lemma}
\usepackage{microtype}
\usepackage{enumitem}
\usepackage{amsmath}
%\usepackage{gensymb} %für das degreeZeichen
\usepackage{multirow}
% Bilder
\usepackage{graphicx}
\usepackage{caption}
\usepackage{tikz}
\usetikzlibrary{positioning,shadows,shapes,arrows,arrows.meta}
\usepackage{pgf}
\usepackage{hyperref}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{forest}
\useforestlibrary{linguistics}
\lstset{ %
% Rahmen
% frame=L,
% Titel mit Name. Alternativ auch title=\lstname
%caption=\lstname,
% Zeilen Nummerierung
numberstyle=\tiny\color{darkgray},
numbers=left,
numbersep=3pt,
% Generell für Text
basicstyle=\footnotesize\ttfamily,
keepspaces=true,
% Text style je nach Typ
keywordstyle=\color{orange},
commentstyle=\color{gray},
stringstyle=\color{blue},
% Damit String Leerzeichen normal sind
showstringspaces=false,
% 10% Grau Hintergrundfarbe
backgroundcolor=\color{gray!10},
}
\usepackage[left=3.0cm,right=2.5cm,top=4cm,bottom=3cm]{geometry}
\begin{document}
\section*{Minimale Hülle}
\subsection*{Motivation}
\begin{itemize}
\item gibt viele unterschiedliche äquivalente Mengen von funktionalen Abhängigkeiten
\item Mengen sind äquivalent, wenn ihre Hüllen gleich sind, d.h. $F^+ = G^+$
\item Diese Hüllen enthalten in der Regel viele funktionale Abhängigkeiten, sodass der Umgang sehr unübersichtlich wird
\item diese große, redundante Menge wird sich nachteilig auf die Überprüfung von Konsistenzüberprüfungen bei Datenbankmodifikationen aus
\item deshalb Interesse an kleinstmöglicher noch äquivalenter Menge von FDs
\end{itemize}
\subsection*{Definition}
\begin{itemize}
\item Folgende drei Eigenschaften müssen erfüllt sein:
\begin{enumerate}
\item die rechte Seite einer funktionalen Abhängigkeit (FD) besteht nur aus einem einzelnen Attribut
\item alle Attribute auf einer linken Seite sind sinnvoll / nicht redundant\\
(für keine FD $X \rightarrow A$ in $F$, wenn $Z \subset X$, ist $F \setminus \{X \rightarrow A \} \cup \{Z \rightarrow A \}$ äquivalent zu $F$)
\item alle Abhängigkeiten sind sinnvoll / nicht redundant\\
(für keine FD $X \rightarrow A$ in $F$ ist $F \setminus \{X \rightarrow A\}$ äquivalent zu $F$)
\end{enumerate}
\item Die minimale Hülle ist nicht eindeutig.
\end{itemize}
\subsection*{Minimale Hülle erstellen}
\begin{enumerate}
\item Dekomposition,\\
Bsp: $A \rightarrow BC$ wird zu $A \rightarrow B, A \rightarrow C$
\item überflüssige Attribute finden, durch Attributhüllen,\\
Bsp: $A \rightarrow C, AE \rightarrow C$, wird zu $A \rightarrow C$ (E ist unnötig für die Bestimmung von C, wegen $A^+ = \{A,C\}$, $A \rightarrow C$ kann in einer Menge nicht doppelt vorkommen)
\item überflüssige Abhängigkeiten finden, durch Transitionen\\
Bsp: $A \rightarrow C, C \rightarrow B, A \rightarrow B$ wird zu $A \rightarrow C, C \rightarrow B$ ($A \rightarrow B$ ist redundant durch die Transition von $A \rightarrow C$ und $C \rightarrow B$ )
\end{enumerate}
\subsection*{\textcolor{blue}{Aufgabe:}}
1. Erstellen Sie die minimale Hülle zur Relation:\\
$R(ABCDE)$ mit $FD(R) = \{ ABC \rightarrow E, BE \rightarrow D, C \rightarrow ABE, DE \rightarrow BC, E \rightarrow CD \}$
\newpage
\section*{gute Zerlegung}
Eine gute Zerlegung ist verlustlos und abhängigkeitserhaltend.
\subsection*{Motivation}
\begin{itemize}
\item bei schlechten Relationsschemata können Anomalien auftreten (Update, Löschen, Einfügen)
\item passiert wenn nicht "zusammenpassende" Informationen in einer Relation gebündelt sind
\item um soetwas zu revidieren gibt es Normalisierungen
\item dafür werden Relationen häufig aufgespalten (Infos, die zusammengehören in eine Relation)
\item zwei Korrektheitskriterien: Verlustlosigkeit und Abhängigkeitsbewahrung
\end{itemize}
\subsection*{Abhängigkeitsbewahrung}
$F_R = (F_{R_1} \cup ... \cup F_{R_n})$ bzw. $F_R^+ = (F_{R_1} \cup ... \cup F_{R_n})^+$\\
\subsection*{Verlustlosigkeit}
Zerlegung von $R$ mit $FD(R)$ in $R_1$ und $R_2$ ist verlustlos wenn:\\
$$(R_1 \cap R_2 \rightarrow R_1 \setminus R_2) \in FD(R)^+$$
oder
$$(R_1 \cap R_2 \rightarrow R_2 \setminus R_1) \in FD(R)^+$$
\subsection*{gute Zerlegungen finden}
\begin{itemize}
\item Strategie 1: Ausprobieren und Korrektheitskriterien überprüfen
\item Strategie 2: Algorithmus
\begin{itemize}
\item F ist minimale Hülle
\item für jede $FD(X \rightarrow A)$ in F:
\begin{itemize}
\item Erstelle eine Relation aus den Attributen der FD, Bsp: $X \rightarrow A$ wird zu $R_x(XA)$
\item wenn in der Relation kein Schlüssel enthalten ist, füge ihn hinzu, Bsp: Schlüssel ist $\{X,Y\}$, $R_x \cup \{X,Y\} \Rightarrow R_x(AXY)$
\item wenn es eine Relation $R_d$ gibt die eine Untermenge einer anderen Relation ist $\Rightarrow$ entferne $R_d$, Bsp: $R_x(AXY) \subset R_y(ABCXY)$
\end{itemize}
\item Die FDs werden dann den entsprechenden Relationen zugeordnet.
\item Die entstehenden Relationen sind per Konstruktion abhängigkeitserhaltend und verlustlos.
\end{itemize}
\end{itemize}
\subsection*{\textcolor{blue}{Aufgaben:}}
\begin{enumerate}
\item[2.] Finden Sie eine gute Zerlegung für:\\
$R(ABCDEG)$ mit $FD(R) = \{ C \rightarrow A, ACD \rightarrow B, CE \rightarrow G, CG \rightarrow D \}$\\
(Es ist die minimale Hülle von $R$ gegeben.)
\item[3.] Zeigen Sie das sie verlustlos und abhängigkeitserhaltend ist.
\end{enumerate}
\end{document}
NoSQL.tex 0 → 100644
\documentclass{article}
% Anführungszeichen
\usepackage{csquotes}
% Mathematik
\usepackage{amsmath}
\usepackage{amsthm}
\theoremstyle{plain}
\newtheorem*{lemma*}{Lemma}
\usepackage{microtype}
\usepackage{enumitem}
\usepackage{amsmath}
\usepackage{amssymb}
%\usepackage{gensymb} %für das degreeZeichen
\usepackage{multirow}
% Bilder
\usepackage{graphicx}
\usepackage{caption}
\usepackage{tikz}
\usetikzlibrary{positioning,shadows,shapes,arrows,arrows.meta}
\usepackage{pgf}
\usepackage{hyperref}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{forest}
\useforestlibrary{linguistics}
\usepackage{ulem}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{er,positioning}
\tikzstyle{isaUp} = [isosceles triangle, isosceles triangle apex angle=60,
shape border rotate=90,
draw, black, minimum size=3em]
\tikzstyle{isaDown} = [isosceles triangle, isosceles triangle apex angle=60,
shape border rotate=-90,
draw, black, minimum size=3em]
\lstset{ %
% Rahmen
% frame=L,
% Titel mit Name. Alternativ auch title=\lstname
%caption=\lstname,
% Zeilen Nummerierung
numberstyle=\tiny\color{darkgray},
numbers=left,
numbersep=3pt,
% Generell für Text
basicstyle=\footnotesize\ttfamily,
keepspaces=true,
% Text style je nach Typ
keywordstyle=\color{orange},
commentstyle=\color{gray},
stringstyle=\color{blue},
% Damit String Leerzeichen normal sind
showstringspaces=false,
% 10% Grau Hintergrundfarbe
backgroundcolor=\color{gray!10},
}
\usepackage[left=3.0cm,right=2.5cm,top=4cm,bottom=3cm]{geometry}
\begin{document}
\section*{NoSQL}
\subsection*{\textcolor{blue}{Aufgaben:}}
\begin{enumerate}
\item Was bedeutet die Abkürzung NoSQL?
\item Was sind Vorteile von NoSQL Datenbanken?
\item Wie kann man den folgenden Sachverhalt in MongoDB einfügen?
\begin{tabular}{|c|c|c|c|}
Tier & Ordnung & Familie & Art \\
\hline
Hauskatze & Raubtiere & Katzen & Hauskatze \\
Haushund & Raubtiere & Hunde & Wolf \\
... & ... & ... & ..
\end{tabular}
\item Wie kann man in deiner Datenbank dann alle Raubtiere ausgeben?
\item Übersetze diesen SQL-Ausdruck nach MQL:
\begin{lstlisting}[language=SQL,numbers=none]
DELETE FROM Tier WHERE tier = "Hauskatze";
\end{lstlisting}
\item Wie kann man die Anzahl der Tiere in den verschiedenen Ordnungen herausfinden?
% db.getCollection("tiere").aggregate([{
% $group: {
% _id: "$ordnung",
% count: {$count: {} }
% }
% }])
\item Wann sollten Daten denormalisiert gespeichert werden, und wann nicht?
\end{enumerate}
\end{document}
\documentclass{article}
% Anführungszeichen
\usepackage{csquotes}
% Mathematik
\usepackage{amsmath}
\usepackage{amsthm}
\theoremstyle{plain}
\newtheorem*{lemma*}{Lemma}
\usepackage{microtype}
\usepackage{enumitem}
\usepackage{amsmath}
\usepackage{amssymb}
%\usepackage{gensymb} %für das degreeZeichen
\usepackage{multirow}
% Bilder
\usepackage{graphicx}
\usepackage{caption}
\usepackage{tikz}
\usetikzlibrary{positioning,shadows,shapes,arrows,arrows.meta}
\usepackage{pgf}
\usepackage{hyperref}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{forest}
\useforestlibrary{linguistics}
\usepackage{ulem}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{er,positioning}
\tikzstyle{isaUp} = [isosceles triangle, isosceles triangle apex angle=60,
shape border rotate=90,
draw, black, minimum size=3em]
\tikzstyle{isaDown} = [isosceles triangle, isosceles triangle apex angle=60,
shape border rotate=-90,
draw, black, minimum size=3em]
\lstset{ %
% Rahmen
% frame=L,
% Titel mit Name. Alternativ auch title=\lstname
%caption=\lstname,
% Zeilen Nummerierung
numberstyle=\tiny\color{darkgray},
numbers=left,
numbersep=3pt,
% Generell für Text
basicstyle=\footnotesize\ttfamily,
keepspaces=true,
% Text style je nach Typ
keywordstyle=\color{orange},
commentstyle=\color{gray},
stringstyle=\color{blue},
% Damit String Leerzeichen normal sind
showstringspaces=false,
% 10% Grau Hintergrundfarbe
backgroundcolor=\color{gray!10},
}
\usepackage[left=3.0cm,right=2.5cm,top=4cm,bottom=3cm]{geometry}
\begin{document}
\section*{Physical Representation}
\subsection*{\textcolor{blue}{Aufgaben:}}
\begin{enumerate}
\item Für eine Datei kann es mehrere ... geben: % Ordered Indices
\begin{enumerate}
\item Primärindices
\item Sekundärindices
\end{enumerate}
\item Folgender Sachverhalt soll gespeichert werden:
\begin{itemize}
\item Britney Ciccone aus Los Angeles hat einen song namens ``Me against the world''
\item Madonna aguilera aus New York hat auch einen song namens ``Me against the world''
\item Andrea Spears aus Rom hat einen song namens ``A great big music''
\end{itemize}
Beachten Sie folgende Struktur: title char(30), artist char(30), city char(30)
\begin{enumerate}
\item Stellen Sie den Sachverhalt als Fixed-Length-Record da.
\item Stellen Sie den Sachverhalt als Variable-Length-Record da.
\item Stellen Sie den Sachverhalt mithilfe von Pointern da.
\end{enumerate}
\item Für welche Arten von Abfragen eigenen/eignet sich:
\begin{enumerate}
\item B\textsuperscript{+}-Bäume
\item Hashing
% When searching by key
\end{enumerate}
\end{enumerate}
\end{document}
\documentclass{article}
% Anführungszeichen
\usepackage{csquotes}
% Mathematik
\usepackage{amsmath}
\usepackage{amsthm}
\theoremstyle{plain}
\newtheorem*{lemma*}{Lemma}
\usepackage{microtype}
\usepackage{enumitem}
\usepackage{amsmath}
\usepackage{amssymb}
%\usepackage{gensymb} %für das degreeZeichen
\usepackage{multirow}
% Bilder
\usepackage{graphicx}
\usepackage{caption}
\usepackage{tikz}
\usetikzlibrary{positioning,shadows,shapes,arrows,arrows.meta}
\usepackage{pgf}
\usepackage{hyperref}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{forest}
\useforestlibrary{linguistics}
\usepackage{ulem}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{er,positioning}
\tikzstyle{isaUp} = [isosceles triangle, isosceles triangle apex angle=60,
shape border rotate=90,
draw, black, minimum size=3em]
\tikzstyle{isaDown} = [isosceles triangle, isosceles triangle apex angle=60,
shape border rotate=-90,
draw, black, minimum size=3em]
\lstset{ %
% Rahmen
% frame=L,
% Titel mit Name. Alternativ auch title=\lstname
%caption=\lstname,
% Zeilen Nummerierung
numberstyle=\tiny\color{darkgray},
numbers=left,
numbersep=3pt,
% Generell für Text
basicstyle=\footnotesize\ttfamily,
keepspaces=true,
% Text style je nach Typ
keywordstyle=\color{orange},
commentstyle=\color{gray},
stringstyle=\color{blue},
% Damit String Leerzeichen normal sind
showstringspaces=false,
% 10% Grau Hintergrundfarbe
backgroundcolor=\color{gray!10},
}
\usepackage[left=3.0cm,right=2.5cm,top=4cm,bottom=3cm]{geometry}
\begin{document}
\section*{Abfrageoptimierung}
\subsection*{\textcolor{blue}{Aufgaben:}}
\begin{enumerate}
\item Forme folgende SQL Statements in Relationale Algebra um.
\begin{lstlisting}[language=SQL,numbers=none]
SELECT Fluegelspannweite
FROM Prinzessin, Drache, bewacht
WHERE DrachenID = DID
AND PrinzessinnenID = PID
AND PID NOT IN (
SELECT PID
FROM Prinzessin
WHERE Koenigreich = "far far away"
);
\end{lstlisting}
a) Die Flügelspannweite aller Drachen, die eine Prinzessin bewachen, die nicht aus far far away kommt.
\begin{lstlisting}[language=SQL,numbers=none]
SELECT Name
FROM Tier T, frisst F, Nahrung N
WHERE N.NahrungsID = F.NahrungsID
AND T.TierID = F.TierID
AND N.NahrungsID > 5
AND T.Art = Panda
AND T.Alter = 2;
\end{lstlisting}
b) Den Namen aller zweijährigen Pandas, die Nahrung fressen, deren ID größer als 5 ist.
\item Erstelle für die Ausdrücke in relationaler Algebra aus 1. den passenden Abfragebaum.
\item Optimiere die Abfragebäume
\end{enumerate}
\clearpage
\section*{Zusätzliches Material:}
\section*{Optimierung von Abfragen}
\begin{enumerate}
\item Umwandeln in relationale Algebra
\item Anwenden von Umformungen der Optimierungsschritte
\end{enumerate}
\subsection*{SQL zu relationaler Algebra}
\begin{tabular}{l|l}
\textbf{SQL} & \textbf{relationale Algebra} \\ \hline
SELECT (DISTINCT) & $\Pi$ \\
FROM Relation & Relationen, Kreuzprodukte \\
WHERE & $\sigma$ \\
JOIN & $\bowtie$ \\
NOT IN & $\setminus$ \\
UNION & $\cup$ \\
INTERSECT & $\cap$ \\
... & ...
\end{tabular}
\subsection*{Abfragebaum}
\begin{itemize}
\item für Ausdrücke in relationaler Algebra
\item Operationen in den Knoten
\item Relationen in den Blättern
\end{itemize}
\subsection*{Optimierungsschritte}
\begin{itemize}
\item unnötige Joins vermeiden
\item Join statt Kreuzprodukt
\item Selektionen so früh wie möglich
\item Projektionen so früh wie möglich
\item Selektionen mit Verundung auf einzelne Selektionen aufteilen, d.h.: $\sigma_{A \land B}(R) \rightarrow \sigma_{A}(\sigma_{B}(R))$
\end{itemize}
\end{document}
\documentclass{article}
% Anführungszeichen
\usepackage{csquotes}
% Mathematik
\usepackage{amsmath}
\usepackage{amsthm}
\theoremstyle{plain}
\newtheorem*{lemma*}{Lemma}
\usepackage{microtype}
\usepackage{enumitem}
\usepackage{amsmath}
\usepackage{amssymb}
%\usepackage{gensymb} %für das degreeZeichen
\usepackage{multirow}
% Bilder
\usepackage{graphicx}
\usepackage{caption}
\usepackage{tikz}
\usetikzlibrary{positioning,shadows,shapes,arrows,arrows.meta}
\usepackage{pgf}
\usepackage{hyperref}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{forest}
\useforestlibrary{linguistics}
\usepackage{ulem}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{er,positioning}
\tikzstyle{isaUp} = [isosceles triangle, isosceles triangle apex angle=60,
shape border rotate=90,
draw, black, minimum size=3em]
\tikzstyle{isaDown} = [isosceles triangle, isosceles triangle apex angle=60,
shape border rotate=-90,
draw, black, minimum size=3em]
\lstset{ %
% Rahmen
% frame=L,
% Titel mit Name. Alternativ auch title=\lstname
%caption=\lstname,
% Zeilen Nummerierung
numberstyle=\tiny\color{darkgray},
numbers=left,
numbersep=3pt,
% Generell für Text
basicstyle=\footnotesize\ttfamily,
keepspaces=true,
% Text style je nach Typ
keywordstyle=\color{orange},
commentstyle=\color{gray},
stringstyle=\color{blue},
% Damit String Leerzeichen normal sind
showstringspaces=false,
% 10% Grau Hintergrundfarbe
backgroundcolor=\color{gray!10},
}
\usepackage[left=3.0cm,right=2.5cm,top=4cm,bottom=3cm]{geometry}
\begin{document}
\section*{Transaktionen}
\begin{align*}
H_1 &= \langle r_1(A), r_2(A), w_1(A), r_3(B), r_1(B), r_2(C), w_2(B) \rangle \\
H_2 &= \langle r_2(X), w_1(Y), r_3(Z), w_3(X), r_4(X), w_4(X), w_4(Z), w_1(Z) \rangle
\end{align*}
\subsection*{\textcolor{blue}{Aufgaben:}}
\begin{enumerate}
\item Geben Sie alle Konfliktpaare zu $H_1$ an.
\item Zeichnen Sie den Konfliktgraphen zu $H_1$.
\item Ist $H_1$ konflikt serialisierbar? Falls ja, geben Sie eine mögliche Serialisierung an. Falls nein, geben Sie an warum nicht.
\item Geben Sie alle Konfliktpaare zu $H_2$ an.
\item Zeichnen Sie den Konfliktgraphen zu $H_2$.
\item Ist $H_2$ konflikt serialisierbar? Falls ja, geben Sie eine mögliche Serialisierung an. Falls nein, geben Sie an warum nicht.
\item Zeichnen Sie den Verlauf des strengen 2PL. Orientieren Sie sich an der unten gegebenen Grafik.
\item Zeichnen Sie den Verlauf des konservativen 2PL. Orientieren Sie sich an der unten gegebenen Grafik.
\item Wie viele Transaktionen müssen mindestens an einer Verklemmung beteiligt sein?
\item Worauf muss man achten, wenn man eine entstandene Verklemmung auflöst, indem man die eine Transaktion "killt"?
\item Recherchieren Sie zwei einfache Verfahren zur Verklemmungsvermeidung.
\end{enumerate}
\begin{figure}[ht]
\centering
\includegraphics[width=0.5\textwidth]{2PL.pdf}
\caption{2PL}
\label{figure/2PL}
\end{figure}
\clearpage
\section*{Zusätzliches Material:}
\section*{Transaktionen (TA)}
\begin{itemize}
\item "Bündelung" mehrerer Datenbankoperationen, die in einem Mehrbenutzersystem ohne unerwünschte Einflüsse durch eine andere TA als Einheit fehlerfrei ausgeführt werden sollten
\item Folge von Datenverarbeitungsbefehlen (lesen, verändern, einfügen, löschen), die die Datenbasis von einem konsistenten Zustand in einen anderen - nicht notwenidigerweise unterschiedlichen - konsistenten Zustand übrführen
\item Transaktionsverwaltung muss - i.A. sehr viele - gleichzeitig (nebenläufig) ablaufende TAs verarbeiten und dabei die ACID-Eigenschaften einhalten
\end{itemize}
\section*{Konfliktpaare}
\begin{itemize}
\item Transaktion $T_i$ besteht aus folgenden elementaren Operationen:
\begin{itemize}
\item $r_i(A)$ zum Lesen des Datenobjekts A
\item $w_i(A)$ zum Schreiben des Datenobjekts A
\end{itemize}
\item Historie oder auch Schedule:
\begin{itemize}
\item Ablauf einer verzahnten Ausführung mehrerer TAs
\item spezielle Reihenfolge, in der Elementaroperationen verschiedener TAs ausgeführt werden
\end{itemize}
\item kann man auch paralellisieren, aber für Konfliktoperationen muss Reihenfolge festgelegt werden
\item Konfliktoperationen: solche Operationen, die bei unkontrollierter Nebenläufigkeit potentiell Inkonsistenzen verursachen können
\begin{itemize}
\item wenn zwei verschiedene TAs auf das gleiche Datenobjekt zugreien und mindestens eine davon das Objekt modifiziert
\item für $T_i$ und $T_j$ die beide auf ein Datenobjekt A zugreifen, sind folgende Operationen möglich:
\begin{itemize}
\item $r_i(A)$ und $r_j(A)$: Reihenfolge ist irrelevant, beide TAs lesen denselben Zustand (wenn sie ohne zwischenzeitliche Änderung von A aufeinander folgen)
\item $r_i(A)$ und $w_j(A)$: Konflikt, da $T_i$ entweder alten oder neuen Zustand liest
\item $w_i(A)$ und $r_j(A)$: Konflikt, analog zu eben
\item $w_i(A)$ und $w_j(A)$: Konflikt, Reihenfolge der Ausführung ist entscheidend für Zustand von A
\end{itemize}
\end{itemize}
\end{itemize}
\subsection*{Finden von Konfliktpaaren anhand einer Historie}
\begin{itemize}
\item von links nach rechts durchgehen, für jede Operation $x_i(A)$ prüfen:
\begin{itemize}
\item gibt es eine spätere Operation $y_j(A)$ sodass gilt:
\begin{itemize}
\item x oder y ist w (write) $\land$
\item $i \neq j$
\end{itemize}
\item wenn Bedingungen erfüllt sind, dann gibt es ein Konfliktpaar $x_i(A), y_j(A)$
\end{itemize}
\item wenn man aus den Konfliktpaaren den Konfliktgraphen herleiten möchte, empfehle ich die Reihenfolge der Historie im Paar beizubehalten
\end{itemize}
\subsection*{Erstellen eines Konfliktgraphen anhand von Konfliktpaaren}
\begin{itemize}
\item für jede TA: Erstelle einen Knoten gelabelt mit TA-Bezeichnung
\item für jedes Konfliktpaar $x_i(A), y_j(A)$:
\begin{itemize}
\item Zeichne eine gerichtete Kante vom Knoten i zu Knoten j
\item Label die Kante mit A
\end{itemize}
\end{itemize}
\begin{center}
\begin{tikzpicture}
\begin{scope}[every node/.style={circle,thick,draw}]
\node (1) at (0,0) {i};
\node (2) at (2,0) {j};
\end{scope}
\begin{scope}[>={Stealth[black]}]
\path [->] (1) edge node[above] {A} (2);
\end{scope}
\end{tikzpicture}
\end{center}
\section*{Serialisierbarkeit}
\begin{itemize}
\item Theorem: eine Historie $H$ ist genau dann serialisierbar, wenn der zugehörige Serialisierbarkeitsgraph $SG(H)$ azyklisch ist
\item eine mögliche Serialisierung der TAs entspricht einer topologischen Sortierung von $SG(H)$
\item unter topologischer Sortierung versteht man eine sequentielle Anordnung der TAs von $SG$ in der Form, dass keine TA $T_j$ vor einer TA $T_i$ steht, wenn es einen gerichteten Pfad von $T_i$ nach $T_j$ in $SG$ gibt
\item mögliche Serialisierung für obigen Graphen: $T_i,T_j$, andersrum wäre nicht möglich
\end{itemize}
\section*{Sperrbasierte Synchronisation}
\begin{itemize}
\item es wird während des laufenden Betriebs sichergestellt, dass die resultierende Historie serialisierbar bleibt
\item dies geschieht dadurch, dass eine TA erst nach Erhalt einer entsprechenden Sperre auf ein Objekt zugreifen kann
\item Zwei Sperrmodi, je nach Operation (read oder write):
\begin{itemize}
\item \textbf{S} (shared, read lock, Lesesperre): wenn TA $T_i$ eine S-Sperre für A besitzt, kann $T_i$ \textbf{read}(A) ausführen
\item mehrere TAs können gleichzeitig eine S-Sperre auf demselben Objekt besitzen
\item \textbf{X} (exclusiv, write loock, Schreibsperre): \textbf{write}(A) darf nur die \emph{eine} TA ausführen, die eine X-Sperre auf A besitzt
\item eine X-Sperre wird nur gewährt, wenn auf A noch keine Sperren existieren
\item eine S-Sperre wird \textbf{nicht} gewährt, wenn auf A eine X-Sperre existiert
\end{itemize}
\end{itemize}
\subsection*{Zwei-Phasen-Sperrprotokoll (2PL)}
\begin{itemize}
\item Serialisierbarkeit ist bei Einhaltung des 2PL durch den Scheduler gewährleistet
\item Anforderungen an eine individuelle TA:
\begin{enumerate}
\item jedes Objekt, das von TA benutzt werden soll, muss vorher entsprechend gesperrt sein
\item TA fordert Sperre, die es besitzt nicht erneut an
\item wenn Sperre wegen schon existierender Sperren anderer TAs nicht gesetzt werden können: TA in entsprechender Warteschlange - bis Sperre gewährt werden kann
\item zwei Phasen:
\begin{itemize}
\item \textbf{Wachstumsphase (W)}: alle Sperren werden angefordert, keine freigegeben
\item \textbf{Schrumpfungsphase (S)}: bisher erworbene Sperren werden freigegeben, keine angefordert
\end{itemize}
\item Bei TA-Ende (EOT) muss TA alle Sperren zurückgeben
\end{enumerate}
\end{itemize}
\begin{center}
\includegraphics[width=0.5\textwidth]{2PL.pdf}
\end{center}
\subsubsection*{strenges 2PL}
\begin{itemize}
\item Anforderungen 1-5 des 2PL bleiben erhalten
\item keine Schrumpfungsphase: alle Sperren werden erst zum EOT freigegeben
\end{itemize}
\subsubsection*{konservatives 2PL}
\begin{itemize}
\item Anforderungen 1-5 des 2PL bleiben erhalten
\item keine Wachstumsphase: benötigte Sperren werden zu Beginn der TA alle auf einmal gesetzt
\end{itemize}
\subsection*{Verklemmungen (Deadlocks)}
\begin{itemize}
\item Zustand, bei dem zyklische Wartesituationen zwischen mehreren TAs auftritt, wobei jede beteiligte TA auf Freigabe von Datenobjekten wartet, die eine andere beteiligte TA bereits exklusiv belegt hat~\footnote{\url{https://de.wikipedia.org/wiki/Deadlock_(Informatik)}}
\item \textbf{Beispiel}: $T_1$ und $T_2$ sind verklemmt, wenn:
\begin{itemize}
\item $T_1$ auf Freigabe einer Sperre durch $T_2$ wartet und
\item umgekehrt: $T_2$ auf Freigabe einer Sperre durch $T_1$ wartet
\item beide TAs sind blockiert
\end{itemize}
\item Verklemmungen können verhindert und vermieden werden
\item \textbf{Beispiel}: Kuchenessen
\begin{itemize}
\item \textbf{Option 1}: Jeder der Gäste hat bestimmte Kuchenstücke auf seinem Teller, die er essen darf.
\item \textbf{Option 2}: Es gibt eine Theke mit Kuchenstücken und man kann sich welche bestellen. Wenn zwei das gleiche haben wollen, interveniert der Bäcker.
\item Eins davon ist Verklemmungsverhinderung und das andere Verklemmungsvermeidung (Ich verrate aber nicht was, was ist)
\end{itemize}
\end{itemize}
\section*{Quellen}
wenn nicht anders gekennzeichnet:
\begin{itemize}
\item Alfons Kemper, André Eickler: Datenbanksysteme. Oldenbourg Verlag, München 2006, ISBN 978-3-486-57690-0
\end{itemize}
\end{document}
\documentclass{article}
% Anführungszeichen
\usepackage{csquotes}
% Mathematik
\usepackage{amsmath}
\usepackage{amsthm}
\theoremstyle{plain}
\newtheorem*{lemma*}{Lemma}
\usepackage{microtype}
\usepackage{enumitem}
\usepackage{amsmath}
\usepackage{amssymb}
%\usepackage{gensymb} %für das degreeZeichen
\usepackage{multirow}
% Bilder
\usepackage{graphicx}
\usepackage{caption}
\usepackage{tikz}
\usetikzlibrary{positioning,shadows,shapes,arrows,arrows.meta}
\usepackage{pgf}
\usepackage{hyperref}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{forest}
\useforestlibrary{linguistics}
\usepackage{ulem}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{er,positioning}
\tikzstyle{isaUp} = [isosceles triangle, isosceles triangle apex angle=60,
shape border rotate=90,
draw, black, minimum size=3em]
\tikzstyle{isaDown} = [isosceles triangle, isosceles triangle apex angle=60,
shape border rotate=-90,
draw, black, minimum size=3em]
\lstset{ %
% Rahmen
% frame=L,
% Titel mit Name. Alternativ auch title=\lstname
%caption=\lstname,
% Zeilen Nummerierung
numberstyle=\tiny\color{darkgray},
numbers=left,
numbersep=3pt,
% Generell für Text
basicstyle=\footnotesize\ttfamily,
keepspaces=true,
% Text style je nach Typ
keywordstyle=\color{orange},
commentstyle=\color{gray},
stringstyle=\color{blue},
% Damit String Leerzeichen normal sind
showstringspaces=false,
% 10% Grau Hintergrundfarbe
backgroundcolor=\color{gray!10},
}
\usepackage[left=3.0cm,right=2.5cm,top=4cm,bottom=3cm]{geometry}
\begin{document}
\section*{Wiederholung}
\subsection*{\textcolor{blue}{Aufgaben:}}
\begin{enumerate}
\item Woraus besteht ein Datenbanksystem?
\item Übersetze das folgende Entity-Relationship diagramm in das Relationale Modell. \\
\includegraphics[width=0.6\textwidth]{Wiederholung-ER-Diagramm.png}
\item Erstelle ein Entity-Relationship-Modell für den folgenden Zusammenhang: \\\\
Ein Musikstreamingdienst möchte Statistiken über das Hörverhalten seiner Anwender*innen führen, um Vorschläge generieren zu können. \\\\
Von einer Person sind Name und eine E-Mail-Adresse bekannt. \\
Sie kann sich Songs anhören, und Künstler*innen folgen. \\\\
Künstler*innen haben eine ID, und einen Künstlernamen. \\\\
Songs werden immer von einer oder mehreren Künstler*innen herausgebracht.
Sie können zu einem Album gehören, aber müssen nicht. \\\\
Ein Album hat einen Namen, ein Erscheinungsjahr, wurde von einer Künstler*in herausgegeben und hat eine ID.
\item
SCIENTIST(\underline{ScId}, Name, \dashuline{Field}, \dashuline{UniId}) \\
PAPER(\underline{PaperId}, Title, \dashuline{Field}) \\
AUTHOR(\dashuline{ScId}, \dashuline{PaperId}) \\
UNIVERSITY(\underline{UniId}, Name) \\
OFFERINGS(\underline{OffId}, \dashuline{UniId}, Field)
\\
\\
Formuliere folgende Aussagen in relationaler Algebra und in SQL:
\begin{enumerate}
\item Die Namen der Unis, an denen die Autor*innen des Papers mit dem Titel ``Analyzing Trends in Database Systems'' arbeiten.
\item Die Namen der Unis, an denen man nicht BWL studieren kann.
\end{enumerate}
\item Optimiere den Abfragebaum von 4a)
\item Erstelle in SQL ein View über der Aussage von 4b)
\item $ R = (A, B, C, D, E)$ \\
$FD(R) = \{ A \rightarrow B, C \rightarrow D, D \rightarrow E \}$ \\ \\
Warum ist $R$ nicht in 3. Normalform?
\item Zeige mit Hilfe der Armstrong Axiome, dass in $R$, $AC \rightarrow AE$ gilt
\item Ist dieser Ausführungsplan serialisierbar? \\
Als zwischenschritt ist es hilfreich, den Präzedenzgraphen zu zeichnen. \\
$r_1(x), w_1(y), r_2(y), w_3(x), w_3(y)$
\item Welche Aussagen sind richtig?
\begin{enumerate}
\item Spalten in Relationalen Datenbanken und Felder in Dokumentdatenbanken sind vergleichbare Konzepte
\item In NoSQL-Datenbanken sind Daten immer normalisiert gespeichert
\item NoSQL-Datenbanken bieten nur andere Zugriffsmöglichkeiten als SQL.
\item Zusammenhängende Daten in einem Dokument zu speichern macht Zugriffe langsamer
\item Dokument-Datenbanken haben kein festes Schema
\end{enumerate}
\end{enumerate}
\end{document}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment