%
% Einleitung
%
%

\chapter{Einleitung}\label{chp:Einleitung}
\pagenumbering{arabic}

\section{Problembeschreibung}\label{sct:Problembeschreibung}
SQL ist unter anderem eine mächtige Abfragesprache, mit deren Hilfe sich viele Fragestellungen, die an relationale Daten gestellt werden können, formulieren lassen. Da SQL nach dem Vorbild der englischen Sprache entworfen wurde, erleichtert die Syntax die formale Darstellung in Umgangssprache vorliegender Informationsanforderungen. Einer der großen Vorteile von SQL ist die Möglichkeit, Abfragen geschachtelt zu formulieren. So lässt sich die Fragestellung \enquote{Gib mir alle Lieferanten, deren Umsatz dem maximalen Umsatz aller Lieferanten entspricht} unter der Annahme, dass es eine Relation \enquote{Lieferanten} mit dem Schema (Name, Umsatz) gibt, formulieren als 

\sql{select * from lieferanten where umsatz = (select max(umsatz) from lieferanten)}. 

Die in einem Nebensatz formulierte Bedingung \enquote{deren Umsatz dem maximalen Umsatz aller Lieferanten entspricht} kann hier direkt als Abfrage \sql{select max(umsatz) from lieferanten} formuliert werden. Ohne eine Schachtelung ließe sich die Fragestellung nur mit Hilfe von zwei getrennten Abfragen formulieren.

Das erweiterbare Datenbanksystem \textsc{Secondo}\footnote{ausführlichere Beschreibung siehe Abschnitt \ref{sct:Beschreibung SECONDO}} stellt bereits alle Operationen zur Verfügung, um beliebig tief geschachtelte Ausdrücke ausführen zu können. Der zugehörige Optimierer, der für die Übersetzung von SQL in einen effizienten \textsc{Secondo}-Ausdruck zuständig ist, kann aber noch keine geschachtelten Abfragen verarbeiten. Damit ist die Formulierung komplexer geschachtelter Abfragen nur in der \textsc{Secondo}-eigenen Syntax möglich. 

Ziel dieser Arbeit ist es, den \textsc{Secondo}-Optimierer in die Lage zu versetzen, geschachtelte Abfragen übersetzen zu können. Nach Möglichkeit soll der Optimierer zwischen verschiedenen Ausführungsstrategien die effizienteste Ausführungsstrategie für die jeweilige Übersetzung auswählen. Um die Implementierung zu testen und die Vorteile unterschiedlicher Ausführungsstrategien zu demonstrieren, sollen in einer Gegenüberstellung geschachtelte Abfragen aus dem TPC-D Benchmark mit verschiedenen Ausführungsstrategien ausgeführt und verglichen werden.

\section{Aufbau der Arbeit}\label{sct:Aufbau der Arbeit}
Die Arbeit besteht aus vier Teilen.

Im ersten Teil (Kapitel \ref{chp:Review}, ab Seite \pageref{chp:Review}) werden die technologischen und theoretischen Grundlagen dargelegt, mit denen sich geschachtelte Abfragen optimieren lassen. 

Der zweite Teil widmet sich der Problemanalyse und der ausführlichen Darstellung der ausgewählten Algorithmen und wird in Kapitel \ref{chp:Entwurf} ab Seite \pageref{chp:Entwurf} dargestellt. Es werden die Gründe für die Auswahl der Algorithmen dargelegt und die Bedingungen für ihren Einsatz beschrieben.

Die Implementierung und technische Umsetzung der Algorithmen wird im dritten Teil, Kapitel \ref{chp:Implementierung} ab Seite \pageref{chp:Implementierung} geschildert. Anhand von Beispielen wird gezeigt, wie die einzelnen Schritte der Optimierung und Übersetzung geschachtelter Abfragen ablaufen.

Im vierten Teil, Kapitel \ref{chp:Leistungsbewertung} ab Seite \pageref{chp:Leistungsbewertung} werden zwei mögliche Ausführungsstrategien für die Übersetzung geschachtelter Abfragen anhand von geschachtelten Abfragen aus dem TPC-D Benchmark quantitativ und strukturell verglichen. 

Ab Seite \pageref{sct:Fazit} findet sich ein Überblick über die erreichten Ergebnisse mit einem Ausblick auf mögliche zukünftige Erweiterungen, die sich aus den in dieser Arbeit nicht gelösten Fragestellungen ergeben.

Im Anhang ab Seite \pageref{Anhang} findet sich die vom Optimierer verstandene SQL-Syntax, sowie die Implementierung der Erweiterungen des Optimierers und die Definition der implementierten Operatoren.

%
% EOF
%
%