Anwendung und Optimierung der Magic Sets Methode

Werbung
Ausarbeitung
Anwendung und Optimierung der
Magic Sets Methode
Projektgruppe „Intelligente Datenbanken“
Autor:Taner Tas
Siegburg, 16.08.2003
Vorwort
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 1 von 24
Die Magic Sets Methode wurde bei ihrer Einführung 1986 auf der Grundlage von
theoretischen Systemen wie z.B. DATALOG entwickelt.
DBMS, die in der Praxis Anwendung finden, und die auf dem SQL-Standard
aufbauen, haben eine Funktionsvielfalt , die man in DATALOG bisher nicht
kennen gelernt hat. Auf der anderen Seite beherrschten diese DBMS bis zum
ANSI/ISO SQL-Standard von 1999 keine rekursiven Sichten.
Rekursion ist in DATALOG jedoch ein wichtiges Funktionselement, besonders im
Zusammenhang mit der Magic Sets Methode.
Im ersten Teil der Ausarbeitung wird gezeigt, dass auch praktische(kommerzielle)
DBMS von den Vorteilen der Magic Sets Methode profitieren können.
Der zweite Teil der Ausarbeitung beschäftigt sich mit der Optimierung der Magic
Sets Methode insofern, dass für bestimmte Typen von rekursiven Queries spezielle
Optimierungsansätze existieren, die sich der Magic Sets Methode bedienen, jedoch
effizienter arbeiten.
Inhalt
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 2 von 24
Teil 1
Teil 2
Teil 1
Anwendung der Magic Sets Methode in SQL Systemen
1.1
Einleitung
1.2
Traditionelle Optimierungstechniken
1.2.1 Indexing
1.2.2 Korrelation
1.2.3 Dekorrelation
1.3
Die Anwendung Magic Sets Methode á la SQL
1.4
Magic Sets Methode auf nichtrekursiven Anfragen
Effiziente Evaluierung Rechts-, Links-, und Gemischt-linearer
Regeln
2.1
Einleitung
2.2
Rechtslineare Rekursion
2.2.1 Definition
2.2.2 Beispiel
2.2.3 Transformationstechnik für rechtslineare
Rekursionen
2.3
Linkslineare Rekursionen
2.3.1 Definition
2.3.2 Beispiel und Zusammenfassung
2.3.3 Ausblick: Gemischt lineare Rekursion
Anwendung der Magic Sets Methode in SQL-Systemen
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 3 von 24
1.1
Einleitung
Die Magic Sets Methode ist eine Technik zur Optimierung der Anfragebearbeitung,
die auch die Entwicklung moderner kommerzieller DBMS beeinflusst hat.
Als die Magic Sets Methode 1986 in der Publikation "Magic Sets and other strange
ways to implement logic programs"1 veröffentlicht wurde, wurde das Thema aus der
Perspektive der logischen Programmierung betrachtet. DATALOG war das
entsprechende Werkzeug.
Originalzitat [BMSU86 S.1]: “ Logic programming is a simple but powerful
formalism for representing data and queries. The relational data model, for
example, is easily represented, as are extensions to the model. Functions and
programs can be defined along with data such that the distinction between data and
programs is blurred. Logic programming is "very-high-level" in the sense that one
specifies program functionality ("what it does") without giving an algorithm ("how
it does it"). The downside of logic programming is its implementation inefficiency.
To achieve efficient execution, we must rewrite the rules defining data, functions,
and queries in a more efficient form.”
Die Magic Sets Methode wird oft in Zusammenhang mit der logischen Optimierung
von rekursiven Anfragen erwähnt, obwohl die Technik für rekursive und nichtrekursive Anfragen anwendbar ist.
Zu dieser Zeit unterstützten die gängigen SQL-Techniken, vor allem der ANSI/IECSQL Standard vor 1999 keine rekursiven Sichten.
In der logischen Programmierung war man diesem Problem voraus, Rekursion ist
hier fast selbstverständlich. Vielleicht war das ein Grund, warum die Magic Sets
Methode lange Zeit nicht aus der SQL-Perspektive betrachtet wurde.
In diesem Dokument wird gezeigt, dass die Magic Sets Methode auch für (heutige)
kommerzielle SQL-Basierende DBMS eine interessante Technik ist.
Dazu haben sich die Autoren der Publikation [MIR1990] für „SBSQL“(=Starburst
SQL) entschieden[Anhang1].
Starburst SQL ist ein Projekt des IBM Almaden Research Centre, das in 1984-1992
entwickelt wurde. Es ist ein Prototyp eines erweiterbaren DBMS, das sowohl
Rekursion unterstützt als auch durch benutzerdefinierte Funktionen zulässt.
Insbesondere lässt sich der Sprachumfang durch eigene Konstrukte, Funktionen und
Regeln erweitern.
Ein weiteres wichtiges Merkmal ist das „Query Graph Model“ von SBSQL. Die
„query transformation engine“, die für die Optimierung der Query zuständig ist,
kann durch den Benutzer um neue Optimierungstechniken wie z.B. Magic Sets
erweitert werden.
1 [BMSU86]F. Bancilhon, D. Maier, Y. Sagiv, and J. Ullman.
Magic sets and other strange ways to implement logic programs.
In ACM SIGACT-SIGMOD Symp. on Principles of Database Systems, Cambridge MA, March 1986.
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 4 von 24
Für unseren Focus ist die Möglichkeit von „Table Expressions“ in SBSQL (im
folgenden „texp“) wichtig.
Texps ähneln von der Struktur her einer VIEW, in der Tabellen eine syntaktische
Struktur von DATALOG-Regeln haben. Eine Texp hat wie eine DATALOG Regel
einen Regelkopf, der den Tabellennamen und die Attribute beinhaltet, und einen
Regelrumpf, der die Herleitung der Regel mittels einer
SELECT…FROM…WHERE Anweisung vornimmt.
Beispiel:
spaghetti(name,persnr) AS
(SELECT name, persnr FROM personal WHERE
lieblingsessen=“Spaghetti“);
1.2
Traditionelle Optimierungstechniken
Bei der Bearbeitung einer Anfrage kann es durch eine naive Auswertung zu einer
grossen Zwischenergebnismenge relativ zur Antwortmenge kommen.
Ziel ist es, irrelevante Daten herauszufiltern, so dass diese in der
Anfragebearbeitung nicht betrachtet werden.
In der Praxis wurden bisher die Techniken „Korrelation“ und „Dekorrelation“
angewendet, die im Folgenden aufgeführt werden.
Eine gute Strategie ist, Selektionsprädikate zu „pushen“, d.h. in der OperatorbaumDarstellung so früh wie möglich, bzw. vor dem Join/Produkt von Relationen
anzuwenden.
In beiden traditionellen Optimierungsansätzen finden wir Ansätze der SIPStrategien, die systematisch gewonnene Information zur Filterung während der
Anfrage weiterreicht.
Die durch das „pushen“ gewonnenen relevanten Tupel können zum Filtern der
relevanten Daten in der Join/Produkt Operation benutzt werden.
Dabei bedient sich SBSQL eines Indexes auf der Relation.
1.2.1 Indexing
Die meisten relationalen DBMS, darunter auch SBSQL, versehen eine Relation
dynamisch während der Anfragebearbeitung mit einem Index als weiteres
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 5 von 24
Attributfeld. Man kann sich das Indexieren bildlich als einen Join der Relation mit
den Indexwerten vorstellen.
Indexierter Zugriff ermöglicht es, sequentiellen Zugriff auf Relationen zu umgehen.
Generell gilt, dass indexierte Attribute den Zugriff über eine Baumstruktur
ermöglichen*.
Beispiel:
(1) naive implementation:
SELECT
FROM
WHERE
AND
Profs,Docs
unipersonal, dozenten
lieblingsessen = „Eintopf“
unipersonal.persnr = dozenten.persnr;
(2) stattdessen:
SELECT
Profs,Docs
FROM
unipersonal_eintopf, dozenten
AND unipersonal_eintopf.persnr=dozenten.persnr;
unipersonal_eintopf(persnr, lieblingsessen) AS
SELECT persnr,lieblingsessen
FROM unipersonal
WHERE leiblingsessen=“Eintopf“;
zu den Relationen unipersonal(persnr, lieblingsessen, location, lohn) und
dozenten(persnr,name,vorl)
Eine mögliche Strategie wäre es, „dozenten“ zu indexieren um Mithilfe der
gewonnenen (relevanten) Tupel aus „unipersonal_eintopf“ die gewünschten Daten
zu extrahieren. Das relevante Attribut „persnr“ wird hier in der ersten SELECTFROM-WHERE- Klausel an die Tabelle „dozenten“ weitergereicht(„sideways
passing“). Anschliessend könnte über einen Index auf „dozenten“ auf die benötigten
Tupel ohne „Umweg“ zugegriffen werden.
1.2.2 Korrelation
Korrelation nutzt die Möglichkeit, Selektionsprädikate in Unteranfragen zu
verschieben. Dadurch wird evtl. das Bilden von Produkten von Relationen vor der
Selektion vermieden.
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 6 von 24
Beispiel:
SELECT
FROM
WHERE
AND
studnr
studHK s1
lieblingsessen = „Eintopf“
lohn > (
SELECT AVG(s2.lohn)
FROM studHK s2
WHERE s1.abt = s2.abt );
zu der Relation
studHK(name, lohn, studnr, lieblingsessen, abt)
In diesem Beispiel wird für Studenten, deren Lieblinsessen Eintopf ist,
der Durchschnittslohn seiner Kollegen in derselben Abteilung
berechnet und im Falle eines Mehrverdienstes seine studnr selektiert.
Auch hier wird ein gewonnenes Tupel aus „s1“ direkt an die Unteranfrage im Sinne
der SIP weitergereicht.
Der Vorteil ist, dass auf keine irrelevanten Fakten (wie z.B im Falle Produktes von
s1 und s2) zugegriffen wird.
Als Nachteil sticht vor allem die Tatsache ins Auge, dass hier die NichtProzeduralität und Mengenorientiertheit relationaler DBMS zerstört wird, das einen
erheblichen Performancevorteil ausmacht[MIR1990]. Der Zugriff muss zwingend
in der Reihenfolge s1, s2 erfolgen. Ausserdem könnte der Durchschnittsgehalt
mehrfach berechnet werden, z.B. für Studenten in derselben Abteilung.
1.2.3 Dekorrelation
Im Gegensatz zu Korrelation, wo Selektions-Prädikate in Unteranfragen verschoben
werden, werden diese hier aus den Unteranfragen heraus bezogen.
Beispiel:
Wir schreiben die Query aus 1.2.2 in dekorrelierter Form
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 7 von 24
SELECT
FROM
WHERE
AND
AND
studnr
studHK, durchsch_lohn
lieblingsessen = „Eintopf“
lohn > durchsch_lohn.lohn
studHK.abt = durchsch_lohn.abt ;
durchsch_lohn(abt, avg_lohn) AS
(SELECT abt,AVG(lohn)
FROM studHK);
Die dekorellierte Version hat den Vorteil, dass die nicht-prozeduralität
wiederhergestellt ist. Die texp „durchsch_lohn“ könnte in einem Zug den
Durchschnittslohn für alle Abteilungen berechnen (könnte auch noch zusätzlich
materialisiert werden), um anschliessend mit den gewonnenen Daten das HauptGoal der Anfrage zu berechnen.
Auch der Vorteil des mengenorientierten Zugriffes ist wieder verfügbar, da die
Zugriffe auf „studHK“ unabhängig sind.
Es gibt jedoch einen substantiellen Nachteil, weil die VIEW „durchsch_lohn“ das
Durchschnittsgehalt aller Abteilungen berechnet, ohne Hinblick auf relevante
Abteilungen, die im Haupt-Goal betroffen wären.
Diese Überlegungen der traditionellen Optimierungsansätze finden sich alle in der
Magic Sets Methode wieder.
1.3
Die Anwendung Magic Sets Methode á la SQL
Ziel ist es, zu zeigen dass die Magic Sets Methode zur logischen Optimierung der
Anfragebearbeitung ein durchaus praktizierbares, robustes und zudem
interessantes Verfahren ist, das auch für relationale DBMS in der Praxis in Frage
kommt.
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 8 von 24
Betrachten wir als Beispiel die folgende Query, die in SBSQL implementiert wurde:
In diesem Beispiel wird in einem industriellen Produktionswerk nach der Lagerzeit
der Produkte der Auftragsgrösse „450“, sowie ihrem Lagerort gefragt.
Dazu bedient sich die Anfrage der Tabellen produktauftrag, inventar, lagerzeit und
lagerort, auf deren inhaltliche Struktur wir nicht näher eingehen werden.
Die einfache Implementation berechnet in einem Zug die durchschnittliche
Lagerzeit Anhand der texp „lagerzeit“ (V1).
Anschliessend werden die Tabellen produktauftrag, inventar und lagerzeit in
vollem Umfang einem Join unterzogen, um daraufhin die entsprechenden Selektion
nach den Anfragekonstanten durchzuführen.
Man kann sich diese Operation in einem Operatorbaum mit der Anfrageantwort an
der Wurzel folgenderweise vorstellen(natürlich mit dem Hinweis, dass dies keinem
Operatorbaum der relationalen Algebra entsprechen würde, allein aus der Tatsache
heraus, dass z.B. Aggregation nicht definiert wäre).
In der untersten Schicht finden Joins statt, darauf folgend eine Filterung der
Ergebnistupel aus der vorhin entstandenen Zwischenrelation anhand der
Selektionskonstanten, und zuletzt die Projektion der relevanten Attribute.
Es wird bei der Berechnung der durchschnittlichen Lagerzeit (E1) keine Ausnahme
auf relevante Produkte gemacht, alle vorhandenen Tupel werden in die Berechnung
mit einbezogen.
Die hauptsächliche Anfrage verhält sich ebenso, sie ist erst „a posteriori“ über die
benötigten Tupel informiert, so dass die Selektion der entsprechenden Tupel erst
zum Schluss erfolgen muss.
Diese Vorgehensweise ist sehr ineffizient, es ist nicht schwer zu sehen, dass hier
optimiert werden kann.
(E1) lagerzeit(produktnr, halle, avg_zeit)
AS
(SELECT produktnr , halle , AVG(lagerzeit)
FROM lagerort
GROUPBY produktnr, halle)
(E2) SELECT DISTINCT produkt*, halle, avg_zeit
FROM produktauftrag, inventar, lagerzeit
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 9 von 24
WHERE
produktauftrag.auftrmenge = 450
AND
produktauftrag.produktnr = inventar.produktnr
AND
produktauftrag.produktnr = lagerzeit.produktnr
Eine intelligentere Annäherung wäre, Bindungen der relevanten Anfragewerte im
Voraus zu bestimmen.
Das ist der Magic-Sets Ansatz.
Wir bilden eine Texp „q_prod“, um zuerst Bindungen(hier: produktnr) für die
relevanten Produkte zu schaffen, die eine Auftragsgrösse von 450 haben.
Diese Bindungen werden daraufhin an „a_produktzeit“ gemäss SIP weitergereicht.
Die Tabelle „a_produktzeit“ hat den elementaren Vorteil, dass während der JoinOperation Bindungen der relevanten Fakten von „q_prod“ übernommen wurden und
der Join sehr effektiv in dem Sinne ist, dass keine irrelevanten Zwischenergebnisse
berechnet werden müssen.
Berechnung der Durchschnittszeit und Paarung des entsprechenden Produktes mit
den Tupeln aus dem betreffenden Lagerort wird zielgenau ausgeführt.
(M1a)
q_prod AS
(SELECT DISTINCT produkt *
FROM produktauftrag , inventar
WHERE auftrmenge = 450
AND produktauftrag.produktnr = inventar.produktnr)
(M1b)
a_produktzeit(produktnr, halle, avg_zeit) AS
(SELECT lagerort.produktnr, werk.halle, AVG(lagerzeit)
FROM q_prod, lagerort
WHERE q_prod.produktnr = lagerort.produktnr
GROUPBY
werk.produktnr, werk.halle)
(M1c)
SELECT DISTINCT q_prod *, halle, avg_zeit
FROM q_prod, a_produktzeit
WHERE q_prod.produktnr = a_produktzeit.produktnr
Die Anwendung der Magic Sets Methode in diesem Beispiel hat gezeigt, dass sie
durchaus auch in nichtrekursiven Anfragen „relevant“ ist.
Ein Performance-Vergleich zwischen der Query aus (E1),(E2) und der Magic-Sets
transformierten Query auf einem IBM DB2VR2 System im IBM Almaden
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 10 von 24
Research Center ergaben im Zeitlichen Verhältnis ein Ergebnis von 100-0,46 in der
Anfragebearbeitung.
1.4 Magic Sets Methode auf nichtrekursiven Anfragen
Rekursion war(ist) in kommerziellen SQL-Systemen eine Hürde, um die Magic Sets
Methode anwenden zu können, weil viele kommerzielle DBMS dieses Konstrukt
nicht beherrschten. Seit dem SQL-Standard von 1999 werden rekursive Sichten in
begrenztem Maße unterstützt.
Lange Zeit glaubte man auch der Annahme, dass die Magic Sets Methode nur in der
Anfragebearbeitung rekursiver Anfrage nützlich sei.
Der Vorteil der Magic Sets Methode ist, dass sie auch für nichtrekursive Anfragen
effizient arbeitet.
Jedoch kann es vorkommen, dass eine nichtrekursive Anfrage durch die
Transformation rekursiviert wird.
Der Grund dafür liegt häufig in gemeinsamen Teilausdrücken in Regeln, die
Querverknüpfungen verursachen, jedoch effizient behoben werden können.
Beispiel:
Betrachte :
(1)
SELECT A,B
FROM r(A,C), q(C;B)
WHERE A=10;
r(A,C) AS
q(E,F) AS
(SELECT A,C FROM q(A,D), t(D,C))
(SELECT E,F FROM s(E,F))
?
q
s
r
t
Der Abhängigkeitsgraph zeigt keine Rekursive Abhängigkeit, jedoch wird “q” als
gemeinsamer Teilausdruck zweimal benutzt
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 11 von 24
Die Magic Sets Transformation liefert folgende Regelmenge:
(2)
SELECT A,B
FROM rbf(A,C), qbf (C;B)
WHERE A=10;
query_rbf (10);
rbf (A,C)
qbf (E;F)
bf
query_q (A)
AS (SELECT A,C FROM query_rbf (A) , qbf (A,D), t(D,C));
bf
AS (SELECT E,F FROM query_q (E) , s(E,F));
AS ((SELECT C FROM rbf (A,C) WHERE A=10)
UNION
(SELECT A FROM query_rbf (A)));
Nun hat der Abhängigkeitsgraph der Magic Sets transformierten Regel eine
rekursive Abhängigkeit zwischen „q“ , „r“ und „q_q(query_q)“:
?
*
q
s
q_q
r
q_r
t
Die Rekursion ist auf die Magic-Sets-Regel „query_q“ zurückzuführen.
Ein Lösungsvorschlag wäre, den gemeinsamen Teilausdruck „q“ aus der
ursprünglichen(untransformierten) Anfrage (1) nicht als gemeinsamen Teilausdruck
zu verwenden. Stattdessen kann man das zweimalige Auftreten der Regel „q“ aus
(1)
SELECT A,B
FROM r(A,C), q(C;B)
WHERE A=10;
r(A,C) AS
q(E,F) AS
(SELECT A,C FROM q(A,D), t(D,C))
(SELECT E,F FROM s(E,F))
durch Betrachtung als zwei verschiedene Regeln umgehen, z.B. als „q“ und „Q“.
Zu beachten ist hier, dass ei der Datenflussanalyse sich herausstellt, dass die
Rekursion nach einem Loop terminiert, d.h. „q“ kann für „r“ keine neuen Fakten
generieren, ergo ist die Rekursion sinnlos.
Man könnte somit die Regelmenge komplett umschreiben.
Wenn wir die Regel „q“ getrennt als „q“ und „Q“ in ihren Vorkommen betrachten
und (1) durch (1b) ersetzen.
(1b)
SELECT A,B
FROM r(A,C), q(C;B)
WHERE A=10;
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 12 von 24
r(A,C) AS
q(E,F) AS
(SELECT A,C FROM Q(A,D), t(D,C))
(SELECT E,F FROM s(E,F))
//Q statt q
//dieses q bleibt
Anschliessend (1b) durch die Magic Sets Methode transformieren, erhalten wir
folgenden nichtrekursiven Abhängigkeitsgraphen:
?
q
s
r
q_q
q_r
t
Q
Allgemein gilt:
Ist der Abhängigkeitsgraph einer Query ein azyklischer gerichteter Baum, so ist der
Graph seiner Magic-Sets transformierten ein gerichteter azyklischer Graph(evtl.
kein Baum mehr). Ist der Abhängigkeitsgraph einer Query ursprünglich ein
gerichteter azyklischer Graph, so ist der Graph seiner Magic Sets Transformation
ein zyklischer gerichteter Graph(rekursiver Datenfluss).
Teil 2
Effiziente Evaluierung Rechts-, Links-, und Gemischt-linearer
Regeln
2.1 Einleitung
In diesem Kapitel wird ein Verfahren zur Optimierung der Magic Sets Methode
verwendet, die sich in den meisten Fällen als eine Performance steigernde Methode
für bestimmte Rekursionstypen erwiesen hat.
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 13 von 24
Viele Techniken zur Evaluation von Rekursionen wurden vor dem Hintergrund
erdacht, eine „allgemein anwendbare“ Methode zu sein, dazu gehören auch Magic
Sets.
Für einige simplere Rekursionstypen sind jedoch Evaluationsalgorithmen bekannt,
die ein besseres Ergebnis im Sinne der Performance bieten.
Andere Techniken wiederum, die „special purpose“-Evaluationsalgorithmen für
eine breite Menge von Rekursionstypen bereitstellen, haben den Nachteil, nicht im
Gedanken an die Allgemeinheit konzipiert worden zu sein. Diese folgen nicht dem
klassischem „Magic Sets“-Paradigma, einer Regelkompilierungsphase und einer
Anfragebearbeitungsphase, zudem ist es auch schwieriger diese um den Umgang
mit Negation und mengenorientierter Sprachkonstrukte zu erweitern.
Die hier vorgestellten Verfahren zur Optimierung der Magic Sets Methode greifen
in der Regelkompilierungsphase ein. Die rewriting-Strategie hat –vereinfacht
ausgedrückt- den Vorteil, dass die Transformation die Stelligkeit des rekursiven
Prädikates verringert.
Zuerst folgt eine syntaktische Beschreibung der Rekursionstypen, für die unsere
Optimierungstechnik anwendbar ist.
Wir werden rechtslineare Rekursionen , linkslinare Rekursionen und Gemischlineare Rekursionen formal beschreiben.
Dabei betrachten wir Regeln in DATALOG-Notation, zur Vereinfachung nehmen
wir an , dass in einer Regel nur ein rekursives Prädikat vorkommt.
2.2 Rechtslineare Rekursionen
Im Prinzip nennen wir eine rekursive Regel rechtslinear, wenn in einer Regel das
rekursive Prädikat im rechten äusseren Block des Regelrumpfes vorkommt.
2.2.1 Definition
Gegeben ist eine Menge von Regeln in DATALOG Notation, bestehend aus
EDB(Basis-)- und IDB(definiert-)-Prädikaten und ein Query-Goal mit einem
entsprechenden adornment W.
Wir nehmen an, dass nur ein rekursives IDB-Prädikat existiert.
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 14 von 24
(Def.)Datalog-Regeln werden rechtslinear genannt, falls alle rekursiven Regeln,
unter Betrachtung des „adornments“ W folgende Form haben,
p(X1,…Xm, Y1, …,Yn)
G1, …,Gk, p(W1,…Wm,Y1,…,Yn)
Wir nehmen O.B.D.A. an, dass die ersten m Argumente (X1,…Xm) in p
entsprechend W gebunden sind.
Wobei folgende Bedingungen erfüllt sind:
• G1,…Gk sind Subgoals bestehend aus EDB Prädikaten (um die Annahme zu
erfüllen, dass nur ein einziges rekursives Prädikat im Regelrumpf vorkommt)
• Yi (i=1…n)sind paarweise verschieden und kommen sowohl im Regelrumpf
als auch im Regelkopf jeweils einmal vor.
• Wi (i=1…n) entweder Variablen der Subgoals sind, oder zu der Menge
{X1,…,Xm} gehören.
Diese Bedingungen implizieren folgendes:
Das Adornment des Regelrumpfes einer solchen o.g. Regel ist identisch mit dem
Adornment des Regelrumpfes.
Auf diese Weise wird gewährleistet, dass bei der Evaluation eine Antwort auf das
rekursive Subgoal eine direkte Antwort an das aufrufende Subgoal liefert, da die
Antworten auf die freien Variablen sich direkt im aufrufenden Subgoal
wiederspiegeln.
Ziel der Definition ist es, dass das adornment-Pattern der Regel sich in der
rekursiven Regel(im Regelrumpf) wiederfindet.
Es ist hier wichtig, dass W1,…Wm keine freien Variablen sind.
Weiterhin ist es wichtig, dass Y1,….,Yn freie Variablen sind, und dass ihre Existenz
sowohl im Regelkopf als auch im Regelrumpf gesichert ist.
Die rekursive Regel hat im rechten äusseren Block des Regelrumpfes ein rekursives
Subgoal, die vorangehenden Subgoals im Regelrumpf bestehen aus EDBPrädikaten.
2.2.2 Beispiel:
Betrachte folgende Regelmenge:
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 15 von 24
R1:
R2:
p(X,Y)
p(X,Y)
[
[
k(X,Y)
k(X,Z) , p(Z,Y)
Die Regeln R1 und R2 definieren die transitive Hülle eines Graphen, die Relation
„p“ steht für einen Pfad und de Relation „k“ für eine Kante des Graphen.
Die Faktenmenge für „k“ sei {(x0,x1),….,(xn-1,xn)}
Die Anfrage sei {[Y] : p(x0 ,Y)} ?
Wenden wir die Magic Sets Methode an, werden speziell für die aktuelle Anfrage
folgende Regeln benötigt:
query_p(x0) als seed-Fakt
query_p1(Y) [ query_p1 (X) , k(X,Y)
answer_p (X,Y) [ query_p1(X) , k(X,Y)
answer_p (X,Y) [ query_p1(X) , k(X,Z) , answer_p(Z,Y)
Essentiell gesehen ist dieses Problem ein Graphenproblem und wird als singlesource reachabilty Problem bezeichnet. Man kann es durch eine Tiefensuche für
einen Graphen mit n Kanten in Zeit O(n) lösen [Blum2001*].
Man könnte von einem gegebenen Knoten x0 aus eine Tiefensuche starten und alle
über eine Kante erreichbaren Knoten berechnen. Diese Lösung wäre auch geeignet,
unsere Query zu beantworten.
Die Magic Query berechnet aus der Regel „k“ für „query_p“ die Faktenmenge
{x0,…,xn}.
Die für „p“ berechnete Faktenmenge ist {(xi,xj) | 0 ] i < j ] n}
Und speziell die Antwortmenge der Query {(x0,xj) | 0 < j ] n}
Die gesamte Evaluation generiert _(n2) Fakten (wenn man davon ausgeht, dass die
Basisfakten eine Grösse von O(n) haben), wie man leicht sehen kann.
answer_p(x0,x3)
query_p(x0)
k(x0, x1)
answer_p(x1,x3)
_________________________________________________________________________
Anwendung und Optimierung
k(x1, x2)
query_p(x1) der Magic Sets Methode
Taner Tas ©2003
Seite 16
von 24
answer_p(x
2,x3)
k(x2, x3)
…..
Reduziert man die Anfrage auf das Erreichbarkeitsproblem im Graphen, kommen
wir auf folgenden Schluss:
Die Regeln
answers(Y) 4 query_p(X) , k(X,Y)
query_p(x0)
query_p1(Y) [ query_p1 (X) , k(X,Y)
sind völlig hinreichend, um die gesamte Antwortmenge zu produzieren und
sie erzeugen nur O(n)(angenommen, die EDB-Prädikate haben die Grösse
o(n)) Fakten.
Der Grund liegt darin, dass die einzige übrig gebliebene rekursive Regel die
„query“-Regel ist, und diese hat nur ein rekursives Argument anstelle von
zwei in der ursprünglichen Rekursion.
Durch die Regel „query_p“ und „k“ wird sozusagen eine „Tiefensuche“ auf dem
Graphen der Grösse n durchgeführt, den wir Mithilfe der Basisrelation „k“
darstellen können. Die Regel „query_p“ bezeichnet hierbei die
Zusammenhangskomponenten des Graphes.
Dieses Pattern von Rekursionen werden wir weiter aufführen und die
Transformationstechnik näher kennen lernen.
2.2.3 Transformationstechnik für rechtslineare Rekursionen
Gegeben sei eine Regelmenge mit rechtslinear rekursiven Regeln der Form
p(X1,…Xm, Y1, …,Yn)1…m
G1, …,Gk, p(W1,…Wm,Y1,…,Yn)
wir nehmen O.B.D.A. an, dass die linken m Argumente gebunden sind.
Für jede solche Regel erzeugen wir die Regel.
query_p(W1,……Wm) 1…m
query_p(X1,…,Xm), G1, …,Gk
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 17 von 24
„query_p“ entsteht durch weglassen der freien Argumente von „p“
Entsprechend der Magic Sets Methode fügen wir nun ein „Seed-Fakt“ hinzu
query_p(X1,…,Xm)
{x1,…,xm} Anfragekonstanten
Aus den freien Variablen der Query erzeugen wir die Antwortregel
Die Antwortregel entsteht durch Extraktion der nichtrekursiven Bestandteile der
Regelmenge. D.h. für jede Regel nichtrekursive Regel der Form
p(X1,…Xm, Y1, …,Yn)
G1, …,Gk
konstruieren wir die Antwortregel
answer_p(Y1,…,Yn)
query_p (X1,…,Xm) 1…m , G1,…,Gk
Zuletzt wird die Anfrageregel mit {x1,…,xm} als Anfragekonstanten generiert.
p(x1,…,xm, Y1, …,Yn))
answer_p(Y1,…,Yn)
Die neu erzeugten Regeln
answer_p(Y1,…,Yn)
query_p (X1,…,Xm) 1…m , G1,…,Gk
query_p(X1,…,Xm)
query_p(X1,…,Xm), G1, …,Gk
query_p(W1,……Wm) 1…m
sind hinreichend, um die ewünschte Anfrage zu evaluieren.
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 18 von 24
2.3 Linkslineare Rekursion
2.3.1 Definition
Gegeben ist eine Menge von Regeln in DATALOG Notation, bestehend aus EDBund IDB-Prädikaten und ein Query-goal mit einem entsprechenden adornment W.
Wir nehmen an, dass nur ein rekursives IDB-Prädikat existiert.
(Def.)Datalog-Regeln werden linkslinear genannt, falls alle rekursiven Regeln,
unter Betrachtung des „adornments“ W folgende Form haben,
p(X1,…Xm, Y1, …,Yn)
p(X1,…Xm,V1,…,Vn), G1, …,Gk
Wir nehmen O.B.D.A. an, dass die ersten m Argumente (X1,…Xm) in p
entsprechend einem gegebenen Adornment W gebunden sind.
Wobei folgende Bedingungen erfüllt sind:
• G1,…Gk sind Subgoals bestehend aus EDB Prädikaten (um die Annahme zu
erfüllen, dass nur ein einziges rekursives Prädikat im Regelrumpf vorkommt)
• Yi und Vi (i=1…n) paarweise von Xi (i=1…n) verschieden sind.
• Xi (i=1…n) niemals in den Subgoals G1,…,Gk auftauchen.
2.3.2 Beispiel und Zusammenfassung
Dasselbe Beispiel aus 2.2.2 betrachten wir in der linkslinearen Ausführung.
R1:
R2:
p(X,Y)
p(X,Y)
[
[
k(X,Y)
p(X,Z) , k(Z,Y)
Die Anfrage sei {[Y] : p(x0 ,Y)} ?
Setzen wir die Anfragekonstante in die Regel ein, sehen wir, dass das gebundene
Argument an der ersten Position von „p“ stets „besetzt“ ist:
R1:
R2:
p(x0,Y)
p(x0,Y)
[
[
k(x0,Y)
p(x0,Z) , k(Z,Y)
Somit ist die erste Attributposition der Regeln redundant. Vereinfachen wir somit
die Notation, indem wir die rekursive Regel um das gebundene Argument kürzen,
so erhalten wir:
R1:
p(Y) [
k(x0,Y)
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 19 von 24
R2:
p(Y) [
p(Z) , k(Z,Y)
Wir können somit auch direkt ohne Umweg über die Magic Sets Methode die
Antwortmenge erzeugen.
answer_p(Y) [
answer_p(Y) [
k(x0,Y)
answer_p(Z) , k(Z,Y)
Währende der Evaluation können wir durch die systematische Ausweitung der
Antwortmenge rekursiv die gesamte Antwortmenge produzieren.
Wieder ist die Anzahl der Argumente der rekursiven Regel kleiner als ursprünglich.
Die Transformation erreicht jedoch keinen Performance-Vorteil gegenüber der
reinen Magic Sets Methode, vielmehr ist die Performance-Rate gleichzusetzen.
2.3.4
Ausblick: Gemischt lineare Rekursion
Regelmengen, die sowohl aus rechts- als auch linksrekursiven Regeln bestehen,
können von den Vorteilen der Ergebnisse der vorangegangenen Kapitel profitieren.
Eine kurze Erläuterung wäre:
Durch die Analyse der Bindungsmuster der gesamten gegebenen Regelmenge, stellt
man fest, welche Regeln Antworten erzeugen, und welche neue Bindungen
produzieren.
Für jede solche Regel konstruieren wir vereinfachte Regeln, wie in 2.2 und 2.3
erläutert wurde und werten diese Regeln aus.
Anhang1 Starburst SQL
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 20 von 24
Starburst
The goal of the Starburst project at IBM Almaden (1984-1992) was to build a complete,
operational prototype of an extensible relational database management system. The
extensibility built into every aspect of Starburst made it easier for the user to customize the
system for the user's special needs, to experiment with new database technologies, and to
rapidly incorporate new features that better support new application areas (such as
CAD/CAM, geographic, text, and expert systems) as well as traditional business
applications. Starburst allowed the user to add new storage methods for tables, new types
of access methods, user-defined operations on tables or columns of those tables, new query
optimization strategies, and user-defined actions in response to changes in the database,
among many others.
Making Starburst Extensible
Different kinds of internal mechanisms were used to make Starburst extensible.
To make the Starburst language extensible, an open-ended syntax was created that allowed
additions to existing commands without requiring modification of the underlying command
processor, through the addition of user-defined functions. To add a user-defined function,
e.g., "boundary overlap", an extender would insert the function name and parameter types
in the FUNCTIONS catalog, along with the C code implementing it.
Extensions deeper in Starburst, such as adding storage methods or access methods, were
made by registering with Starburst the new code to do certain standard operations -- such
as update, insert, and delete. This was done simply by initializing an entry in an internal
vector for each operation.
Starburst's authorization mechanism made it easy to add user-specific extensions. Access
privileges were granted or revoked on types of database objects for individual users or
groups of users. The authorization algorithm allowed arbitrary, acyclic nesting of user
groups. Regardless of the complexity of the user group nesting, testing authorizations took
constant time. Access privileges for database objects could be hierarchical and could
reflect the wide diversity in requirements and semantics allowed by Starburst's extensions.
It wass possible to restrict access to objects in a variety of ways, including recursively
revokable granting of privileges and transfer of object ownership.
Specialized Indices
Most current systems give a single way of storing data (e.g., a B-tree) and a single way of
reaching the data (e.g., B-tree indices). Starburst allowed the user to choose a storage
method and then to define multiple ways of accessing that data. These multiple access
paths, the attachments, had redundent information that is associated with the data (B-tree
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 21 von 24
indices, signature files, hash tables, join indices, single record integrity constraints and
referential integrity constraints). When the user updated the data, Starburst automatically
updated the attachments.
Cataloging objects (How does Starburst find things?)
Descriptive information, or descriptors, for all objects in the system were kept in system
catalogs. Descriptors contained information about queries or about objects needed by the
query execution routines, such as a table's storage method and all of its attachments. Since
object descriptors were packaged as records, objects associated with the standard Starburst
queries could be handled with the same facility as objects associated with extensions.
Performance and Query Optimization
A query is parsed, semantically checked, and rewritten into a form that is easier to
optimize. In Starburst, this form was known as the query graph model. Starburst provided
powerful and extensible tools for improving query performance that used this model. The
query rewrite engine allowed an extender to define query transformations (for example,
subquery to join transformations) that could improve performance. The query optimizer
determined an execution strategy using macro-like processing, which recognized operators
in the query graph and expanded them using named rules. An expansion might be
expanded, itself, and each expansion could have alternatives. Each branch of this resulting
decision tree was evaluated for its estimated cost of execution, and the lowest-cost branch
was chosen. Although rules were provided with the system, if the user added a new way of
accessing the data, the rules could be modified to reflect this new attachment.
Extensions
We made many extensions to Starburst. Through extensions to Starburst, we
incorporated the advanced structuring and data behavior features offered by object-oriented
database management systems, while retaining the significant gains in data independence
and data integrity of the relational model and upward compatibility with its standard access
language, SQL. Some of the advanced features supported by Starburst extensions include
hierarchies of user-defined types and functions, large unstructured and structured complex
objects, and user-defined rules (triggers) to respond to changes in the database.
Referenzen Starburst SQL
Making Starburst Extensible
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 22 von 24
L.M. Haas, J.C. Freytag, G.M. Lohman, H. Pirahesh, "Extensible Query Processing in Starburst",
Proceedings of ACM SIGMOD, Portland, Oregon (May 1989).
L.M. Haas, W. Chang, G.M. Lohman, J. McPherson, P.F. Wilms, G. Lapis, B. Lindsay, H.
Pirahesh, M. Carey, and E. Shekita, "Starburst Mid-Flight: As the Dust Clears", IEEE Trans. on
Knowledge and Data Engineering, March 1990, pp. 143-160. Also available as IBM Research
Report RJ7278, San Jose, CA, Jan. 1990. R. Gagliardi, George Lapis, Bruce Lindsay, "A Flexible
and Efficient Database Authorization Facility", IBM Research Report RJ 6826 (May 1989).
Specialized Indices
B. Lindsay, J. McPherson, and H. Pirahesh, "A Data Management Extension Architecture", Procs.
of ACM SIGMOD, May 1987, San Francisco, pp. 220-226. Also available as IBM Research
Report RJ5436, San Jose, CA, Dec. 1986.
W. Chang and H-J. Schek, "A Signature Access Method for the Starburst Database System", Procs.
of 15th International Conf. on Very Large Data Bases (VLDB), August 1989, Amsterdam, pp. 145153. Also available as IBM Research Report RJ6670, San Jose, CA, Feb. 1989.
M. Carey, E. Shekita, G. Lapis, B. Lindsay, and J. McPherson, "An Incremental Join Attachment
for Starburst," Procs. of 16th International Conference on Very Large Data Bases (VLDB),
Brisbane, Australia, August 1990, pp. 662-673. Also available as IBM Research Report RJ7544,
San Jose, CA, June 1990.
Performance and Query Optimization
W. Hasan, H. Pirahesh, "Query Rewrite Optimization in Starburst", IBM Research Report RJ 6367
(August 1988).
G.M. Lohman, "Grammar-like Functional Rules for Representing Query Optimization
Alternatives", Proceedings of ACM SIGMOD (June 1988).
M. Lee, J.C. Freytag, and G.M. Lohman, "Implementing an Interpreter for Functional Rules in a
Query Optimizer", Procs. of 14th International Conference on Very Large Data Bases (VLDB)
(August 1988, Long Beach, CA) pp. 218-229. Also available as IBM Research Report RJ6125, San
Jose, CA, March 1988.
K. Ono, G. Lohman, "Extensible Enumeration of Feasible Joins for Relational Query
Optimization", IBM Research Report RJ 6625 (December 1988).
K. Ono and G.M. Lohman, "Measuring the Complexity of Join Enumeration in Query
Optimization", Procs. of 16th Intl. Conf. on Very Large Data Bases (VLDB), August 1990,
Brisbane, Australia.
J.C. Freytag, "A Rule-Based View of Query Optimization", Proceedings of 1987 ACM SIGMOD
San Francisco (May 1987).
Recovery
C.Mohan, D. Haderle, B. Lindsay, H. Pirakesh, P. Schwartz, "ARIES: A Transaction Recovery
Method Supporting Fine-Granulairty Locking and Partial Rollback Using Write-Ahead Logging",
IBM Research Report RJ 6649 (January 1989).
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 23 von 24
C. Mohan, F. Levine, "ARIES/IM: An Efficient and High Concurrency Index Management Method
Using Write-Ahead Logging", IBM Research Report RJ 6846 (May 1989).
K. Rothernel, C. Mohan, "ARIES/NT: A Recovery Method Based on Write-Ahead Logging for
Nested Transactions", IBM Research Report RJ 6650 (January 1989), Proceedings 15th
International Conference on VLDB, Amsterdam, Netherlands (August 1989).
Extensions
G.M. Lohman, B.G. Lindsay, H. Pirahesh, and K.B. Schiefer, "Extensions to Starburst: Objects,
Types, Functions, and Rules", Comms. of ACM (Oct. 1991).
T.J. Lehman and B.G. Lindsay, "The Starburst Long Field Manager", Procs. of 15th Intl. Conf. on
Very Large Data Bases (VLDB), (August 1989, Amsterdam) pp. 375-383.
J. Widom and S.J. Finkelstein, "Set-Oriented Production Rules in Relational Database Systems",
Procs. of ACM-SIGMOD, May 1990, Atlantic City, NJ, pp. 259-270. Extended version available
as IBM Research Report RJ6880, San Jose, CA, June 1989, revised March 1990.
J. Widom and S.J. Finkelstein, "A Syntax and Semantics for Set-Oriented Production Rules in
Relational Database Systems (Extended Abstract)", SIGMOD Record, Special Issue on Rule
Management and Processing in Expert Database Systems, Sept. 1989, vol. 18, no. 3, pp. 36-45.
S. Ceri and J. Widom, "Deriving Production Rules for Constraint Maintenance", Procs. of 16th
International Conference on Very Large Data Bases (VLDB), August 1990, Brisbane, Australia,
pp. 566-577. Extended version available as IBM Research Report RJ7348, San Jose, CA, March
1990.
U. Schreier, H. Pirahesh, R. Agrawal, and C. Mohan, "Alert: an Architecture for Transforming a
Passive DBMS into an Active DBMS", Procs. of 17th International Conference on Very Large
Data Bases (VLDB), Sept. 1991, Barcelona, Spain.
_________________________________________________________________________
Anwendung und Optimierung der Magic Sets Methode
Taner Tas ©2003
Seite 24 von 24
Herunterladen