Sie sind auf Seite 1von 41
AnwendersoftwareAnwendersoftware (AS)(AS) Datenbanken und Informationssysteme Kapitel 7: Satzorientierte Schnittstelle

AnwendersoftwareAnwendersoftware (AS)(AS)

AnwendersoftwareAnwendersoftware (AS)(AS) Datenbanken und Informationssysteme Kapitel 7: Satzorientierte Schnittstelle

Datenbanken und Informationssysteme

Kapitel 7: Satzorientierte Schnittstelle

Bernhard Mitschang Universität Stuttgart

Wintersemester 2013/2014

Teile zu diesem Folienskript beruhen auf einer ähnlichen Vorlesung , gehalten von Prof. Dr. T. Härder am Fachbereich Informatik der Universität Kaiserslautern und Prof. Dr. N. Ritter am Fachbereich Informatik der Universität Hamburg. Für dieses Skriptum verbleiben alle Rechte (insbesondere für Nachdruck) bei den Autoren.

Satzorientierte Schnittstelle

Übersicht

Logische Zugriffspfadstrukturen

Objekte und Operatoren

Abbildung von externen Sätzen

Satzorientierte Verarbeitung

Verarbeitungsprimitive

Navigationskonzepte

Scan-Technik

Implementierung durch Scan-Operatoren

Scan-Typen

Sortierkomponente zur Unterstützung relationaler Operationen

Einsatz eines Sortieroperators

Externes Sortieren

Satzorientierte Schnittstelle Mengenorientierte DB-Schnittstelle

Sprachen wie SQL, QBW, etc.

Adressierungseinheiten:

Hilfsstrukturen:

Adressierungseinheiten:

Relationen, Sichten, Tupel externe Schemabeschreibung, Integritätsregeln externe Sätze, Sets, Schlüssel, Zugriffspfade

externe Sätze, Sets, Schlüssel, Zugriffspfade Satzorientierte DB-Schnittstelle FIND NEXT Satzname, STORE

Satzorientierte DB-Schnittstelle

FIND NEXT Satzname, STORE Satzname, etc.

Adressierungseinheiten:

Hilfsstrukturen:

Adressierungseinheiten:

externe Sätze, Sets, Schlüssel, Zugriffspfade Zugriffspfaddaten, interne Schemabeschreibung interne Sätze, B*-Bäume, Hash-Tabellen, usw.

interne Sätze, B*-Bäume, Hash-Tabellen, usw. Interne Satzschnittstelle Speichere Satz, Füge Eintrag in

Interne Satzschnittstelle

Speichere Satz, Füge Eintrag in B*-Baum ein, etc.

Adressierungseinheiten:

Hilfsstrukturen:

Adressierungseinheiten:

interne Sätze, B*-Bäume, Hash-Tabellen, usw. Freispeicher-Info., Adreßtab., Seitenindices, usw. Seiten, Segmente

Adreßtab., Seitenindices, usw. Seiten, Segmente Adressierungseinheiten: Hilfsstrukturen:

Adressierungseinheiten:

Hilfsstrukturen:

Adressierungseinheiten:

Seiten, Segmente

Seitentabellen, Blocktabellen, etc.

Blöcke, Dateien

Seitentabellen, Blocktabellen, etc. Blöcke, Dateien Adressierungseinheiten: Hilfsstrukturen:

Adressierungseinheiten:

Hilfsstrukturen:

Adressierungseinheiten:

Blöcke, Dateien

Freispeicher-Info Extent-Tabellen, Dateikataloge, etc.

Spuren, Zylinder, Kanäle, etc.

Dateikataloge, etc. Spuren, Zylinder, Kanäle, etc. DB-Pufferschnittstelle Stelle Seite j bereit, Gib Seite j
Dateikataloge, etc. Spuren, Zylinder, Kanäle, etc. DB-Pufferschnittstelle Stelle Seite j bereit, Gib Seite j

DB-Pufferschnittstelle

Stelle Seite j bereit, Gib Seite j frei

Dateischnittstelle

Lies Block k, Schreibe Block k

Geräteschnittstelle

Logische

Datenstrukturen

Logische

Zugriffspfad-

strukturen

Speicherungs-

strukturen

Seitenzuordnungs-

strukturen

Speicherzuordnungs-

strukturen

Satzorientierte Schnittstelle

Logische Zugriffspfadstrukturen

Operationen an der oberen Schnittstelle:

STORE <record> FETCH <record> USING <attr1> = 400 AND <attr2> >=7 CONNECT <record> TO <set>

Abbildungsfunktionen:

Physischer Satz Externer Satz Suchausdruck

<-> Externer Satz <-> zugehörige Zugriffspfade -> unterstützende Zugriffspfade

Operationen an der unteren Schnittstelle:

insert <record> at add <entry> to retrieve <address-list> from retrieve <record> with

Eigenschaften der oberen Schnittstelle

Zugriff auf logische Sätze in Einheiten von einem Satz pro Aufruf

Logische Zugriffspfade (inhaltsadressierbarer Speicher, hierarchische Beziehungen zwischen Satztypen)

interne Schnittstelle bei mengenorientierten DBS

externe Schnittstelle (Anwendungsprogrammierschnittstelle/API) bei satzorientierten DBS (z.B. Netzwerk-Datenmodell oder objektorientiertes Datenmodell)

Satzorientierte Schnittstelle

Exkurs: Netzwerk-Datenmodell

Satzorientierte Schnittstelle Exkurs: Netzwerk-Datenmodell Anwendersoftware  F. Kaiser … Currency Indicators:
Satzorientierte Schnittstelle Exkurs: Netzwerk-Datenmodell Anwendersoftware  F. Kaiser … Currency Indicators:

Anwendersoftware

 F. Kaiser …
F. Kaiser

Currency Indicators:

Current of Set Type Current of Record Type Current of Run Unit (CRU)

R. Wagner … F. Wagner … C. Dorda … D. Nicklas …
R. Wagner
F. Wagner
C. Dorda
D. Nicklas

Typen:

RECORD-Typ Abteilung

RECORD-Typ Person

Nicklas … Typen: RECORD-Typ Abteilung RECORD-Typ Person SET-Typ Mitarbeiter  H. Schwarz … Operationen: STORE

SET-Typ Mitarbeiter

 H. Schwarz …
H. Schwarz

Operationen:

STORE <F. Kaiser, …> CRU F. Kaiser …
STORE <F. Kaiser, …>
CRU
F. Kaiser

ERASE Person

MODIFY …

FIND Person USING <C. Dorda>

CRUERASE Person MODIFY … FIND Person USING <C. Dorda> D. Nicklas … FIND OWNER WITHIN Mitarbeiter

D.

Nicklas

D. Nicklas …

FIND OWNER WITHIN Mitarbeiter

CRUCRU D. Nicklas … FIND OWNER WITHIN Mitarbeiter C. Dorda … CRU C. Dorda … CRU

C. Dorda

C. Dorda …
… FIND OWNER WITHIN Mitarbeiter CRU C. Dorda … CRU C. Dorda … CRU Anwendersoftware CONNECT

CRU… FIND OWNER WITHIN Mitarbeiter CRU C. Dorda … C. Dorda … CRU Anwendersoftware CONNECT Person

C.

Dorda

C. Dorda …

CRUMitarbeiter CRU C. Dorda … CRU C. Dorda … Anwendersoftware CONNECT Person TO Mitarbeiter Current of

Anwendersoftware

CONNECT Person TO Mitarbeiter

Current of Set Type

CRU
CRU
CONNECT Person TO Mitarbeiter Current of Set Type CRU Anwendersoftware F. Kaiser …  Record in

Anwendersoftware

F. Kaiser

F. Kaiser …
Current of Set Type CRU Anwendersoftware F. Kaiser …  Record in Set eingefügt DISCONNECT Person

Record in Set eingefügt

DISCONNECT Person FROM Mitarbeiter

Satzorientierte Schnittstelle

Satzorientierte DB-Schnittstelle

Speicherverwaltung

Segment öffnen/schließen (OPEN / CLOSE)

Segment erwerben/freigeben (ACQUIRE / RELEASE)

Segment sichern/zurücksetzen (SAVE / RESTORE)

/ RELEASE) Segment sichern/zurücksetzen (SAVE / RESTORE) Satzorientierte DB-Schnittstelle Segmente Seiten Seiten

Satzorientierte DB-Schnittstelle

Segmente

Seiten Seiten
Seiten
Seiten

Satzorientierte Schnittstelle

Satzorientierte DB-Schnittstelle

Operatoren auf Sätzen (Tupel) von Satztypen (Tabellen)

Direktes Auffinden von

Sätzen über Attributwerte

)

(FIND RECORD USING

Hinzufügen eines Satzes (INSERT, STORE)

Aktualisieren von Attributwerten eines Satzes (UPDATE, MODIFY)

Löschen eines Satzes (DELETE, ERASE)

(UPDATE, MODIFY) Löschen eines Satzes (DELETE, ERASE) Satzorientierte DB-Schnittstelle SK Sätze …

Satzorientierte DB-Schnittstelle

Satzes (DELETE, ERASE) Satzorientierte DB-Schnittstelle SK Sätze … Seiten SK Sätze … Typische

SK

Sätze

Seiten

SK

Sätze

Typische Suchprädikate:

Simple Search Argument (SSA):

Boolesche Verknüpfung von Termen der Form "Attribut Θ Wert"

• 1-mengenorientiert, d.h. auf einen Satztyp bezogen

Satzorientierte Schnittstelle

Satzorientierte DB-Schnittstelle

Operatoren auf Zugriffspfaden

Index (Search Key)

Navigierendes Auffinden von Sätzen über einen Zugriffspfad (FIND NEXT RECORD WITHIN

)

Set (Link)

Einbringen eines Satzes (CONNECT)

Aufheben einer Verknüpfung (DISCONNECT)

Satzes (CONNECT) Aufheben einer Verknüpfung (DISCONNECT) Satzorientierte DB-Schnittstelle Seiten SK Sätze

Satzorientierte DB-Schnittstelle

einer Verknüpfung (DISCONNECT) Satzorientierte DB-Schnittstelle Seiten SK Sätze … SK Sätze …

Seiten

SK

Sätze

SK

Sätze

Satzorientierte Schnittstelle

Satzorientierte DB-Schnittstelle

Weitere Operatoren

BEGIN

TRANSACTION

COMMIT

TRANSACTION

ABORT

TRANSACTION

Sperren erwerben (LOCK)

Sperren freigeben (UNLOCK)

Sperren erwerben (LOCK) Sperren freigeben (UNLOCK) Satzorientierte DB-Schnittstelle Segmente Seiten SK

Satzorientierte DB-Schnittstelle

Segmente Seiten SK Sätze …
Segmente
Seiten
SK
Sätze
Seiten SK Sätze …
Seiten
SK
Sätze

Satzorientierte Schnittstelle

Abbildung von externen Sätzen

Vorteile der Trennung externer und interner Sätze

Realisierung des Sichtenkonzepts (externes Schema, Subschema)

Partitionierte Speicherung großer Satzmengen

- Zuordnung disjunkter Satzmengen zu separaten Speicherungseinheiten

- Spezifikation der Partitionierung über Werte (Schlüsselbereiche, Hashing) oder über Prozeduren (user exit)

- Leistungsgründe: E/A-Parallelität

- Verfügbarkeit: Erstellung von Kopien, Migration,

- Partition ist Einheit der Reorganisation, des Backup, der Archivierung, des Ladens, von Zugriffsverfahren etc.

Möglichkeiten der Abstimmung/Verbesserung des Leistungsverhaltens (Tuning)

- Aufteilung und Zuordnung der Felder nach Zugriffshäufigkeiten

- redundante Speicherung

- Verdichtung von Feldern und Sätzen

Satzorientierte Schnittstelle

Übersicht

Logische Zugriffspfadstrukturen

Objekte und Operatoren

Abbildung von externen Sätzen

Satzorientierte Verarbeitung

Verarbeitungsprimitive

Navigationskonzepte

Scan-Technik

Implementierung durch Scan-Operatoren

Scan-Typen

Sortierkomponente zur Unterstützung relationaler Operationen

Einsatz eines Sortieroperators

Externes Sortieren

Satzorientierte Schnittstelle

Verarbeitungsprimitive

Welche Verarbeitungsprimitive werden durch die Schicht der Speicherungsstrukturen direkt unterstützt?

Welcher Zusatzaufwand entsteht in der Schicht logischer Zugriffspfadstrukturen?

Verarbeitungsprimitiv Konzept Logische Speicherungs- Zugriffspfadstrukturen strukturen Direkter Zugriff über
Verarbeitungsprimitiv
Konzept
Logische
Speicherungs-
Zugriffspfadstrukturen
strukturen
Direkter Zugriff über
Primärschlüssel
Passenden Zugriffspfad
identifizieren (DB-Katalog)
Zugriffspfade
bereitstellen
Kontextfeie
Satzweise Aktualisierung
(INSERT, UPDATE,
DELETE)
Wartung betroffener
Zugriffspfade
interne
Operationen
Satzschnittstelle
Satzweise Navigation
Navigation
Navigationskonzept, Scan
Sortierung einer
Satzmenge
Sortierung
Sortieroperator
Zugriffspfade und
interne
Satzschnittstelle
bereitstellen

Satzorientierte Schnittstelle

Navigationskonzepte

Bereitstellen und Warten von transaktionsbezogenen Verarbeitungspositionen zur Navigation

Verschiedene Cursor-Konzepte:

• Implizite Cursor

Bsp.: Currency-Konzept bei CODASYL

Änderung mehrerer Cursor durch Ausführung einer DB-Anweisung

Benutzerkontrolle durch RETAINING-Klausel

- Hochgradige Komplexität

- Fehleranfälligkeit

• Explizite Cursor

Bsp.: SQL-Cursor

Cursor werden durch AP definiert, verhalten sich wie normale Programmvariablen und werden unter expliziter Kontrolle des AP verändert

Definition von n Cursor auf einer Tabelle

Eindeutige Änderungssemantik

Satzorientierte Schnittstelle

Übersicht

Logische Zugriffspfadstrukturen

Objekte und Operatoren

Abbildung von externen Sätzen

Satzorientierte Verarbeitung

Verarbeitungsprimitive

Navigationskonzepte

Scan-Technik

Implementierung durch Scan-Operatoren

Scan-Typen

Sortierkomponente zur Unterstützung relationaler Operationen

Einsatz eines Sortieroperators

Externes Sortieren

Satzorientierte Schnittstelle

Scan-Technik

Was ist ein Scan?

Ein Scan erlaubt das satzweise Durchmustern und Verarbeiten einer physischen Satzmenge.

Ein Scan kann an einen Zugriffspfad (Index, Link,

Ein Scan definiert eine Verarbeitungsposition, die als Kontextinformation für die Navigation dient.

) gebunden werden.

Wie unterstützt das Scan-Konzept die mengenorientierte Verarbeitung?

SQL-Cursor

Scans

C

1

• Wie unterstützt das Scan-Konzept die mengenorientierte Verarbeitung? SQL-Cursor Scans C 1 S 1 C 2

S 1

C

2

… S k S j
… S k
S j

Satzorientierte Schnittstelle

Scan-Typen

• Table-Scan (Satztyp-Scan, Tabellen-Scan)

zum Aufsuchen aller Sätze eines Satztyps (einer Tabelle)

• Index-Scan

zum Aufsuchen von Sätzen in einer wertabhängigen Reihenfolge

• Link-Scan

zum Aufsuchen von Sätzen in benutzerkontrollierter Einfügereihenfolge

• k-d-Scan

zum Aufsuchen von Sätzen über einen k-dimensionalen Index

Anmerkung:

Es ist wünschenswert, für alle mehrdimensionalen Zugriffspfade ein einheitliches Auswertungsmodell anbieten zu können. Dadurch würde sich eine DBS-Erweiterung um einen neuen mehrdimensionalen Zugriffspfadtyp lokal begrenzen lassen. Jedoch dürfte die direkte Abbildung des Auswertungsmodells bei manchen Strukturen sehr komplex und gar unmöglich sein. Als Ausweg bietet sich hier an, das Anfrageergebnis mit Hilfe der verfügbaren Operationen des physischen Zugriffspfads abzuleiten, ggf. zu sortieren und in einer temporären Speicherungsstruktur zu materialisieren. Auf dieser Speicherungsstruktur könnte dann der k-d-Scan nachgebildet werden, um das abstrakte Auswertungsmodell für die satzweise Verarbeitung zu realisieren. Falls ein k-d-Scan nur ungeordnete Treffermengen abzuliefern braucht, sind sicherlich einfachere Auswertungsmodelle, die sich stärker an den Eigenschaften der darunter liegenden physischen Strukturen orientieren, denkbar.

Satzorientierte Schnittstelle

Implementierung von Scans

explizite Definition/Freigabe: OPEN/CLOSE SCAN

Navigation: NEXT TUPLE

Scans werden auf Zugriffspfaden definiert

Optionen:

Start-, Stopp- und Suchbedingung (Simple Search Argument)

Suchrichtung: NEXT/PRIOR, FIRST/LAST, n-th

Scan-Kontrollblock (SKB bzw. SCB):

Angaben über Typ, Status, Position etc.

SKB:

Typ

Objekt

Start

Stopp

Status

(SKB bzw. SCB): Angaben über Typ, Status, Position etc. SKB: Typ Objekt Start Stopp Status SSA
(SKB bzw. SCB): Angaben über Typ, Status, Position etc. SKB: Typ Objekt Start Stopp Status SSA
(SKB bzw. SCB): Angaben über Typ, Status, Position etc. SKB: Typ Objekt Start Stopp Status SSA
(SKB bzw. SCB): Angaben über Typ, Status, Position etc. SKB: Typ Objekt Start Stopp Status SSA
(SKB bzw. SCB): Angaben über Typ, Status, Position etc. SKB: Typ Objekt Start Stopp Status SSA
(SKB bzw. SCB): Angaben über Typ, Status, Position etc. SKB: Typ Objekt Start Stopp Status SSA
(SKB bzw. SCB): Angaben über Typ, Status, Position etc. SKB: Typ Objekt Start Stopp Status SSA
(SKB bzw. SCB): Angaben über Typ, Status, Position etc. SKB: Typ Objekt Start Stopp Status SSA
(SKB bzw. SCB): Angaben über Typ, Status, Position etc. SKB: Typ Objekt Start Stopp Status SSA
(SKB bzw. SCB): Angaben über Typ, Status, Position etc. SKB: Typ Objekt Start Stopp Status SSA

SSA

Richtung

TA

Satzorientierte Schnittstelle

Tabellen-Scan

Anfragebeispiel:

SELECT

*

FROM

PERS

WHERE

ANR BETWEEN K28 AND K67

AND

BERUF = ‘Programmierer‘

Scan-Optionen

Startbedingung (SB):

Stoppbedingung (STB):

Suchrichtung:

Suchbedingung (SSA):

BOS (Beginn von Segment S1) EOS (Ende von Segment S1) NEXT ANR ‘K28‘ AND ANR ‘K67‘ AND BERUF = ‘Programmierer‘

Satzorientierte Schnittstelle

Ablauf eines Tabellen-Scans

Tabellen-Scan:

OPEN SCAN (PERS, BOS, EOS) WHILE (NOT FINISHED) DO

FETCH TUPLE (SCB1, NEXT, ANR ‘K28‘ AND ANR ‘K67‘ AND BERUF = ‘Programmierer‘) .

.

.

END CLOSE SCAN (SCB1)

/* SCB1 */

Segment S1:

P1 P2 Pj Pm PERS1 ABT2 PERSi PROJc PERS2 PROJ1 . . . PERSj .
P1
P2
Pj
Pm
PERS1
ABT2
PERSi
PROJc
PERS2
PROJ1
.
.
.
PERSj
.
.
.
PROJk
ABT1
PROJ2
.
.
.
PROJn
.
.
.
.
.
.
OPEN
NEXT
CLOSE
SCAN
SCAN
FETCH
TUPLE

Satzorientierte Schnittstelle

Index-Scan

Anfragebeispiel:

SELECT

*

FROM

PERS

WHERE

ANR BETWEEN K28 AND K67

AND

BERUF = ‘Programmierer‘

Scan-Optionen

Startbedingung (SB):

Stoppbedingung (STB):

Suchrichtung:

Suchbedingung (SSA):

ANR ‘K28‘ ANR > ‘K67‘ NEXT BERUF = ‘Programmierer‘

Satzorientierte Schnittstelle

Ablauf eines Index-Scans

Index-Scan:

OPEN SCAN (I PERS (ANR), ANR ‘K28‘, ANR > ‘K67‘) WHILE (NOT FINISHED) DO

FETCH TUPLE (SCB1, NEXT, BERUF = ‘Programmierer‘) .

.

.

END CLOSE SCAN (SCB1)

/* SCB1 */

I PERS (ANR) • 41 • • 12 • 28 • • 46 • 47
I PERS (ANR)
41
12
28
46
47
1 5
12 15
19 28
33 37
41 45
46 53
59
67
71 83
99
OPEN
NEXT
CLOSE
SCAN
FETCH
SCAN
TUPLE
Überprüfung
SB, STB
STB, SSA

Die Verweise (TIDs) auf die PERS-Tupel sind in I PERS (ANR) weggelassen. Die Suchbedingung (SSA = simple search argument) darf nur Wertvergleiche „Attribut Θ Wert“ (mit Θ ∈ {<, =, >, , , }) enthalten und wird auf jedem Tupel überprüft, das über den Index-Scan erreicht wird. Der Operator FETCH TUPLE liefert also nur Tupel zurück, die die WHERE-Bedingung erfüllen.

Satzorientierte Schnittstelle

Anfragebeispiel:

Link-Scan

SELECT

*

FROM

PERS

WHERE

ANR BETWEEN K28 AND K67

AND

BERUF = ‘Programmierer‘

Hierarchischer Zugriffspfad L ABT-PERS

Auffinden des Vaters

Startposition bereits gefunden (z.B. für ANR=K55 gegeben)

Fortschalten in ABT erforderlich (ANR BETWEEN K28 AND K67)

Satzorientierte Schnittstelle

Ablauf eines Link-Scans

Einzelner Link-Scan:

OPEN SCAN (L ABT-PERS (ANR), NONE, EOL) WHILE (NOT FINISHED) DO FETCH TUPLE (SCB1, NEXT, BERUF = ‘Programmierer‘) .

END CLOSE SCAN (SCB1)

.

.

/* SCB1 */

NEXT FETCH T EUPL
NEXT
FETCH
T
EUPL
 

NEXT

PRIOR

OWNER

TID 0
TID 0

TID 1

   

K55

   

-

-

TID 1
TID 1

TID 2

TID 0

TID 0

X173

K55

 

Prog

TID 2
TID 2
 

TID 3

TID 1

TID 0

Y248

K55

   
 
TID k
TID k

TID k+1

TID k-1

TID 0

A333

K55

 

Prog

 
TID n
TID n
 

TID n-1

TID 0

C007

K55

   

-

Vatersatz

(ABT)

erster Sohnsatz

(PERS)

.

.

.

k-ter Sohnsatz

letzter Sohnsatz

Satzorientierte Schnittstelle

Schachtelung von Index- und Link-Scan

Index I ABT (ANR) und hierarchischer Zugriffspfad L ABT-PERS

Auffinden des Vaters

Nutzung der Indexstruktur I ABT (ANR)

Schachtelung von Index-Scan (ANR BETWEEN K28 AND K67) und Link-Scan (BERUF = 'Programmierer')

Scan-Optionen

Startbedingung:

Stoppbedingung:

Suchrichtung:

Suchbedingung:

Index-Scan

ANR ‘K28‘ ANR > ‘K67‘ NEXT -

Link-Scan

-

EOL NEXT BERUF = ‘Programmierer‘

Satzorientierte Schnittstelle

Schachtelung von Index- und Link-Scan

Index- und Link-Scan:

OPEN SCAN (I ABT (ANR), ANR ‘K28‘, ANR > ‘K67‘) .

.

.

/* SCB1 */

WHILE (NOT FINISHED) DO

FETCH TUPLE (SCB1, NEXT, NONE)

. .

OPEN SCAN (L ABT-PERS (ANR), NONE, EOL)

. .

WHILE (NOT FINISHED) DO

.

.

/* SCB2 */

FETCH TUPLE (SCB2, NEXT, BERUF = ‘Programmierer‘) .

.

.

END CLOSE SCAN (SCB2)

END CLOSE SCAN (SCB1)

Satzorientierte Schnittstelle

Anfragebeispiel:

k-d-Scan

SELECT

*

FROM

PERS

WHERE

ANR BETWEEN ‘K28‘ AND ‘K67‘ AND ALTER BETWEEN 20 AND 30 AND BERUF = ‘Programmierer‘

2-dimensionaler Zugriffspfad I PERS (ANR,ALTER)

Scan-Optionen

Startbedingung:

Stoppbedingung:

Suchrichtung:

Suchbedingung:

Dimension 1

ANR ‘K28‘ ANR > ‘K67‘ NEXT

Dimension 2

ALTER 20 ALTER > 30 NEXT

BERUF = ‘Programmierer‘ (wird auf den PERS-Sätzen ausgewertet)

Satzorientierte Schnittstelle

Ablauf eines k-d-Scans

2-d-Scan:

OPEN SCAN (I PERS (ANR, ALTER), ANR ‘K28‘ AND ALTER 20, ANR > ‘K67‘ AND ALTER > 30)

. .

.

WHILE (NOT (ALTER > 30)) DO

/* Zwischenspeichern der SCB1-Position in SCANPOS WHILE (NOT (ANR > ‘K67‘)) DO

FETCH TUPLE (SCB1, NEXT(ANR), BERUF = ‘Programmierer‘)

. .

.

END

/* Zurücksetzen der SCB1-Position auf SCANPOS

. .

MOVE SCB1 TO NEXT(ALTER)

.

END CLOSE SCAN (SCB1)

/* SCB1 */

*/

*/

Satzorientierte Schnittstelle

Scan-Semantik

Scan-Zustände:

in Abhängigkeit von der Position in der Satzmenge

vor dem ersten Satz (TOP)

auf einem Satz (ON)

in einer Lücke zwischen zwei Sätzen (BETWEEN)

hinter dem letzten Satz (BOT)

in einer leeren Menge (NULL)

Scan-Semantik durch geeignete Übergangsregeln festlegen!

Zustandsübergänge beim Scan

Suche

TOP
TOP

ON

BOT

• Zustandsübergänge beim Scan  Suche TOP ON BOT BETWEEN  Delete  Insert ON BETWEEN

BETWEEN

Delete

Insert

beim Scan  Suche TOP ON BOT BETWEEN  Delete  Insert ON BETWEEN NULL (NEXT)
ON
ON

BETWEEN

NULLZustandsübergänge beim Scan  Suche TOP ON BOT BETWEEN  Delete  Insert ON BETWEEN (NEXT)

(NEXT) BETWEEN ON NULL
(NEXT)
BETWEEN
ON
NULL

Satzorientierte Schnittstelle

Anwendung von Scans

Problem:

Mengenorientierte Spezifikation <---> satzorientierte Auswertung

Die navigierende Auswertung einer deklarativen SQL-Anweisung über einen Scan kann Verarbeitungsprobleme verursachen, insbesondere wenn das zu aktualisierende Objekt (Tabelle, Zugriffspfad) vom Scan benutzt wird (Verbot?)

Beispiel:

UPDATE PERS SET GEHALT = 1.1 * GEHALT

Ausführung:

Gehaltsverbesserung um 10% werde mit Hilfe eines Scans über Index GEHALT durchgeführt

I PERS (GEHALT)

50

K

TID

1

50 K TID 1

52

K

TID

2

56

K

TID

3

.

 

.

.

+10%

Halloween-Problem

 

55 K

TID

1

55 K TID 1

56 K

TID

3

.

 

.

.

+10%

Quelle: [Gra93]

Satzorientierte Schnittstelle

Übersicht

Logische Zugriffspfadstrukturen

Objekte und Operatoren

Abbildung von externen Sätzen

Satzorientierte Verarbeitung

Verarbeitungsprimitive

Navigationskonzepte

Scan-Technik

Implementierung durch Scan-Operatoren

Scan-Typen

Sortierkomponente zur Unterstützung relationaler Operationen

Einsatz eines Sortieroperators

Externes Sortieren

Satzorientierte Schnittstelle

Einsatz eines Sortieroperators

Explizite Umordnung der Sätze gemäß vorgegebenem Suchschlüssel (ORDER BY-Klausel)

Umordnung mit Durchführung einer Restriktion

Partitionierung von Satzmengen

Duplikateliminierung in einer Satzmenge

SELECT * FROM PERS WHERE ANR > ’K50’ ORDER BY GEHALT DESC

SELECT ANR, AVG (GEHALT) FROM PERS GROUP BY ANR

SELECT DISTINCT BERUF FROM PERS WHERE ANR > ’K50’ AND ANR < ’K56’

Unterstützung von Mengen- und Verbundoperationen

Reduktion der Komplexität von O(N 2 ) nach O(N log N) bei Mengen- und Verbundoperationen

Umordnen von Zeigern zur Optimierung der Auswertung oder Zugriffsreihenfolge

Dynamische Erzeugung von Indexstrukturen ("bottom-up"-Aufbau von B*-Bäumen)

Erzeugen einer Clusterbildung beim Laden und während der Reorganisation

Satzorientierte Schnittstelle

SORT-Operator - Optionen und Anwendung

Tabellen-Scan

Index-Scan

Link-Scan

- Optionen und Anwendung Tabellen-Scan Index-Scan Link-Scan SORT sortierte (sequentielle) Liste • Scans können mit

SORT

SORT
SORT
SORT
und Anwendung Tabellen-Scan Index-Scan Link-Scan SORT sortierte (sequentielle) Liste • Scans können mit

sortierte (sequentielle) Liste

Scans können mit Suchbedingungen eingeschränkt sein

(SSA = Simple Search Arguments)

SORT-Optionen zur Duplikateliminierung:

N

= keine Eliminierung

K

= Duplikateliminierung bezüglich Sortierkriterium

S

= STOPP, sobald Duplikat entdeckt wird

SORT dient als Basisoperator für Operationen auf höherer Ebene

Beispiel: Einsatz von Scan- und Sortier-Operator bei einem Sort- Merge-Verbund

OPEN SCAN (R1, SB1, STB1)

SORT R1 INTO S1 USING SCAN(SCB1) CLOSE SCAN(SCB1)

OPEN SCAN (R2, SB2, STB2)

SORT R2 INTO S2 USING SCAN(SCB2) CLOSE SCAN(SCB2)

OPEN SCAN (S1, BOS, EOS) OPEN SCAN (S2, BOS, EOS) WHILE (NOT FINSHED) DO

/* SCB1 */

/* SCB2 */

/* SCB3 */ /* SCB4 */

FETCH TUPLE (SCB3, NEXT, NONE) FETCH TUPLE (SCB4, NEXT, NONE)

END

Satzorientierte Schnittstelle

Externes Sortieren

Problem:

Zu sortierende Datenmenge (n Sätze) viel größer als der zum Sortieren verfügbare HSP (q Sätze)

Wie wird sortiert?

Lesen der Eingabedaten aus Datei D und Schreiben sog. Runs nach D i

Erzeugung der Runs (N R 1) mit einem internen Sortierverfahren

Mischen aller N R anfänglichen Runs erforderlich

D
D
D 1 D 2 … D N R
D
1
D
2
D
N R
D'
D'

Satzorientierte Schnittstelle

Externes Sortieren: Mischen

m-Wege-Mischen bei Magnetplatten

Es stehen m max + 1 Plätze (Seiten) im HSP zur Verfügung

m max bestimmt die maximale Mischordnung

N R anfängliche Runs sind i.A. über mehrere Magnetplatten verteilt

Jeder Run wird nach Möglichkeit sequentiell geschrieben

Er kann jederzeit wahlfrei gelesen werden

Typischerweise sind die anfänglichen Runs gleich lang

Runs

D

 

1

D

2

D

3

D

N R

1  1 D 2 D 3 … D N R 2 m max Seiten D '

2  1 D 2 D 3 … D N R 1 m max Seiten D '

m m

max

Seiten D ' 1 D Mischen 4 D 5 D 6 … D N R
Seiten
D
'
1
D
Mischen
4
D
5
D
6
D
N R

Satzorientierte Schnittstelle

Externes Sortieren: Runs erstellen

Erzeugung sog. Runs (N R 1) mit einem internen Sortierverfahren

Einfache Vorgehensweise:

Load-Sort-Store

Geeignete Sortierverfahren?

Ziel: Möglichst umfangreiche Runs erstellen.

Sätze mit Schlüssel größer MAX(D i ) Daten HSP D i D
Sätze mit Schlüssel
größer MAX(D i )
Daten
HSP
D i
D

n Sätze

q Sätze

MAX(D i ): Größter nach D i geschriebener Schlüsselwert

Load-Sort-Store

Daten D
Daten
D

n Sätze

HSP

Load-Sort-Store Daten D n Sätze HSP q Sätze Run D i q Sätze

q Sätze

Run D i
Run
D i

q Sätze

1. q Sätze in HSP lesen und sortieren

2. Nächsten Satz d aus D lesen

3. Sätze mit Schlüsseln größer MAX(D i ) nach

D i schreiben; solange bis ausreichend Platz für d in HSP

4. Sobald keine Sätze mehr ausgeschrieben werden können:

D i schließen und mit D i+1 fortfahren

5. D i enthält im Mittel 2q Sätze

Quelle: [LG98]

Satzorientierte Schnittstelle

Externes Sortieren

Optimale Mischbäume

Optimierung der Zugriffsbewegungen auf den Magnetplatten ist sehr schwierig: wird gewöhnlich nicht berücksichtigt

Ziel: Minimierung der E/A und der Vergleiche

einfach bei idealen Anzahlen N R

N R = m max

p

Es ergibt sich ein vollständiger Mischbaum der Höhe p vom Grad m max

Wann sind unvollständige Mischbäume optimal? Z.B.:

m=3 R1 R2 R3 R4 R5 R6 R7 R8
m=3
R1
R2
R3
R4
R5
R6
R7
R8

Satzorientierte Schnittstelle

Externes Sortieren

Allgemein gilt:

Annahmen:

N R (m max ) p min

nur 2 Dateien für Ein-/Ausgabe, ungewichtete Runs

• Heuristik 1: Harmonisiere Mischbaum

Bestimme p min

Finde kleinstes m, so dass gilt: N R m p min

Wende nur Mischordnungen von m und m-1 an.

Beispiel: N R = 14, m max = 8

m = 4 m = 4 m = 3 m = 3
m = 4
m = 4
m = 3
m = 3

Satzorientierte Schnittstelle

Externes Sortieren

Annahmen:

keine Beschränkung für Ein- /Ausgabe, gewichtete Runs

• Heuristik 2: Minimiere Anzahl der Ein- /Ausgaben und Vergleiche

N R (m max - 1)*p + 1; bestimme minimales p

Erzeuge zusätzliche leere Runs, so dass gilt:

N R0 = (m max - 1)*p + 1

Wähle bei jedem Durchlauf jeweils die m max kürzesten Runs und bilde daraus einen neuen Run, bis ein Run übrig bleibt.

• Schema: 1 m max m max m max . . . . . .
Schema:
1
m
max
m
max
m
max
.
.
.
.
.
.
.
.
.
m
max
.
.
.
.
.
.
N R0 - 2m max + 2
m
max
.
.
.
.
.
.
N R0 - m max + 1
m
max
.
.
.
N
R0
Mischordnung
#Runs

Satzorientierte Schnittstelle

Externes Sortieren

Annahmen: keine Beschränkung für Ein-/Ausgabe, gewichtete Runs

Beispiel für Heuristik 2:

N R = 11, m max = 4 p = 4, N R0 = 13

Längen der Runs:

R1,

R8, R9 = 20 R10 = 50 R11 = 100 R12, R13 = 0

, R7 = 10

m max = 4

R A = 260 Mischbaum R i3 = 70 R i2 = 40 R i1
R A = 260
Mischbaum
R i3 = 70
R i2 = 40
R i1 = 20
R
R 3
R 4
R 5
R 6
R 2
R 7
R 8
R 9
R 12
R 13
1
R 10 R 11

Satzorientierte Schnittstelle

Zusammenfassung

Abbildung von externen Sätzen

Optionen für die Satzspeicherung

Trennung von internen und externen Sätzen und flexible Abbildungskonzepte erforderlich

Satzorientierte Schnittstelle

erforderlich • Satzorientierte Schnittstelle  Aufgaben des Subschema-Konzeptes bei satzorientierten

Aufgaben des Subschema-Konzeptes bei satzorientierten Datenmodellen

Optionen für die Satzspeicherung, vor allem Partitionierung

Verarbeitungskonzepte:

kontextfreie Operationen, Navigation, Sortierung

Implizites und explizites Cursorkonzept

Scan-Technik

Scan-Technik zur satzweisen Navigation auf Zugriffspfaden

flexibler Einsatz durch Start-, Stopp- und Suchbedingung sowie Suchrichtung

Sortierkomponente

wichtig zur Implementierung relationaler Operationen

große Tabellen (Relationen) erfordern Sortier-/Mischverfahren

Transaktionsbezogene Kontroll- und Überwachungsaufgaben

Sie verlangen einen schichtenübergreifenden Informationsfluss

Lastkontrolle und -balancierung ist komplexes Forschungsthema

Satzorientierte Schnittstelle

Literatur zu diesem Kapitel

[Gra93]

Goetz Graefe: Query Evaluation Techniques for Large Databases. ACM

[LG98]

Comput. Surv. Vol. 25, No. 2, 1993. P.-A. Larson, G. Graefe: Memory Management during Run Generation in External Sorting. ACM Conf. 1998.