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