Datenbankoperator

Datenbankoperator

Ein Datenbankoperator ist Teil einer Datenbankanfrage, der für die Ausführung eines einzelnen Teilschrittes der Anfrage zuständig ist. Für eine Anfrage erstellt eine Datenbank einen Auswertungsplan, dessen Ausführung das angeforderte Ergebnis liefert.

Schematisch ist ein Auswertungsplan dabei ein Baum, der die Datenbankoperatoren als Knoten beinhaltet. An den Blättern des Baumes befinden sich die gespeicherten Datentabellen. Von dort werden sie von Operator zu Operator nach oben weitergereicht, bis an der Wurzel das Anfrageergebnis bereitsteht. Der Baum wird auch als Operatorbaum bezeichnet.

Inhaltsverzeichnis

Bearbeiten einer Anfrage

Eine Anfrage an eine Datenbank wird bei Relationalen Datenbanken typischerweise als SQL-Anfrage an das Datenbankmanagementsystem gesendet. Hier wird die Anfrage von einem Parser in die relationalen Operationen zerlegt, die nötig sind um die Anfrage zu beantworten.

Logische und Physische Operatoren

Man unterscheidet dabei die

  • Logischen Operatoren
  • Physischen Operatoren

Während die Logischen Operatoren die mathematischen Operationen der Relationalen Algebra repräsentieren, befinden sich hinter den Physischen Operatoren ausführbare Algorithmen, die den logischen Operator implementieren.

Die Relationale Algebra definiert die folgenden logischen Operatoren, mit denen alle weiteren Operatoren gebildet werden können:

Jeder logische Operator kann dabei durch sehr unterschiedliche physische Operatoren ausgeführt werden. Das Datenbankmanagementsystem kann zur Laufzeit entscheiden, welche Implementierung in einem speziellen Fall die beste ist. Außerdem gibt es abgeleitete Operatoren, die sich aus den logischen Operatoren durch Verschachtelung ableiten lassen. Ein spezialisierter, abgeleiteter Operatoren ist der Join-Operator, der Selektion und Kreuzprodukt hintereinander durchführt, um diese wichtige Operation so effizient wie möglich umzusetzen. Außerdem sind der Differenz-Operator und der Divisions-Operator weitere abgeleitete Operatoren.

Optimierung

In der Regel kann dieselbe Anfrage auf sehr unterschiedliche Weisen berechnet werden, die abhängig von der Anfrage und den vorhandenen Daten sehr unterschiedlich schnell sein können. Das heißt, beide Ausführungspläne haben mengenmäßig das gleiche Ergebnis und sind daher mathematisch gesehen äquivalent. Moderne Datenbankmangementsysteme haben daher komplexe Anfrageoptimierer, die aus der Menge aller möglichen Ausführungspläne den effizientesten auswählen.

Logische Optimierung

Zunächst wird hier eine logische Optimierung vorgenommen. Es wird untersucht, ob sich eine Anfrage mathematisch vereinfachen lässt, ohne das Ergebnis zu beeinflussen. Das heißt, der Operatorbaum wird in einen äquivalenten Baum transformiert. Typischerweise werden hier mehrfache Selektionsoperatoren auf der gleichen Datenquelle eliminiert oder Selektionsoperatoren, die immer zu einer Reduktion des Aufwands führen, soweit wie möglich im Baum nach unten bewegt.

Physische Optimierung

Im nächsten Schritt findet die physische Optimierung statt. Nun wählt der Optimierer den bestmöglichen Algorithmus für eine Operation aus. Dabei berücksichtigt er die Kardinalität einer Datenquelle, also die Anzahl der Elemente, die verarbeitet werden müssen, sowie vorhandene Indizes auf einer Relation. So gibt es Algorithmen, die nur dann sehr schnell sind, wenn ein Index vorhanden ist, wie beispielsweise der Index-Join.

ONC

Jeder Operator ist ein Knoten in einem Operatorbaum. Daher hat er ein oder zwei Datenquellen und genau eine Datenausgabe, mit dem Daten an einen anderen Operator weitergegeben werden kann. Die Operatoren sind typischerweise als Iteratoren mit einer ONC-Schnittstelle implementiert. ONC steht hier für Open, Next, Close. Der Operator wird also mit Open initial geöffnet. Dann kann mit Next über die Elemente, die der Operator liefert iteriert werden. Bei jedem Iterationsschritt fordert der Operator soviele Elemente von seinen Datenquellen an, die er benötigt um ein neues Ergebniselement der Ergebnisrelation zu berechnen. Abschließend kann zum Freigeben von Systemressourcen der Operator mittels Close geschlossen werden.

Beispiel

Operatorbaum der Beispielanfrage

Angenommen, es sind zwei Relationen person und anschrift mit den folgenden Attributen gegeben:

person.id
person.vorname
person.name
person.geburtsdatum
anschrift.id
anschrift.personen_id
anschrift.strasse
anschrift.ort

Dann würde die Anfrage nach allen Personen aus Marburg wie folgt aussehen:

SELECT p.name FROM person p , anschrift a  WHERE a.ort = ’Marburg’ AND  p.id = a.personen_id;

Das Bild rechts zeigt, wie die Anfrage als ein Operatorbaum dargestellt wird. Das Tool SELECT2OBaum[1] bietet die Möglichkeit, SELECT-Abfragen interaktiv in Operatorbäume umzuwandeln.

Sonstiges

Bemerkenswert ist, dass die Umsetzung der Datenbankoperatoren, historisch erklärbar durch die großen Geschwindigkeitsunterschiede bei Zugriffen auf Hauptspeicherplatz beziehungsweise Festplattenplatz, selbst wieder durch Operationen auf baumartigen Datenstrukturen, in der Regel Bayerbäumen oder B*-Baum, implementiert wurden. In dem Maße, wie solche Geschwindigkeitsflaschenhälse beseitigt werden, können auch weniger performante oder problemähnliche Datenstrukturen benutzt werden. Die Geschwindigkeitsflaschenhälse in der Speicherorganisation ähneln den Flaschenhälsen nach von Neumann, siehe auch Speicherhierarchie.

Literatur

  • Datenbankbibliothek zu Lehr- und Forschungszwecken XXL in Java.
  • Alfons Kemper, André Eickler: Datenbanksysteme – Eine Einführung. ISBN 3486273922

Einzelnachweise

  1. SELECT2OBaum bei der fh-koeln.de

Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Relationale Algebra — In der Theorie der Datenbanken versteht man unter einer Relationenalgebra oder einer Relationalen Algebra eine formale Sprache, mit der sich Abfragen über einem relationalen Schema formulieren lassen. Sie erlaubt es, Relationen miteinander zu… …   Deutsch Wikipedia

  • RDBM — Eine relationale Datenbank dient zur elektronischen Datenverwaltung in Computersystemen und beruht auf dem relationalen Datenbankmodell. Dieses wurde 1970 von Edgar F. Codd erstmals vorgeschlagen und ist bis heute, trotz einiger Kritikpunkte, ein …   Deutsch Wikipedia

  • RDBMS — Eine relationale Datenbank dient zur elektronischen Datenverwaltung in Computersystemen und beruht auf dem relationalen Datenbankmodell. Dieses wurde 1970 von Edgar F. Codd erstmals vorgeschlagen und ist bis heute, trotz einiger Kritikpunkte, ein …   Deutsch Wikipedia

  • Relational Database Management System — Eine relationale Datenbank dient zur elektronischen Datenverwaltung in Computersystemen und beruht auf dem relationalen Datenbankmodell. Dieses wurde 1970 von Edgar F. Codd erstmals vorgeschlagen und ist bis heute, trotz einiger Kritikpunkte, ein …   Deutsch Wikipedia

  • Relational Database Management Systems — Eine relationale Datenbank dient zur elektronischen Datenverwaltung in Computersystemen und beruht auf dem relationalen Datenbankmodell. Dieses wurde 1970 von Edgar F. Codd erstmals vorgeschlagen und ist bis heute, trotz einiger Kritikpunkte, ein …   Deutsch Wikipedia

  • Relationales Datenbankmanagementsystem — Eine relationale Datenbank dient zur elektronischen Datenverwaltung in Computersystemen und beruht auf dem relationalen Datenbankmodell. Dieses wurde 1970 von Edgar F. Codd erstmals vorgeschlagen und ist bis heute, trotz einiger Kritikpunkte, ein …   Deutsch Wikipedia

  • Relationales Datenbankmodell — Eine relationale Datenbank dient zur elektronischen Datenverwaltung in Computersystemen und beruht auf dem relationalen Datenbankmodell. Dieses wurde 1970 von Edgar F. Codd erstmals vorgeschlagen und ist bis heute, trotz einiger Kritikpunkte, ein …   Deutsch Wikipedia

  • Relationales Datenbanksystem — Eine relationale Datenbank dient zur elektronischen Datenverwaltung in Computersystemen und beruht auf dem relationalen Datenbankmodell. Dieses wurde 1970 von Edgar F. Codd erstmals vorgeschlagen und ist bis heute, trotz einiger Kritikpunkte, ein …   Deutsch Wikipedia

  • Relationenmodell — Eine relationale Datenbank dient zur elektronischen Datenverwaltung in Computersystemen und beruht auf dem relationalen Datenbankmodell. Dieses wurde 1970 von Edgar F. Codd erstmals vorgeschlagen und ist bis heute, trotz einiger Kritikpunkte, ein …   Deutsch Wikipedia

  • Select — Als Selektion bezeichnet man in der Informatik die Auswahl von Datenobjekten aus einer Datenmenge. Selektion ist ein wichtiger Teil von Datenbanken. In der Relationalen Algebra ist die Selektion daher einer von fünf Operatoren, der in… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”