latexandmore/Speicherung.tex

126 lines
4.5 KiB
TeX
Raw Normal View History

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