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}
|
2014-02-12 11:41:27 +01:00
|
|
|
Würden man alle Felder mit den Zeiger erreichen, wäre das Speicherplatzverschwendung.
|
|
|
|
So sind alle Felder fester Größe direkt erreichbar.
|
|
|
|
\textbox{Speicheurngsstruktur in Sätzen}{
|
|
|
|
Blatt 9 Aufgabe 2 üben.
|
|
|
|
}
|
2014-02-11 20:28:21 +01:00
|
|
|
\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}
|
2014-02-12 11:41:27 +01:00
|
|
|
\item speichert Sammlung von Spaltengruppen
|
|
|
|
über mehrere Sätze verteilt
|
|
|
|
\item Sortierschlüssel ist ein Attribut
|
2014-02-11 20:28:21 +01:00
|
|
|
\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}
|
2014-02-12 11:41:27 +01:00
|
|
|
\item Änderung durch Löschen und Einfügen durch Tuple Mover
|
2014-02-11 20:28:21 +01:00
|
|
|
\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
|
2014-02-12 11:41:27 +01:00
|
|
|
\item Als Sortierschlüssel wird eines der Attribute hergenommen
|
|
|
|
\end{itemize}
|
|
|
|
\textbf{Komprimierungen}
|
|
|
|
Abhängig von zwei Eigenschaften der Spalte:
|
|
|
|
\begin{itemize}
|
|
|
|
\item Sortierung (nach der Spalte selbst) : ja/nein
|
|
|
|
\item Anzahl der verschiedenen Werte: wenig/viel
|
2014-02-11 20:28:21 +01:00
|
|
|
\end{itemize}
|
2014-02-12 11:41:27 +01:00
|
|
|
\begin{enumerate}
|
|
|
|
\item sortiert mit wenigen verschiedenen Werten:\\
|
|
|
|
organisiert in einem B-Baum mit
|
|
|
|
\begin{itemize}
|
|
|
|
\item dichter Packung $\rightarrow$ alle Seiten voll (keine Änderungen!)
|
|
|
|
\item und großen Seiten $\rightarrow$ geringe Höhe
|
|
|
|
\end{itemize}
|
|
|
|
\item unsortiert mit wenigen verschiedenen Werten:\\
|
|
|
|
Offset-Indexe: B-Baum für Abbildung von Positiionen in einer Spalte auf die Werte in dieser Spaltebegin
|
|
|
|
\item sortiert mit vielen verschiedenen Werten:\\
|
|
|
|
\begin{itemize}
|
|
|
|
\item B-Baum mit dichter Packung
|
|
|
|
\item Delta Codierung: Differenzen zum Vorgänger speichern
|
|
|
|
\end{itemize}
|
|
|
|
\item unsortiert mit vielen verschiedenen Werten
|
|
|
|
\begin{itemize}
|
|
|
|
\item unkomprimiert
|
|
|
|
\item B-Baum mit dichter Packung als sek. Organisation möglich
|
|
|
|
\end{itemize}
|
|
|
|
\end{enumerate}
|
|
|
|
\subsubsection{Ausführung von Anfragen}
|
|
|
|
\textbox{Schritte für Ausführung von Query:}{
|
|
|
|
\begin{enumerate}
|
|
|
|
\item Syntaxprüfung
|
|
|
|
\item gibt es die Relation und Attribute
|
|
|
|
\item wie heißt Datei zur Relation
|
|
|
|
\item was für eine Datei ist das - direkt oder schlüsselbasiert
|
|
|
|
\item gibt es passende Projektionen
|
|
|
|
\item wo liegen die Verbund Indizes
|
|
|
|
\item müssen Partitionen zusammgeführt werden
|
|
|
|
\end{enumerate}
|
|
|
|
}
|