diff --git a/.gitignore b/.gitignore index e0e6f7d..1371594 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ *.fls +*.lof +*.swp* *.pdf *.aux *.out diff --git a/IDB.tex b/IDB.tex index 7072382..376aba4 100644 --- a/IDB.tex +++ b/IDB.tex @@ -60,6 +60,7 @@ \begin{document} \tableofcontents +\listoffigures \newpage \include{./Speicherung} \include{./Transaktionen} diff --git a/Speicherung.tex b/Speicherung.tex index 2c4e643..46f5d4b 100644 --- a/Speicherung.tex +++ b/Speicherung.tex @@ -1 +1,81 @@ -\section{Speicherung} +\section{Speicherung von Tupeln und Relationen} +\subsection{Ziele} +\begin{itemize} + \item Relationen mit Mitteln der darunter implementierten Schichten sichern + \item Anfragen (SQL) möglichst effizient auswerten +\end{itemize} +\subsection{Speicherung von Tupeln in Sätzen} +\subsubsection{Aufbau von Sätzen} +\begin{itemize} + \item Sätze sind aus \textbf{Feldern} zusammengesetzt (Name, Typ, Länge) + \item \textbf{Systemkatalog}\\Informationen über Felder und Reihenfolge +\end{itemize} +\subsubsection{Satztyp} +\begin{itemize} + \item Menge von Sätzen mit gleicher Struktur $\rightarrow$ einmalige + Beschreibung im Systemkatalog + \item beim speichern eines Satzes wird im ein Satztyp zugeordnet + \item Länge der Sätze zumeist variabel +\end{itemize} +\textbf{Annahme: Reihenfolge der Felder egal} + +\subsubsection{Anforderungen} +\textbf{Speicherplatzeffizienz}: +\begin{itemize} + \item variable Länge + \item undefinierte Werte nicht speichern + \item Hilfsstrukturen minimieren +\end{itemize} + +\textbf{direkter Zugriff auf Felder}: +\begin{itemize} + \item ohne vorher andere Felder lesen zu müssen + \item direkt zur Anfangs-Byte Position innerhalb des Satzes +\end{itemize} + + +\textbf{Flexibilität}: +\begin{itemize} + \item Hinzufügen von Feldern bei allen Sätzen + \item Löschen eines Feldes aus allen Sätzen +\end{itemize} + +\subsubsection{Speicherungsstruktur im Satz} +Der Satz wird in zwei logische Teile untergliedert. Einer beinhaltet +alle Felder fester Länge und der andere alle der variablen. +Mit Katalogdaten und Längenangaben im Satz, lässt sich \textbf{flexibel} +und \textbf{direkt} auf die Felder zugreifen. + +\begin{figure}[H] + \begin{center} + \includegraphics[scale=1.0]{pics/satz_speicherstruktur.png} + \caption{Variable Satz Speicherstruktur} + \end{center} +\end{figure} + +\subsection{Speicherung von Relationen} +\subsubsection{Spaltenweise Speicherung (C-Store)} +\begin{itemize} + \item Auf das Lesen hin optimiert. Gut für Auswertung + großer Datenmengen + \item Nur Attribute lesen, die gebraucht werden + \item kompakte Speicherung der Attributwerte +\end{itemize} +\textbf{Prototyp} +\begin{itemize} + \item speichert Sammlung von Spaltengruppen nach Attribut sortiert + \item Gruppen von Spalten = Projektion + \item Speicherung + \begin{itemize} + \item \textbf{Schreibspeicher} für schnelles Einfügen und Ändern von Tupeln + \item \textbf{Lesespeicher} für umfangreiche Analysen + \end{itemize} + \item Änderung durch Löschen und Einfügen +\end{itemize} +\textbf{Projektionen} +\begin{itemize} + \item Die Projektionen besitzen ein oder mehrere Attribute aus einer logischen +Tablle (ggf durch Fremdschlüssel auch Attribute aus anderen Tabellen) + \item Duplikate bleiben erhalten + \item Als Sortierschlüssel wird eines der Attribute hergenohmen +\end{itemize} diff --git a/Transaktionen.tex b/Transaktionen.tex index 1c00f75..246e7fc 100644 --- a/Transaktionen.tex +++ b/Transaktionen.tex @@ -35,7 +35,7 @@ Bedingungen sind erfüllt (Assertions). \subsubsection{Zustandsdiagramm TA} \begin{figure}[H] \begin{center} - \includegraphics[scale=0.6]{TA_status.png} + \includegraphics[scale=0.6]{pics/TA_status.png} \caption{Transaktionszustände} \end{center} \end{figure} @@ -91,7 +91,7 @@ Warum nicht Tupel: Deshalb wird \textit{hierarchische Schachtelung} der Datenobjekte:\\ \begin{figure}[H] \begin{center} - \includegraphics[scale=0.8]{sperrgranulat.png} + \includegraphics[scale=0.8]{pics/sperrgranulat.png} \caption{Sperrgranulate} \end{center} \end{figure} @@ -100,7 +100,7 @@ Für jedes Objekt kann man nun einen Sperrmodus vergeben. Andere TA können daran erkennen, ob sie ihre Aktion ausführen dürfen. \begin{figure}[H] \begin{center} - \includegraphics[scale=0.6]{komp_matrix.png} + \includegraphics[scale=0.6]{pics/komp_matrix.png} \caption{Kompatibilitätsmatrix} \end{center} \end{figure} @@ -240,7 +240,7 @@ benötigt wird, um nach einem Systemausfall den jüngsten konsisten Zustand wiederherzustellen. \begin{figure}[H] \begin{center} - \includegraphics[scale=0.6]{protokoll2.png} + \includegraphics[scale=0.6]{pics/protokoll2.png} \caption{Protokollinformationen} \end{center} \end{figure} @@ -283,7 +283,7 @@ wiederherzustellen. Verbesserung zu Backward-/Forward Recovery. \begin{figure}[H] \begin{center} - \includegraphics[scale=0.8]{protokoll.png} + \includegraphics[scale=0.8]{pics/protokoll.png} \caption{Physische Protokollierung} \end{center} \end{figure} diff --git a/TA_status.png b/pics/TA_status.png similarity index 100% rename from TA_status.png rename to pics/TA_status.png diff --git a/komp_matrix.png b/pics/komp_matrix.png similarity index 100% rename from komp_matrix.png rename to pics/komp_matrix.png diff --git a/protokoll.png b/pics/protokoll.png similarity index 100% rename from protokoll.png rename to pics/protokoll.png diff --git a/protokoll2.png b/pics/protokoll2.png similarity index 100% rename from protokoll2.png rename to pics/protokoll2.png diff --git a/pics/satz_speicherstruktur.png b/pics/satz_speicherstruktur.png new file mode 100644 index 0000000..d62fbb0 Binary files /dev/null and b/pics/satz_speicherstruktur.png differ diff --git a/sperrgranulat.png b/pics/sperrgranulat.png similarity index 100% rename from sperrgranulat.png rename to pics/sperrgranulat.png