2014-02-11 20:28:21 +01:00
|
|
|
\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}
|