Kap 10: Anfrageverarbeitung fertig

This commit is contained in:
Christian Bay 2014-02-12 12:25:19 +01:00
parent 15f224941b
commit e89c3b4f28
4 changed files with 88 additions and 1 deletions

86
Anfrageverarbeitung.tex Normal file
View File

@ -0,0 +1,86 @@
\section{Anfrageverarbeitung}
\subsection{Allgemein}
Eine SQL Anfrage ist ein mengenorientierter Zugriff.
D.h. diese mengenorientierten Operatoren müssen auf satzorientierte
Operatoren abgebildet werden.
\subsubsection{Phasen}
\textbf{Verarbeitungsschritte}:
\begin{itemize}
\item Syntax überprüfen
\item Rechte und Integritätsbedingungen (Formate) prüfen
\item \textbf{Anfrageoptimierung} um effizient Query zu bearbeiten
\item Code Generieung
\end{itemize}
\begin{figure}[H]
\begin{center}
\includegraphics[scale=0.7]{pics/anfrageverarbeitung.png}
\caption{Phasen der Anfrageverarbeitung}
\end{center}
\end{figure}
\textbf{Ziel}:\\
Umsetzung deskriptiver Anfragen in eine \glqq optimale\grqq Folge
interner DBS-Operationen
\subsection{Interndarstellung}
\subsubsection{Relationale Algebra}
Definition von relationalen \textbf{logischen Operatoren}:
\begin{itemize}
\item Selektion: Auswahl von \glqq Zeilen \grqq (\textbf{where}-Klausel)
\item Projektion Auswahl von \glqq Spalten \grqq (\textbf{select}-Klausel)
\item Kreuzprodukt: Konkatenation derjenigen Tupel aus zwei Relationen(\textbf{from})
\item Verbund: Konkatenation derjenigen Tupel aus zwei Relationen
die eine Bedingung erfüllen(\textbf{from-where})
\item Mengenoperationen auf zwei Relationen:
\begin{itemize}
\item $R \cup S$ bzw \textbf{UNION(R,S)}
\item $R \cap S$ bzw \textbf{INTERSECT(R,S)}
\item $R \setminus S$ bzw \textbf{EXCEPT(R,S)}
\end{itemize}
\end{itemize}
\subsubsection{Operatorbaum}
Beispiel:
\begin{lstlisting}
select Name, Beruf
from Abt a, Pers p,
PM pm , Projekt pj
where a.ANr = p.ANr
and a.AOrt = "Erlangen"
and p.PNr = pm.PNr
and pm.JNr = pj.JNr
and pj.POrt = "Erlangen"
\end{lstlisting}
\begin{figure}[H]
\begin{center}
\includegraphics[scale=0.7]{pics/operatorbaum.png}
\caption{Operatorbaum}
\end{center}
\end{figure}
Blattknoten: Relationen\\
Gerichtete Kanten: Datenfluss\\
Knoten: Operatoren der Relationalen Algebra
\subsection{Restrukturierung}
Regeln:
\begin{enumerate}
\item Ein n-facher Verbund kann durch eine Folge von binären Verbunden ersetzt und werden und umgekehrt
\item Verbund ist kommutativ
\item Verbund ist assoziativ
\item Selektionen können zusammengefasst werden
\item Projektionen können zusammengefasst werden
\item Selektionen und Projektionen dürfen vertauscht werden
\item Selektionen und Verbund dürfen vertauscht werden
\item Selektion darf mit Vereinigung und Differenz vertauscht werden
\item Selektion und Kreuzprodukt können zu Verbund zusammengefasst weren
\end{enumerate}
\subsubsection{Algorithmus}
\textbf{Ziel}: Kreuzprodukt vermeiden
Heuristik:
\begin{itemize}
\item komplexe Verbundoperationen zerlegen in binäre Verbunde (Regel 1)
\item Selektionen mit mehreren Prädikat Termen separieren in Selektionen mit jeweils einem Prädikat Term (Regel 4)
\item Selektionen so früh wie möglich ausführen (Regel 7 und 8)
\item Selektionen und Kreuzprodukt zu Verbund zusammenfassen, wenn
das Selektioinsprädikat Attribute aus den beiden Relationen verwendet (Regel 9)
\item Projektionen so früh wie möglich ausführen
\end{itemize}

View File

@ -30,7 +30,7 @@
commentstyle=\color{dkgreen}, % comment style commentstyle=\color{dkgreen}, % comment style
frame=single, % adds a frame around the code frame=single, % adds a frame around the code
keywordstyle=\color{blue}, % keyword style keywordstyle=\color{blue}, % keyword style
language=C++, % the language of the code language=sql, % the language of the code
mathescape=true, mathescape=true,
autogobble, autogobble,
numbers=left % where to put the line-numbers; possible values are (none, left, right) numbers=left % where to put the line-numbers; possible values are (none, left, right)
@ -63,5 +63,6 @@
\listoffigures \listoffigures
\newpage \newpage
\include{./Speicherung} \include{./Speicherung}
\include{./Anfrageverarbeitung}
\include{./Transaktionen} \include{./Transaktionen}
\end{document} \end{document}

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
pics/operatorbaum.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB