Sie sind auf Seite 1von 65

Anwendersoftware (AS)

Implementierung von Datenbanken


und Informationssystemen
Kapitel 9: Mengenorientierte Schnittstelle
Bernhard Mitschang
Universitt Stuttgart
Wintersemester 2013/2014
Teile zu diesem Folienskript beruhen auf einer hnlichen Vorlesung, gehalten von Prof. Dr. T. Hrder am
Fachbereich Informatik der Universitt Kaiserslautern und Prof. Dr. N. Ritter am Fachbereich Informatik der
Universitt Hamburg. Fr dieses Skriptum verbleiben alle Rechte (insbesondere fr Nachdruck) bei den
Autoren.

Mengenorientierte Schnittstelle

bersicht

bersetzungsverfahren fr Datenbanksprachen
Vorgehensweise
bersetzung vs. Interpretation

Formen der Wirtsspracheneinbettung


Direkte Einbettung
Aufruftechnik

Anfrageoptimierung

Anfragedarstellung
Standardisierung und Vereinfachung
Restrukturierung und Transformation
Kostenmodelle
Erstellung und Auswahl von Ausfhrungsplnen

Code-Erzeugung
Aufbau von Zugriffsmoduln
Bindezeitpunkte fr Anweisungstypen

Behandlung von Ad-hoc-Anfragen


2

Mengenorientierte Schnittstelle

Logische Datenstrukturen

Charakterisierung der
Abbildung:

Abbildungsfunktionen:

Operationen an der unteren Schnittstelle:

Eigenschaften der oberen Schnittstelle

SELECT
FROM
WHERE
AND
AND

PNR, ABT-NAME
ABTEILUNG, PERS, FAEHIGKEIT
BERUF = PROGRAMMIERER
FAEHIGKEIT.FA-NR = PERS.FA-NR
PERS.ABT-NR = ABTEILUNG.ABT-NR

Sichten
Basisrelationen
Relationale Ausdrcke Logische Zugriffspfade
Satzmengen
Einzelne Stze, Positionsanzeiger
FETCH FAEHIGKEIT USING ...
FETCH NEXT PERS ...
FETCH OWNER WITHIN ...

Zugriffspfad-unabhngiges (relationales) Datenmodell


Alle Sachverhalte und Beziehungen werden durch Werte dargestellt
Nicht-prozedurale (deskriptive) Anfragesprachen
Zugriff auf Satzmengen

Mengenorientierte Schnittstelle

Beispiele prozeduraler DB-Anfragen


Typische Beispiele (Netzwerkmodell)
FIND ANY PERS bezieht sich auf die (vorausgesetzte) Klausel LOCATION
MODE IS CALC des Satztyps PERS
FIND NEXT PERS WITHIN BESCHFTIGT SET bezieht sich auf eine relative
Position (Currency) in einer Setstruktur
FIND OWNER WITHIN BESCHFTIGT SET stellt den OWNER-Satz der current
Set-Ausprgung zur Verfgung.
Lediglich bei der allg. Suchanfrage fallen gewisse Optimierungsaufgaben an;
sie ist jedoch auf einen Satztyp beschrnkt

Mengenorientierte Schnittstelle

Prozedurale vs. deskriptive DB-Sprachen

Prozedurale Sprachen

Erlauben leichte Abbildung der DMLBefehle auf interne Satzoperationen (~1:1)


Verantwortung fr die Zugriffspfadauswahl
liegt beim Programmierer;
er bestimmt die Art und Reihenfolge der
Zugriffe durch Navigation
Bei der bersetzung sind lediglich
Namensauflsung und Formatkonversionen
erforderlich

Deskriptive Anfragen erfordern zustzlich

berprfung auf syntaktische Korrektheit


(komplexere Syntax)
berprfung von Zugriffsberechtigung und
Integrittsbedingungen
Anfrageoptimierung zur Erzeugung einer
effizient ausfhrbaren Folge interner
DBMS-Operationen

Zentrales Problem

Umsetzung deskriptiver Anfragen in eine


zeitoptimale Folge interner DBMSOperationen
Anfragebersetzer/-optimierer des DBMS
ist im wesentlichen fr eine effiziente
Abarbeitung verantwortlich, nicht der
Programmierer

Mengenorientierte Schnittstelle

bersetzung deskriptiver DB-Sprachen

Hohe Komplexitt der bersetzung, da die


Auswahlmchtigkeit

an der Prdikatenlogik erster Stufe


orientiert ist; durch zustzliche Prdikate
wie EXISTS, MATCHES, NULL, LIKE u. a.
wird diese sogar deutlich bertroffen
nicht auf einen Satztyp beschrnkt ist
unabhngige oder korrelierte Teilanfragen
zur Bestimmung von Suchargumenten in
beliebiger Schachtelungstiefe zulsst
zustzlich den Einsatz von Built-in- und
Sortier-Funktionen auf Partitionen der
Satzmenge gestattet

Zustzliche Anforderungen

auch die Manipulationsoperationen sind


mengenorientiert
referentielle Integritt ist aktiv mit Hilfe
referentieller Aktionen zu wahren
Operationen knnen sich auf Sichten von
Relationen beziehen
vielfltige Optionen der Datenkontrolle sind
zu bercksichtigen

Anfrageformulierung

Formulierung von nicht angemessenen


Anfragen (ohne Zugriffspfaduntersttzung)
erfordert in navigierenden Anfragesprachen
einen erheblichen Programmieraufwand
in deskriptiven Anfragesprachen dagegen
sind sie genauso leicht zu formulieren wie
gnstige Anfragen
Die Ausfhrung ist in beiden Fllen gleich
langsam

Mengenorientierte Schnittstelle

Beispiele deskriptiver SQL-Anfragen

B1: Einfache Anfrage


SELECT
FROM
WHERE
AND

PNR, PNAME, GEHALT/12


PERS
BERUF = W
PROV > GEHALT

Ersetzung durch
LET
INTO
FROM
WHERE
AND

C1 BE SELECT PNR, PNAME,


GEHALT/12
:X, :Y, :Z
PERS
BERUF =: W
PROV > GEHALT

mit Operatoren
OPEN
FETCH
INTO
CLOSE

C1
C1
:X, :Y, :Z
C1

T1

T2

T3

B2: Komplexere Anfrage


mit Verbundoperation sowie
unabhngige (T2) und korrelierte
(T3) Teilanfragen
SELECT
FROM
WHERE

P.PNR, P.NAME, A.ANAME


PERS P, ABT A
P.ANR = A.ANR

AND

P.GEHALT < (SELECT MAX(PROV)


FROM PERS)

AND

P.GEHALT > (SELECT AVG(PROV)


FROM PERS
WHERE ANR = P.ANR)

Mengenorientierte Schnittstelle

Komplexe Anfrage
SELECT a6.custkey, a6.custname, a4.stddeviation, a5.stddeviation,
a1.turnover1992, a2.turnover1993, a3.turnover1994
FROM
(SELECT a1.custkey, SUM(a1.endprice)
FROM tpch4.lineitem_orders a1, tpch4.lookup_orderday a2
WHERE a2.orderdate = a1.orderdate
AND
a2.orderyearkey = 1992
GROUP BY a1.custkey
) AS a1 (custkey, turnover1992),
(SELECT a1.custkey, SUM(a1.endprice)
FROM
tpch4.lineitem_orders a1, tpch4.lookup_orderday a2
WHERE a2.orderdate = a1.orderdate
AND
a2.orderyearkey = 1993
GROUP BY a1.custkey
) AS a2 (custkey, turnover1993),
(SELECT a1.custkey, SUM(a1.endprice)
FROM tpch4.lineitem_orders a1, tpch4.lookup_orderday a2
WHERE a2.orderdate = a1.orderdate
AND
a2.orderyearkey = 1994
GROUP BY a1.custkey
) AS a3 (custkey, turnover1994),
(SELECT a1.custkey, STDDEV(a1.endprice)
FROM
tpch4.lineitem_orders a1, tpch4.lookup_orderday a2,
(SELECT a1.custkey, a1.turnover1992, a2.turnover1993,
a3.turnover1994
FROM
...

Erzeugt durch ein OLAP-Tool

...

(SELECT a1.custkey, SUM(a1.endprice)


FROM tpch4.lineitem_orders a1, tpch4.lookup_orderday a2
WHERE a2.orderdate = a1.orderdate
AND
a2.orderyearkey = 1992
GROUP BY a1.custkey
) AS a1 (custkey, turnover1992),
(SELECT a1.custkey,
SUM(a1.endprice)
FROM tpch4.lineitem_orders a1,
tpch4.lookup_orderday a2
WHERE a2.orderdate = a1.orderdate
AND a2.orderyearkey = 1993
GROUP BY a1.custkey
) AS a2 (custkey, turnover1993),
(SELECT a1.custkey,
SUM(a1.endprice)
FROM tpch4.lineitem_orders a1,
tpch4.lookup_orderday a2
WHERE a2.orderdate = a1.orderdate
AND a2.orderyearkey = 1994
GROUP BY a1.custkey
) AS a3 (custkey, turnover1994)
WHERE a1.custkey = a2.custkey
AND a1.custkey = a3.custkey
AND a1.turnover1992 >= 500000
AND a2.turnover1993 >= 500000
AND a3.turnover1994 >= 500000
) AS a3 (custkey, turnover1992, turnover1993, turnover1994)
WHERE a2.orderdate = a1.orderdate
AND a2.orderyearkey IN (1992, 1993, 1994)
AND a1.custkey = a3.custkey
GROUP BY a1.custkey
) AS a4 (custkey, stddeviation),

Mengenorientierte Schnittstelle

Komplexe Anfrage
(SELECT a1.custkey,
STDDEV(a1.endprice) /
(CASE AVG(a1.endprice) WHEN 0 THEN NULL
ELSE AVG(a1.endprice) END)
FROM tpch4.lineitem_orders a1,
tpch4.lookup_orderday a2,
(SELECT a1.custkey,
a1.turnover1992,
a2.turnover1993,
a3.turnover1994
FROM
(SELECT a1.custkey,
SUM(a1.endprice)
FROM tpch4.lineitem_orders a1,
tpch4.lookup_orderday a2
WHERE a2.orderdate = a1.orderdate
AND a2.orderyearkey = 1992
GROUP BY a1.custkey
) AS a1 (custkey, turnover1992),
(SELECT a1.custkey,
SUM(a1.endprice)
FROM tpch4.lineitem_orders a1,
tpch4.lookup_orderday a2
WHERE a2.orderdate = a1.orderdate
AND a2.orderyearkey = 1993
GROUP BY a1.custkey
) AS a2 (custkey, turnover1993),
...

...
(SELECT a1.custkey,
SUM(a1.endprice)
FROM tpch4.lineitem_orders a1,
tpch4.lookup_orderday a2
WHERE a2.orderdate = a1.orderdate
AND a2.orderyearkey = 1994
GROUP BY a1.custkey
) AS a3 (custkey, turnover1994)
WHERE a1.custkey = a2.custkey
AND a1.custkey = a3.custkey
AND a1.turnover1992 >= 500000
AND a2.turnover1993 >= 500000
AND a3.turnover1994 >= 500000
) AS a3 (custkey, turnover1992, turnover1993, turnover1994)
WHERE a2.orderdate = a1.orderdate
AND a2.orderyearkey IN (1992, 1993, 1994)
AND a1.custkey = a3.custkey
GROUP BY a1.custkey
) AS a5 (custkey, stddeviation),
tpch4.lookup_customer a6
WHERE a4.custkey = a1.custkey
AND a4.custkey = a2.custkey
AND a4.custkey = a3.custkey
AND a4.custkey = a5.custkey
AND a4.custkey = a6.custkey
AND a5.stddeviation <= 0.66794004454646;

Mengenorientierte Schnittstelle

bersetzung von DB-Anweisungen


1. Lexikalische und syntaktische Analyse

Erstellung eines Anfragegraphs (AG) als Bezugsstruktur fr die nachfolgenden


bersetzungsschritte
berprfung auf korrekte Syntax (Parsing)

2. Semantische Analyse

Feststellung der Existenz und Gltigkeit der referenzierten Relationen, Sichten und
Attribute
Einsetzen der Sichtdefinitionen in den AG
Ersetzen der externen durch interne Namen (Namensauflsung)
Konversion vom externen Format in interne Darstellung

3. Zugriffs- und Integrittskontrolle

sollen aus Leistungsgrnden, soweit mglich, schon zur bersetzungszeit erfolgen


Zugriffskontrolle erfordert bei Wertabhngigkeit Generierung von Laufzeitaktionen
Durchfhrung einfacher Integrittskontrollen
(Kontrolle von Formaten und Konversion von Datentypen)
Generierung von Laufzeitaktionen fr komplexere Kontrollen
10

Mengenorientierte Schnittstelle

bersetzung von DB-Anweisungen


4. Standardisierung und Vereinfachung

Dienen der effektiveren bersetzung und frhzeitigen Fehlererkennung


berfhrung des AG in eine Normalform
Elimination von Redundanzen

5. Restrukturierung und Transformation

Restrukturierung zielt auf globale Verbesserung des AG ab;


bei der Transformation werden ausfhrbare Operationen eingesetzt
Anwendung von heuristischen Regeln (algebraische Optimierung) zur Restrukturierung
des AG
Transformation fhrt Ersetzung und ggf. Zusammenfassen der logischen Operatoren
durch Planoperatoren durch (nicht-algebraische Optimierung):
Meist sind mehrere Planoperatoren als Implementierung eines logischen Operators
verfgbar
Bestimmung alternativer Ausfhrungsplne (nicht-algebraische Optimierung):
Meist sind viele Ausfhrungsreihenfolgen oder Zugriffspfade auswhlbar
Bewertung der Kosten und Auswahl des gnstigsten Ausfhrungsplanes
Schritte 4 + 5 werden als Anfrageoptimierung zusammengefasst
11

Mengenorientierte Schnittstelle

bersetzung von DB-Anweisungen


6. Code-Generierung

Generierung eines zugeschnittenen Programms fr die vorgegebene (SQL-) Anfrage


Erzeugung eines ausfhrbaren Zugriffsmoduls
Verwaltung der Zugriffsmodule in einer DBMS-Bibliothek

bersetzung:
Komponenten

Parser

Zugriffs-/
Integrittskontolle
Analyse

Optimizer
Optimierung

Codegenerator
CodeGenerierung

Ausfhrungskontrolle

Interpreter

Ausfhrung

12

Mengenorientierte Schnittstelle

bersetzung vs. Interpretation

Anfrageanalyse und -optimierung knnen


zur bersetzungszeit des AP oder zur
Laufzeit (Interpretation) erfolgen
bersetzung:

Spracherweiterungsansatz erfordert
erweiterten Compiler C ,
Vorbersetzeransatz einen Pre-Compiler
(PC)
C bzw. PC fhren Abbildungsfunktionen
aus
Aufwndige Optimierung und effiziente
Ausfhrung mglich
nderungen des DB-Zustandes nach der
bersetzung werden nicht bercksichtigt
(neue Zugriffspfade, genderte Statistiken
etc.)
Invalidierung des Zugriffsmoduls und
Neubersetzung

Interpretation:

Gesamtkosten

Allgemeiner Interpreter wertet Anfrage


direkt zur Laufzeit aus
Aktueller DB-Zustand lsst sich fr
Auswertungsstrategie bercksichtigen
Sehr hohe Ausfhrungskosten bei
Programmschleifen sowie durch hufige
Katalogzugriffe
Interessant vor allem fr Ad-hoc-Anfragen
bzw. dynamische SQL-Anweisungen
(PREPARE / EXECUTE)

Interpretation
Ausfhrung

Vorbersetzung

#Satzzugriffe
13

Mengenorientierte Schnittstelle

bersetzung vs. Interpretation

Was heit Binden?


AP:

Select
From
Where

DB-Katalog:
SYSREL:
SYSATTR:

Tabellenbeschreibungen: Pers, . . .
Attributbeschreibungen:
Pnr, Name, Gehalt, . . .
SYSINDEX:
IPers(Beruf), . . .
SYSAUTH:
Nutzungsrechte
SYSINT/RULES: Integrittsbedingungen,
Zusicherungen, . . .

Pnr, Name, Gehalt


Pers
Beruf = Programmierer

Zeitpunkt des Bindens


bersetzungszeit (Z)

Laufzeit (LZ)

AP
Invalidierung
durch Schemanderungen
Interpretation:

bersetzungskosten:
unerheblich fr
Antwortzeit (AZ)

erheblich fr AZ

Zugriffe (zur LZ):


effizient
datenabhngig!

Zugriffe (zur LZ):


Ausgleich
gesucht!

teuer
datenunabhngig!

14

Mengenorientierte Schnittstelle

bersicht

bersetzungsverfahren fr Datenbanksprachen
Vorgehensweise
bersetzung vs. Interpretation

Formen der Wirtsspracheneinbettung


Direkte Einbettung
Aufruftechnik

Anfrageoptimierung

Anfragedarstellung
Standardisierung und Vereinfachung
Restrukturierung und Transformation
Kostenmodelle
Erstellung und Auswahl von Ausfhrungsplnen

Code-Erzeugung
Aufbau von Zugriffsmoduln
Bindezeitpunkte fr Anweisungstypen

Behandlung von Ad-hoc-Anfragen


15

Mengenorientierte Schnittstelle

Formen der Wirtssprachen-Einbettung

Selbstndige DB-Sprachen:
Deskriptive Anweisungen und
mengenorientierte Zugriffe sind die
natrliche Form des Einsatzes
Weiterverarbeitung der Ergebnisse
verlangt Einbettung der
DB-Anweisungen in eine Wirtssprache
Bei deskriptiven Sprachen mit
mengenorientiertem Datenzugriff
ergibt sich eine Fehlanpassung bei
der Kopplung mit satzorientierter
Verarbeitung
(impedance mismatch)

Prinzipielle Mglichkeiten
Direkte Einbettung
(Spracherweiterung)
Dabei wird syntaktisch keine
Unterscheidung zwischen Programmund DB-Anweisungen gemacht. Eine
DB-Anweisung wird als Zeichenkette
A ins AP integriert.
Aufruftechnik
Eine DB-Anweisung wird durch einen
expliziten Funktionsaufruf an das
Laufzeitsystem des DBS bergeben
(z. B. CALL DBS (A))

16

Mengenorientierte Schnittstelle

bersetzungstechniken fr AP mit DB-Anweisungen


AP mit
DB-Anweisungen

AP mit
DB-Anweisungen

Integrierte bersetzung

Vorbersetzung

Vorbersetzer
WirtssprachenCompiler C

erweiterter
WirtssprachenCompiler C'

bersetzung u.
Optimierung

modifiziertes AP

WirtssprachenCompiler C

Objektmodul

AP-bersetzungszeit

Ausfhrungsplne

Objektmodul

AP-Laufzeit
WirtssprachenLaufzeitsystem
Interpretation

WirtssprachenLaufzeitsystem

DBSLaufzeitsystem

DBSLaufzeitsystem

DB

Interpretationsansatz
bei Aufruftechnik

Kompilationsansatz
bei Spracherweiterung

DB
17

Mengenorientierte Schnittstelle

Direkte Einbettung / Spracherweiterung

bersetzung von AP mit


modifiziertem Wirtssprachen-Compiler
C: AP MC
Pre-Compiler
PC: AP AP
+
C: AP MC

Bindung von A
zur Z
zur LZ

(Optimierung)
(interner CALL-Aufruf)

Mgliche Vorgehensweisen bei C


bzw. PC:
A wird als Ergebnis von bersetzung
und Optimierung in eine interne Form
berfhrt, die eine direkte
Ausfhrung zur Laufzeit gestattet,
d. h., die Bindung von A an DBinterne Namen und Zugriffspfade
erfolgt zum bersetzungszeitpunkt.
A wird als aktueller Parameter eines
(internen) CALL-Aufrufs abgelegt,
seine weitere Behandlung erfolgt erst
zur Laufzeit. A kann entweder
bersetzt oder interpretiert werden.

18

Mengenorientierte Schnittstelle

Aufruftechnik

bersetzung von AP mit


C: AP MC
keine Modifikation des WirtssprachenCompilers notwendig

Bindung von A:
zur LZ

Interpretation/bersetzung +
Bindung zur Laufzeit
Hherer konzeptioneller Abstand als
bei direkter Einbettung

19

Mengenorientierte Schnittstelle

bersetzung und
Ausfhrung von DBAnweisungen
Beispiel: System R

Quellprogramm AP
SELECT...
FROM...
WHERE...

Analyse
System R
Pre-Compiler
XPREP
Optimierung

bersetzungszeit

modifiziertes
Quellprogramm AP
CALL XDBS

CodeGenerierung

StandardCompiler
(PL/1)

Objektmodul
von AP

Zugriffsmodul fr AP
Anwendungscode
mit RSS-Aufrufen
relative
Adressierung

Laden
Binder/
Lader

Ausfhrungszeit

Zugriffsmodul fr AP
ablauffhiges
AP

Ein/Ausgabe

System R
Laufzeitsyst.
XDBS

Daten

absolute
Adressierung

Zugriffssystem RSS

Aufruf
Programm
Zugriff
DB

20

Mengenorientierte Schnittstelle

Formen der Wirtssprachen-Einbettung


Art der DB-seitigen Datenstrukturen im AP
Variante 1:
Die Datenstrukturen, auf die das AP zugreift, sind als Subschema
(oder Sicht) explizit im AP deklariert, d. h., das AP besitzt einen
statisch zugeordneten Bereich fr die Datenstrukturen der DB (UWA =
User Working Area)
Variante 2:
Im AP ist kein Speicherplatz fr DB-seitige Datenstrukturen reserviert.
DB-Werte werden explizit an normale Programmvariablen bergeben

21

Mengenorientierte Schnittstelle

Klassifikation der DB-Schnittstelle


Operatoren in Wirtssprache integriert
ja

Datenstrukturen
in AP
deklariert

nein

Ja

Direkte Einbettung
bergabe in statisch
zugeordneten
Datenstrukturen
B-Typ = C/C

CALL-Technik
bergabe in statisch
zugeordneten
Datenstrukturen
B-Typ = C/L

Nein

Direkte Einbettung
bergabe an ProgrammVariable

CALL-Technik
bergabe an
Programmvariable/
Pufferbereiche
B-Typ = L/L

B-Typ = L/C

Bindungstyp (B-Type): Bindezeitpunkte fr Datenstrukturen/Operatoren


C = Compilerzeitbindung
L = Laufzeitbindung
22

Mengenorientierte Schnittstelle

Beispiele der Wirtssprachen-Einbettung


Datenstrukturen und Operatoren in Wirtssprache integriert
Subschema in UWA (CODASYL)
DDL/DML

FIND X-RECORD USING Y, Z

Datenstrukturen in Wirtssprache integriert


Subschema in UWA

CALL "DML" USING FUNKTIONSNAME, FUNKTIONSWAHL,


ZUSATZWAHL, BENUTZERINFO, ...

Operatoren in Wirtssprache integriert


Bsp.: SQL

DECLARE C1 CURSOR FOR


SELECT PNR, PNAME
FROM
PERS
WHERE BERUF= :Z AND ANR = K55
...
FETCH C1 INTO :X, :Y

Keine Integration
CALL ADABAS
(CONTROL_BLOCK, FOBU, REBU, SEBU, VABU, ISNBU)

23

Mengenorientierte Schnittstelle

Einbettung einer mengenorientierten


Schnittstelle

SQL-Anweisung:

SELECT
FROM
WHERE
AND

PNR, PNAME, GEHALT/12


PERS
BERUF=Operateur
PROV>GEHALT

DBS stellt Anweisungen bereit zur:


Spezifikation der gesuchten Tupelmenge (Qualifikationsoperator)
sukzessiven Bereitstellung der qualifizierten Tupel (Abholoperator)
DECLARE
SELECT
FROM
WHERE
AND

C1 CURSOR FOR
PNR, PNAME, GEHALT/12
PERS
BERUF = :W
PROV > GEHALT

OPEN C1;

FETCH C1 INTO :X, :Y, :Z;


CLOSE C1;

Bindung von W, z.B. Operateur,


Aktivierung des Cursors
Abholen eines Tupels
Deaktivierung des Cursors

24

Mengenorientierte Schnittstelle

Einbettung einer mengenorientierten


Schnittstelle

Mgliche Ersetzung durch Pre-Compiler:


DECLARE C1 ...
OPEN C1

FETCH C1 INTO ...

Kommentar
DCL T(3) POINTER;
T(1) = ADDR(W)
CALL XDBS (ZM1, 2, OPEN, ADDR(T))
T(1) = ADDR(X);
T(2) = ADDR(Y);
T(3) = ADDR(Z);
CALL XDBS (ZM1, 2, FETCH, ADDR(T))

25

Mengenorientierte Schnittstelle

bersicht

bersetzungsverfahren fr Datenbanksprachen
Vorgehensweise
bersetzung vs. Interpretation

Formen der Wirtsspracheneinbettung


Direkte Einbettung
Aufruftechnik

Anfrageoptimierung

Anfragedarstellung
Standardisierung und Vereinfachung
Restrukturierung und Transformation
Kostenmodelle
Erstellung und Auswahl von Ausfhrungsplnen

Code-Erzeugung
Aufbau von Zugriffsmoduln
Bindezeitpunkte fr Anweisungstypen

Behandlung von Ad-hoc-Anfragen


26

Mengenorientierte Schnittstelle

Anfrageoptimierung

Von der Anfrage (Was?) zur


Auswertung (Wie?)
Ziel: kostengnstiger
Auswertungsweg
Einsatz einer groen Anzahl von
Techniken und Strategien
logische Transformation von Anfragen
Auswahl von Zugriffspfaden
optimierte Speicherung von Daten auf
Externspeichern

Schlsselproblem

Optimierungsziel:
Minimierung der Ressourcennutzung
fr gegebenen Output
Antwortzeitminimierung fr
eine gegebene Anfragesprache,
einem Mix von Anfragen
verschiedenen Typs und
einer gegebenen Systemumgebung!

oder Maximierung des Outputs bei


gegebenen Ressourcen
Durchsatzmaximierung ?

genaue Optimierung ist im


allgemeinen nicht berechenbar
Fehlen von genauer statistischer
Information
breiter Einsatz von Heuristiken
(Daumenregeln)
27

Mengenorientierte Schnittstelle

Anfrageoptimierung

Welche Kosten sind zu


bercksichtigen?
E/A-Kosten (# der physischen
Referenzen)
Berechnungskosten (CPU-Kosten,
Pfadlngen)
Speicherungskosten (temporre
Speicherbelegung im DB-Puffer und
auf Externspeichern)
Kommunikationskosten in verteilten
DBS!
(# der Nachrichten, Menge der zu
bertragenden Daten)

Kostenarten sind nicht unabhngig


voneinander
in zentralisierten DBS oft
gewichtete Funktion von
Berechnungs- und E/A-Kosten

Wie wird am besten vorgegangen?


Schritt 1:
Finde nach bersetzung geeignete
Interndarstellung fr die Anfrage
(Anfragegraph)
Schritt 2:
Wende die logische Restrukturierung
auf den Anfragegraph an
Schritt 3:
Bilde die restrukturierte Anfrage auf
alternative Folgen von Planoperatoren
(Transformation) ab (Mengen von
Ausfhrungsplnen)
Schritt 4:
Berechne Kostenvoranschlge fr
jeden Ausfhrungsplan und whle
den billigsten aus

28

Mengenorientierte Schnittstelle

Anfrageoptimierung berblick
Anfrage

bersetzung

Syntaktische Analyse
Semantische Analyse (Zugriffsund Integrittskontrolle)
Standardisierung
Vereinfachung
Anfragegraph

Optim ierung

Anfragerestrukturierung
Anfragetransformation

Ausfhrungsplan

Ausfhrung

Interpretation

CodeGenerierung
Ausfhrung

bersetzungszeit
Laufzeit

Anfrageergebnis

Bereitstellung

Bereitstellung in
Programmierumgebung

29

Mengenorientierte Schnittstelle

Standardisierung einer Anfrage

Standardisierung
Wahl einer Normalform
z.B. konjunktive
Normalform
(A11 OR ... OR A1n)
AND ...
AND (Am1 OR ... OR Amn)
Verschiebung von
Quantoren

Umformungsregeln fr Boole'sche Ausdrcke


Kommutativregeln
A OR
B
A AND B
Assoziativregeln
(A OR
B) OR C
(A AND B) AND C
Distributivregeln
A OR
(B AND C)
A AND (B OR C)
De Morgansche Regeln
NOT(A AND B)
NOT(A OR
B)
Doppelnegationsregel
NOT(NOT(A))

B
B

OR
AND

A
A

A
A

OR
AND

(B
(B

OR
AND

(A
(A

OR
AND

B)
B)

AND
OR

NOT(A)
NOT(A)

OR
AND

C)
C)
(A
(A

OR
AND

C)
C)

NOT(B)
NOT(B)

Idempotenzregeln fr Boole'sche Ausdrcke


A
A
A
A
A
A
A
A
A

OR A
AND A
OR NOT(A)
AND NOT(A)
AND (A OR B)
OR (A AND B)
OR FALSE
OR TRUE
AND FALSE

A
A
TRUE
FALSE
A
A
A
TRUE
FALSE
30

Mengenorientierte Schnittstelle

Vereinfachung einer Anfrage


quivalente Ausdrcke knnen einen unterschiedlichen Grad an
Redundanz besitzen
Behandlung/Eliminierung gemeinsamer Teilausdrcke
(A1 = a11 OR A1 = a12) AND (A1 = a12 OR A1 = a11)

Vereinfachung von Ausdrcken, die an leere Relationen gebunden sind


Konstanten-Propagierung
A op B AND B = const. A op const.

nicht-erfllbare Ausdrcke
A B AND B > C AND C A A > A false

Nutzung von Integrittsbedingungen (IB)


IB sind fr alle Tupel der betreffenden Relation wahr
A ist Primrschlssel: A keine Duplikateliminierung erforderlich
Regel: FAM-STAND = verh. AND STEUERKLASSE 3
Ausdruck: (FAM-STAND = verh. AND STEUERKLASSE = 1) false
31

Mengenorientierte Schnittstelle

Vereinfachung einer Anfrage


Verbesserung der Auswertbarkeit
Hinzufgen einer IB zur WHERE-Bedingung verndert den Wahrheitswert
eines Auswahlausdrucks nicht
Einsatz zur verbesserten Auswertung (knowledge-based query processing)
einfachere Auswertungsstruktur, jedoch effiziente Heuristiken bentigt

32

Mengenorientierte Schnittstelle

Interndarstellung einer Anfrage

Problematik: Finden eines entsprechenden Darstellungsschemas, mit dem dann


geeignete Interndarstellungen einer Anfrage mglich sind.
zentrale Datenstruktur fr bersetzung und Optimierung
entscheidend fr die Effizienz und Erweiterbarkeit des AP

Eigenschaften eines guten Darstellungsschemas


Prozeduralitt

Externe Anfrage: deskriptive Form (Relationenkalkl oder SQL-Notation)


Interndarstellung: prozedurale Darstellung der Anfrage
Deskriptive DB-Sprache in eine an die Relationenalgebra angelehnte Darstellung umsetzen:
eine deklarative Beschreibung des Anfrageergebnisses wird bersetzt in einen Algorithmus oder
Plan, dargestellt als Folge von Algebraoperatoren.
Diese Vorgehensweise wird von den meisten DBS bernommen, wobei die Menge an
verfgbaren (Algebra-)Operatoren von einem zum anderen DBS durchaus differieren kann.

Flexibilitt
- Erweiterungen des Datenmodells und der DB-Sprache
- Transformationen im Rahmen des nachfolgenden Optimierungsschritts

Effizienz
- effiziente Datenstruktur mit geeigneten Zugriffsfunktionen
33

Mengenorientierte Schnittstelle

Interndarstellung einer Anfrage

Klassen von Darstellungsschemata


lineare oder auch matrixfrmige
Interndarstellung
- Relationenalgebra
- Relationenkalkl

SELECT
FROM
WHERE
AND
AND

strukturierte Interndarstellung

Operatorgraph

- Zerlegungsbaum
- Objektgraph
- Operatorgraph

Name, Beruf
ABT a, PERS p, PM pm, PROJ pj
a.Anr = p.Anr AND a.Aort = KL
p.Pnr = pm.Pnr AND pm.Jnr = pj.Jnr
pj.Port = KL

Ergebnis

Beispiel
Finde Name und Beruf von
Angestellten, die Projekte in KL
durchfhren und deren zugehrige
Abteilung sich ebenfalls in KL
befindet

PROJ( , {Name, Beruf})

JOIN ( { a, p, pm, pj } (a.Aort = KL AND a.Anr=p.Anr


AND p.Pnr=pm.Pnr
AND pm.Jnr=pj.Jnr
AND pj.Port=KL))
ABT

PERS

PM

PROJ
34

Mengenorientierte Schnittstelle

Anfrageoptimierung berblick
Anfrage

bersetzung

Syntaktische Analyse
Semantische Analyse (Zugriffsund Integrittskontrolle)
Standardisierung
Vereinfachung
Anfragegraph

Optim ierung

Anfragerestrukturierung
Anfragetransformation

Ausfhrungsplan

Ausfhrung

Interpretation

CodeGenerierung
Ausfhrung

bersetzungszeit
Laufzeit

Anfrageergebnis

Bereitstellung

Bereitstellung in
Programmierumgebung

35

Mengenorientierte Schnittstelle

Anfrageoptimierung
Aufgabe: Abbildung
von den logischen Operationen der Interndarstellung
ber zugeordnete ausfhrbare Operationen
auf effizient durchfhrbare Ausfhrungsplne
Problematik:
Komplexitt dieser Aufgabe
Finden des besten unter den vielen mglichen Ausfhrungsplnen
leistungsbestimmende Merkmale:
-

Wahl der physischen Operatoren


Wahl der besten Realisierungsalternative fr einen physischen Operator
Reihenfolge der Operatorausfhrung
Gre der Zwischenergebnisse

Schritte:
Anfragerestrukturierung
Anfragetransformation
36

Mengenorientierte Schnittstelle

Anfragerestrukturierung
Wichtigste Regeln fr Restrukturierung und Transformation
Selektionen () und Projektionen () ohne Duplikateliminierung sollen
mglichst frhzeitig ausgefhrt werden.
Folgen von unren Operatoren (wie und ) auf einer Relation sind zu einer
Operation mit komplexerem Prdikat zusammenzufassen.
Selektionen und Projektionen, die eine Relation betreffen, sollen so
zusammengefasst werden, dass jedes Tupel nur einmal verarbeitet werden
muss.
Bei Folgen von binren Operatoren (wie , , , ) ist eine Minimierung der
Gre der Zwischenergebnisse anzustreben.
Gleiche Teile im AG sind nur einmal auszuwerten.

Zusammenfassung von Operationsfolgen


R1: An(... A2(A1(Rel))...) An (Rel)
R2: pn(... p2(p1(Rel))...)...) p1 AND p2 ... AND pn (Rel)

Minimierung der Gre von Zwischenergebnissen


selektive Operationen (, ) vor konstruktiven Operationen ( )
37

Mengenorientierte Schnittstelle

Restrukturierungsalgorithmus
1. Zerlege komplexe Verbundprdikate so, dass sie binren Verbunden zugeordnet
werden knnen (Bilden von binren Verbunden).
2. Teile Selektionen mit mehreren Prdikatstermen in separate Selektionen mit
jeweils einem Prdikatsterm auf.
3. Fhre Selektionen so frh wie mglich aus, d. h., schiebe Selektionen hinunter zu
den Blttern des AG (selection push-down).
4. Fasse einfache Selektionen zusammen, so dass aufeinander folgende Selektionen
(derselben Relation) zu einer verknpft werden.
5. Fhre Projektionen ohne Duplikateliminierung so frh wie mglich aus,
d. h., schiebe sie soweit wie mglich zu den Blttern des AG hinunter (projection
push-down).
6. Fasse einfache Projektionen (derselben Relation) zu einer Operation zusammen.

38

Mengenorientierte Schnittstelle

Anfragetransformation
Zusammenfassung von logischen Operatoren (Ein- und Zwei-VariablenAusdrcke) und ihre Ersetzung durch Planoperatoren:

Typische Planoperatoren in relationalen Systemen

auf einer Relation:


Selektion, Projektion, Sortierung, Aggregation, nderungsoperationen (Einfgen, Lschen,
Modifizieren), ACCESS zum Zugriff auf Basisrelationen
+ Erweiterungen: Rekursion, Gruppierung, . . .
auf zwei Relationen:
Verbund, Mengen-Operationen, Kartesisches Produkt.

Anpassungen im AG zum effektiven Einsatz von Planoperatoren

Gruppierung von direkt benachbarten Operatoren zur Auswertung durch einen Planoperator;
z. B. lassen sich durch einen speziellen Planoperator ersetzen:
Verbund (oder Kartesisches Produkt) mit Selektionen und/oder Projektionen auf den beteiligten
Relationen.
Bestimmung der Verknpfungsreihenfolge bei Mengen- und Verbundoperationen;
dabei sollen die minimalen Kosten fr die Operationsfolge erzielt werden. Als Heuristik ist dazu die
Gre der Zwischenergebnisse zu minimieren, d. h., die kleinsten (Zwischen-)Relationen sind immer
zuerst zu verknpfen.
Erkennung gemeinsamer Teilbume, die dann nur jeweils einmal zu berechnen sind. Allerdings steht
dieser Einsparung die Zwischenspeichung der Ergebnisrelation gegenber.
39

Mengenorientierte Schnittstelle

Bewertung von Ausfhrungsplnen


Grundstzliche Probleme
Anfrageoptimierung beruht i.A. auf zwei fatalen Annahmen
Alle Datenelemente und alle Attributwerte sind gleichverteilt
Suchprdikate in Anfragen sind unabhngig
beide Annahmen sind falsch (im allgemeinen Fall)

Beispiel
(GEHALT 100K) AND (ALTER BETWEEN 20 AND 30)
lineare Interpolation, Multiplikation von Wahrscheinlichkeiten

Lsungen ?
Verbesserung der Statistiken/Heuristiken
Berechnung/Bewertung von noch mehr Ausfhrungsplnen

Obwohl die Kostenabschtzungen meist falsch sind . . .


40

Mengenorientierte Schnittstelle

Eingabe:

Erstellung und Auswahl von


Ausfhrungsplnen

optimierter Anfragegraph (AG)


existierende Speicherungsstrukturen und Zugriffspfade
Kostenmodell

Ausgabe:
optimaler Ausfhrungsplan (oder wenigstens gut)

Vorgehensweise:
Generiere alle vernnftigen logischen Ausfhrungsplne zur Auswertung der
Anfrage
Vervollstndige die Ausfhrungsplne durch Einzelheiten der physischen
Datenreprsentation (Sortierreihenfolge, Zugriffspfadmerkmale, statistische
Information)
Whle den billigsten Ausfhrungsplan gem dem vorgegebenen
Kostenmodell aus

41

Mengenorientierte Schnittstelle

Erstellung und Auswahl von


Ausfhrungsplnen
Regeln zur
Plangenerierung

Kostenmodell

{p1, , pn}

Plangenerierung

Sakt

Suchraum
...

Kostenabschtzung
Best-Plan
{p1, , pn}
{pi, , pj}

optimierter
AG

Weitersuchen

Reduzierung

Nein

Suchstrategie
AAP: Anfrageausfhrungsplan
(engl. QEP: Query Evaluation Plan)

Terminierung

Suchstrategieparameter

Ja

Ausfhrungsplan
AAP

Quelle: [Mit95]

42

Mengenorientierte Schnittstelle

Erstellung und Auswahl von


Ausfhrungsplnen
Wie entstehen alternative Ausfhrungsplne fr einen AG?
fr jeden Planoperator liegen verschiedene Methoden (Implementierungen)
vor
Operationsreihenfolgen (z. B. bei Mehrfachverbunden) knnen variiert werden
So bilden sich bei komplexen Anfragen sehr groe Suchrume mit
Alternativen (z. B. 1070 mgliche Ausfhrungsplne bei einer Anfrage mit 15
Verbunden)

Generierung durch Optimizer

kleine Menge der Plne, die den optimalen Plan enthlt


Einschrnkung durch Heuristiken
hierarchische Generierung basierend auf dem Schachtelungskonzept von SQL
Zerlegung in eine Menge von Teilanfragen mit hchstens Zwei-VariablenAusdrcken

43

Mengenorientierte Schnittstelle

Erstellung und Auswahl von


Ausfhrungsplnen

Plangenerierung soll

immer und mglichst schnell den optimalen Plan finden


mit einer mglichst kleinen Anzahl generierter Plne auskommen

Suchstrategien

voll-enumerativ
beschrnkt-enumerativ
zufallsgesteuert
Reduzierung: Bestimmte Suchpfade zur Erstellung von AAPs werden nicht
weiter verfolgt

Kostenabschtzung
verlangt hinreichend genaues Kostenmodell
wird bei allen Suchverfahren inkrementell durchgefhrt

44

Mengenorientierte Schnittstelle

Erstellung und Auswahl von


Ausfhrungsplnen

Problemdarstellung - Beispiel
SELECT
FROM
WHERE
AND

P.NAME, P.BERUF, J.NAME


PERS P, ABT A, PROJ J
A.EIN > 1000000 AND J.ORT='KL'
A.ANR = P.ANR AND A.ANR = J.ANR

Zugehriger Anfragegraph
NAME, ANR, PNAME

ANR, NAME, BERUF

ABT

ANR
EIN > 1 Mio
PERS

ANR, PNAME
ORT = KL
PROJ

45

Mengenorientierte Schnittstelle

Erstellung und Auswahl von


Ausfhrungsplnen
A
a IA(ANR)

b IA(EIN)

c Scan(A)

N1

N1

N1
Kostenabschtzung:

C (A.ANR)
P
d IP(ANR)

e IP(BERUF)

N2

Kostenabschtzung:

N2

C (P.ANR)

g IJ(ANR)

Scan(P)
N2

Kostenabschtzung:

N3
C (J.ANR)

IJ(ORT)
N3

Scan(J)
N3

IJ(PNAME)
N3

a) mgliche Zugriffspfade fr die einzelnen Relationen


46

Mengenorientierte Schnittstelle

Erstellung und Auswahl von


Ausfhrungsplnen

AAP

A
a
N1

b
N1

d
N1

N2

e
N2

J
f

g
N2

N3

h
N3

j
N3

N3

b) Lsungsbaum fr einzelne Relationen:


Reduzierung durch Abschneiden von Teilbumen

47

Mengenorientierte Schnittstelle

Erstellung und Auswahl von


Ausfhrungsplnen

AAP

(A, P)
b

a
N1
d
N4

(A, J)
a

N1
d

N4 N4

N1
g

N4

N5

(P, A)
d

b
h

N5 N5

N1
h
N5

(J, A)
e

N2
a

N4

N4 N4

g
N2
b

N4

h
N3
a
b

N3
a

N5

N5N5

N5

c) Erweiterter Lsungsbaum fr den Nested-Loop-Verbund mit der zweiten Relation


Kostenabschtzung pro Pfad: z. B. durch C(C(A.ANR) + C(P.ANR) + Verbundkosten)

48

Mengenorientierte Schnittstelle

Ausfhrungsplan Beispiel
JOIN

Anfrage-Beispiel:
SELECT
FROM
WHERE
AND

Method: Sort-Merge
Pred:
A.Anr = P.Anr
Inner:
Outer:

Name, Beruf
Pers P, Abt A
P.Anr = A.Anr
A.Mgr = Coy

Ein mglicher Operatorbaum:

SORT

GET

Cols: Anr
Input:

Table: Pers
Cols: Name, Beruf
Input:

ACCESS
Table:
Cols:
Pred:

ACCESS
Abt
Anr, Mgr
Mgr = Coy

Table:
Cols:
Pred:

I (Pers(Anr))
TID, Anr

Dazugehriges Programm:
JOIN (Sort-Merge, A.Anr = P.Anr,
SORT (ACCESS (Abt, {Anr, Mgr}, {Mgr = Coy}), Anr),
GET (ACCESS (I (Pers(Anr)), {TID, Anr}, ), Pers, {Name, Beruf} , )).
49

Mengenorientierte Schnittstelle

Berechnung der Zugriffskosten


Optimizer erstellt Kostenvoranschlag fr jeden Ausfhrungsplan
(mglicher Lsungsweg)
Gewichtete Kostenformel:
C = #physischer Seitenzugriffe + W * (#Aufrufe des Zugriffssystems)
gewichtetes Ma fr E/A- und CPU-Auslastung
W ist das Verhltnis des Aufwandes fr einen ZS-Aufruf zu einem
Seitenzugriff

Ziel der Gewichtung: Minimierung der Kosten in Abhngigkeit


des Systemzustandes
System "I/O-bound": kleines W
# I ns tr. p ro ZS A uf r u f
W I O = ------------------------------------------------------------------------------------------------------------------# In s tr. p ro E A + Zug r iff s zeit MI PS -R ate

1000 I.
W I O = -----------------------------------------------------------7--------------- = 0, 008
2500 I . + 12 msec 10 I./sec

System "CPU-bound": relativ groes W


#Ins tr.pro ZS Aufruf
W CP U = ------------------------------------------------------------#Ins tr. pro E A

1000- = 0, 4
W C PU = ----------2500
50

Mengenorientierte Schnittstelle

Kostenmodell statistische Werte

statistische Gren fr Segmente:

MS

LS

Anzahl der Datenseiten des


Segmentes S
Anzahl der leeren Seiten in S

statistische Gren fr Relationen:

NR

TR,S

CR

Anzahl der Tupel der Relation R


(Card(R))
Anzahl der Seiten in S
mit Tupeln von R
Clusterfaktor (Anzahl Tupel
pro Seite)

statistische Gren pro Index I auf


Attributen A einer Relation R:

jI

BI
...

Anzahl der Attributwerte/


Schlsselwerte im Index
(=Card (A(R))
Anzahl der Blattseiten (B*-Baum)

Statistiken mssen im DB-Katalog


gewartet werden
Aktualisierung bei jeder nderung
sehr aufwendig
zustzliche Schreib- und LogOperationen
DB-Katalog wird zum Sperr-Engpass

Alternative:
Initialisierung der statistischen Werte
zum Lade- oder Generierungszeitpunkt von Relationen und
Indexstrukturen
periodische Neubestimmung der
Statistiken durch eigenes Kommando/
Dienstprogramm (DB2: RUNSTATS)

51

Mengenorientierte Schnittstelle

Kostenmodell Berechnungsgrundlagen

Selektivittsfaktor SF
Mit Hilfe der statistischen Werte kann der Optimizer jedem Verbundterm im
Qualifikationsprdikat einen Selektivittsfaktor (0 SF 1) zuordnen (erwarteter Anteil
an Tupeln, die das Prdikat erfllen): Card (p(R)) = SF(p) x Card (R)

Selektivittsfaktor SF bei:
Ai=ai

Ai = Ak

Ai ai (oder Ai > ai)

Ai BETWEEN ai AND ak

Ai IN (a1, a2, ..., ar)

1/ji

wenn Index auf Ai

1/10

sonst

1 / Max(ji, jk)

wenn Index auf Ai, Ak

1 / ji

wenn Index auf Ai

1 / jk

wenn Index auf Ak

1/10

sonst

(amax - ai) / (amax - amin)

wenn Index auf Ai


und Wert interpolierbar

1/3

sonst

(ak-ai) / (amax - amin)

wenn Index auf Ai


und Wert interpolierbar

1/4

sonst

r / ji

wenn Index auf Ai und


SF < 0.5

1/2

sonst

SF =

SF =

SF =

SF =

SF =

52

Mengenorientierte Schnittstelle

Kostenmodell Berechnungsgrundlagen
Berechnung von Ausdrcken
SF (p(A) p(B)) = SF (p(A)) . SF (p(B))
SF (p(A) p(B)) = SF (p(A)) + SF (p(B)) - SF (p(A)) . SF (p(B))
SF ( p(A)) = 1 - SF (p(A))

Join-Selektivittsfaktor (JSF)
Card (R S) = JSF * Card(R) * Card(S)
bei (N:1)-Joins (verlustfrei): Card (R S) = Max(Card(R), Card(S))

53

Mengenorientierte Schnittstelle

Beispiel: Einfache Anfrage

Vorhandene Zugriffspfade

NAME, GEHALT
PERS
BERUF = PROGRAMMIERER
GEHALT 100.000

Statistische Kennwerte

Relationen-Scan im Segment von PERS


IPERS(BERUF)
IPERS(GEHALT)
LINK von FAEHIGKEIT nach PERS

SELECT
FROM
WHERE
AND

Der Optimizer findet folgende Parameter im DB-Katalog:


N = # der Tupel in Relation PERS
C = durchschnittliche # von PERS-Tupeln pro Seite
ji = Index-Kardinalitt (#Attributwerte fr Ai)
...
+ Information ber Clusterbildung

Annahmen
Jeder 10. Programmierer hat ein Gehalt > 100 K
Jeder 2. Angestellte mit Gehalt > 100 K ist Programmierer

54

Mengenorientierte Schnittstelle

Methode 1: Scan ber IPERS(BERUF)


OPEN SCAN auf IPERS(BERUF) bei BERUF = PROGRAMMIERER
FETCH NEXT WHERE GEHALT 100.000;
CLOSE SCAN wenn BERUF PROGRAMMIERER

Kosten:
Clusterbildung auf IPERS(BERUF)

N
N
K 3 + ------------------------- + w --------------------------j BER UF 10
C j B ERUF

keine Clusterbildung

N
N
K 3 + ----------------- + w --------------------------j BER UF 10
jB ERUF

55

Mengenorientierte Schnittstelle

Methode 2: Scan ber IPERS(GEHALT)


OPEN SCAN auf IPERS(GEHALT) bei GEHALT = 100.000
FETCH NEXT WHERE BERUF = PROGRAMMIERER;
CLOSE SCAN wenn EOT

Kosten:
Clusterbildung auf IPERS(GEHALT)

N
N
K 3 + ----------- + w ---------3C
32

keine Clusterbildung

N
N
K 3 + ---- + w ---------32
3

56

Mengenorientierte Schnittstelle

Methode 3: Benutze einen hierarchischen


Zugriffspfad (LINK) von einer anderen
Relation
FAEHIGKEIT
PROGRAMMIERER ...

MAIER PROG
MLLER PROG
SCHMITT PROG

FETCH Vater-Tupel mit BERUF = PROGRAMMIERER


OPEN LINK-SCAN
FETCH NEXT ON LINK WHERE GEHALT 100.000

Annahme:

CLOSE SCAN wenn Ende des LINK

Schneller Zugriff auf Relation FAEHIGKEIT als Einstieg in LINK mglich, z. B.


ber IFAEHIGKEIT(BERUF)

Kosten:
Clusterbildung auf Link

N
N
K 3 + ------------------------- + w --------------------------C j B ERUF
jB ERUF 10

keine Clusterbildung

N
N
K 3 + ----------------- + w --------------------------j B ERUF 10
j BER UF
bung16

57

Mengenorientierte Schnittstelle

bersicht

bersetzungsverfahren fr Datenbanksprachen
Vorgehensweise
bersetzung vs. Interpretation

Formen der Wirtsspracheneinbettung


Direkte Einbettung
Aufruftechnik

Anfrageoptimierung

Anfragedarstellung
Standardisierung und Vereinfachung
Restrukturierung und Transformation
Kostenmodelle
Erstellung und Auswahl von Ausfhrungsplnen

Code-Erzeugung
Aufbau von Zugriffsmoduln
Bindezeitpunkte fr Anweisungstypen

Behandlung von Ad-hoc-Anfragen


58

Mengenorientierte Schnittstelle

Code-Erzeugung

Optimierter Anfragegraph

Ergebnis der Optimierungsphase


Eingabe-Datenstruktur fr Code-Generator

Nutzung der Operationen des Zugriffssystems

direkte Operationen (z.B. INSERT <satz>)


Scan-Operationen (Beispiel SYSTEM R)
-

Diese Operationen werden bei der Code-Generierung als Primitive eingesetzt

Klassifikation der SQL-Anweisungen

CALL RSS (OPEN, SCAN_STRUCTURE, RETURN_CODE)


CALL RSS (NEXT, SCAN_STRUCTURE, RETURN_CODE)
SCAN_STRUCTURE ist komplexe Datenstruktur zur bergabe von Ein-/Ausgabewerten, Suchargumenten usw.

jede Klasse wird durch Basisprozess beschrieben (z.B. Auswahl einer Tupelmenge mit Hilfe eines
Cursors)
Skelett eines Basisprozesses heit Modell
Verarbeitungsschritt im Modell heit Fragment (als Codefolge in einer Bibliothek abgelegt)
Klassifikation erfolgt nach Art der Zugriffsaktionen

Bereitstellung von Modellen und Fragmenten

4 Modelle fr einfache Fragen (Frageblcke)


insgesamt 30 Modelle mit jeweils 5-10 Fragmenten (<100 Fragmente)
59

Mengenorientierte Schnittstelle

Fludiagram fr ein
Zugriffsmodul

FETCH

Prolog

<0>

OPEN o. FETCH

<1>

Binden d.
Eingabevariablen

OPEN
<2>

RSS-Aufruf fr
OPEN
OK?

<3>
N

Y
RSS-Aufruf fr NEXT
OK?

<4>
N

<5>

Y
Auswertung der
WHERE Klausel
F

Ergebnis?

<6>

T
Berechnung des
Ausgabetupels

<7>

Zuweisung an
Ausgabevariable

<8>

Setzen des
Returncode

<9>

Rcksprung
Modell fr die Auswahl einer Tupelmenge mit Hilfe eines Cursors

60

Mengenorientierte Schnittstelle

Programmname
Deskriptor im
DB-Katalog

Autor

Datum

Gltig Adresse

AP

ZM

ADDR(ZM)

Inhaltsverzeichnis
Abschnitts-#

Typ

COMPILESECT

INTERPSECT

PARSEDSECT

Zeiger

Aufbau eines
Zugriffsmoduls

Abschnitt 1

Maschinencode
+

Verschiebeadressenverzeichnis
+

ursprngliche SQL-Anweisung
Abschnitt 2

Anfragegraph
+

Verschiebeadressenverzeichnis
+

ursprngliche SQL-Anweisung
Abschnitt 3 Anfragegraph
+

Verschiebeadressenverzeichnis
+

ursprngliche SQL-Anweisung

61

Mengenorientierte Schnittstelle

bersicht

bersetzungsverfahren fr Datenbanksprachen
Vorgehensweise
bersetzung vs. Interpretation

Formen der Wirtsspracheneinbettung


Direkte Einbettung
Aufruftechnik

Anfrageoptimierung

Anfragedarstellung
Standardisierung und Vereinfachung
Restrukturierung und Transformation
Kostenmodelle
Erstellung und Auswahl von Ausfhrungsplnen

Code-Erzeugung
Aufbau von Zugriffsmoduln
Bindezeitpunkte fr Anweisungstypen

Behandlung von Ad-hoc-Anfragen


62

Mengenorientierte Schnittstelle

Vorbereitung,
bersetzung
und Ausfhrung
von Ad-hoc-Anfragen

Quellprogramm UFI
System R
Pre-Compiler
XPREP

PREPARE...
EXECUTE...

Analyse

CALL XDBS...
CALL XDBS...

StandardCompiler
(PL/1)

Zugriffsmodul
fr UFI

Analyse
Binder/
Lader

CodeGenerierung

INDEFSECT

Objektmodul
von UFI

Optimierung

bersetzungszeit

modifiziertes
Quellprogramm UFI

Laden und bersetzen


bei PREPARE

Ausfhrungszeit

Zugriffsmodul fr UFI
System R
Laufzeitsyst.
XDBS

UFI

SELECT...
FROM...
WHERE...

Ein/Ausgabe

Zugriffssystem RSS

Daten
DB

Aufruf
Zugriff

COMPILESECT oder
INTERPSECT

Programm

63

Mengenorientierte Schnittstelle

Spektrum der Bindezeiten in System R


Anweisungstyp
Normale
Operationen
(Query, Insert,
Delete, Update)
Nicht-optimierbare
Operationen
(Create/Drop
Table, etc.)
Operationen auf
temporren
Objekten
Dynamisch
definierte
Anweisungen
(Prepare, Execute)

Abschnittstyp

COMPILESECT

Analyse

Optimierung

bersetzungszeit

INTERPSECT

bersetzungszeit

PARSEDSECT

bersetzungszeit

INDEFSECT

CodeGenerierung

Ausfhrung

Laufzeit

Laufzeit

Laufzeit

Laufzeit

64

Mengenorientierte Schnittstelle

Zusammenfassung

Interpretation einer DB-Anweisung


allgemeines Programm (Interpreter) akzeptiert Anweisungen der DB-Sprache als
Eingabe und erzeugt mit Hilfe von Aufrufen des Zugriffssystems Ergebnis
hoher Aufwand zur Laufzeit (v.a. bei wiederholter Ausfhrung einer Anweisung)

bersetzung, Code-Erzeugung und Ausfhrung einer DB-Anweisung


fr jede DB-Anweisung wird ein zugeschnittenes Programm erzeugt (bersetzungszeit),
das zur Laufzeit abgewickelt wird und dabei mit Hilfe von Aufrufen des Zugriffssystems
das Ergebnis ableitet
bersetzungsaufwand wird zur Laufzeit soweit wie mglich vermieden

Anfrageoptimierung: Kernproblem der bersetzung mengen-orientierter DBSprachen


"fatale" Annahmen:
- Gleichverteilung aller Attributwerte
- Unabhngigkeit aller Attribute

Kostenvoranschlge fr Ausfhrungsplne:
- CPU-Zeit und E/A-Aufwand
- Anzahl der Nachrichten und zu bertragende Datenvolumina (im verteilten Fall)

gute Heuristiken zur Erstellung und Auswahl von Ausfhrungsplnen sehr wichtig
65