Document

Werbung
Rückblick: Datenorganisation & Indexstrukturen
§ Datenorganisation der Tupel einer Relation als Haufen,
sequenzielle Datei oder indexsequenzielle Datei
§ Indexstrukturen zum effizienteren Zugriff auf Datensätze
anhand Primärschlüssel oder anhand anderer Attribute
§ B-Bäume (B) als Indexstruktur auf Sekundärspeicher,
die Wertanfragen effizient unterstützt
§ B+-Bäume (B+) als Verbesserung,
die auch Bereichsanfragen effizient unterstützt
§ Hashbasierte Indizes (H) als Indexstruktur,
die Wertanfragen effizient unterstützen
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
116
Geeignete Indizes für die Zugriffsarten
§ Nachschlagen eines Tupels anhand von Primärschlüssel
(z.B. Tupel zu Kunde mit KundenNr 187566)
§ B-Baum, B+-Baum, Hashbasierte Indizes
§ Finde Tupel mit bestimmtem Attributwert
(z.B. Tupel zu Kunden mit PLZ 66117)
§ B-Baum, B+-Baum, Hashbasierte Indizes
§ Finde Tupel mit Kombination von Attributwerten
(z.B. Tupel zu Kunden namens Müller mit PLZ 66117)
§ B-Baum, B+-Baum, Hashbasierte Indizes
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
117
Geeignete Indizes für die Zugriffsarten
§ Finde Tupel mit Attributwert in bestimmten Bereich
(z.B. alle Kunden mit PLZ in 661*)
§ B+-Baum
§ Finde Tupel mit Attributwerten in bestimmten Bereichen
(z.B. alle Kunden namens M* mit PLZ in 661*)
§ ???
§ Wir brauchen also noch Indexstrukturen, welche
mehrdimensionale Bereichsanfragen
effizient unterstützten
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
118
Sortieren mit Indizes
§ Beispiel: Kunden mit PLZ 66119 sortiert nach Namen
1
2
CREATE INDEX Kunden_PLZ_Name
ON Kunden ( PLZ ASC , Name ASC )
§ Blattebene des resultierenden B+-Baumes enthält
Schlüssel der Form PLZ$Name aufsteigend sortiert
66117$Adam
66117$Bär
…
66121$Angst
66121$Bart
§ RDBMS kann nach erstem Schlüssel 66119$ suchen
und dann die Kunden in sortierter Reihenfolge
mittels Durchlaufen der Blätter ermitteln
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
119
Mehrdimensionale Bereichsanfragen
§ Beispiel: Kunden mit Namen M* mit PLZ in 661*
(66129, Marx)
M
(66121, Maas)
L
Name
N
Z
(66131, Wolf)
A
(66113, Calles)
65934
66113
66117
66121
66123
66125
66127
66129
66131
66271
66287
PLZ
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
120
Mehrdimensionale Bereichsanfragen
§ Mehrdimensionale Bereichsanfrage lässt sich i.A. nicht
effizient mit einem oder mehreren eindimensionalen
Indizes (z.B. basierend auf B+-Bäumen lösen)
(66129, Marx)
M
(66121, Maas)
L
§ Index auf PLZ, Name
Name
N
Z
(66131, Wolf)
A
(66113, Calles)
65934
66113
66117
66121
66123
66125
66127
66129
66131
66271
66287
PLZ
(66129, Marx)
M
(66121, Maas)
L
§ Index auf Name, PLZ
Name
N
Z
(66131, Wolf)
A
(66113, Calles)
65934
66113
66117
66121
66123
66125
66127
66129
66131
66271
66287
PLZ
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
121
Mehrdimensionale Bereichsanfragen
§ Mehrdimensionale Bereichsanfrage lässt sich i.A. nicht
effizient mit einem oder mehreren eindimensionalen
Indizes (z.B. basierend auf B+-Bäumen lösen)
§ Beispiel: Kunden mit Namen M* mit PLZ in 661*
§ es kann sehr viele Kunden mit Namen M* geben
§ es kann sehr viele Kunden mit PLZ in 661* gegen
(aber nur wenige, auf die beides zutrifft)
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
122
Mehrdimensionale Bereichsanfragen
§ Wir konzentrieren uns auf den Fall mit zwei Dimensionen;
die vorgestellten Indexstrukturen funktionieren mit
beliebiger Anzahl von Dimensionen
0
1
2
3
0
§ Können wir Tupeln einen Schlüssel
anhand ihrer x-/y-Werte zuweisen,
so dass beieinander liegende Tupel
beieinander liegende Schlüssel
bekommen?
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
1
X
2
3
Y
123
Raumfüllende Kurven
§ Raumfüllende Kurven „durchlaufen“ einen
mehrdimensionalen Raum derart, dass
benachbarte Bereiche möglichst kurz
hintereinander besucht werden
§ Z-Kurve „durchläuft“ den Raum
im Zick-Zack; sie lässt sich
durch Bit-Verschachtelung
implementieren
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
X
0
1
2
3
0
1
4
5
0
2
3
6
7
1
8
9
12
13
2
10
11
14
15
3
Y
124
Raumfüllende Kurven
§ Bit-Verschachtelung (bit interleaving)
§ m Dimensionen mit je 2n Werten (n Bits)
§ Schlüssel für Tupel mit Wert wi
für i-te Dimension bestimmt als
w1[1] … wm[1] … w1[n] … wm[n]
mit wi[j] als j-tes Bit des Werts wi
X
00
01
10
11
0
1
4
5
00
2
3
6
7
01
8
9
12
13
10
10
11
14
15
11
Y
§ Beispiel: Tupel mit x = 3 = (11)2
und y = 2 = (10)2 erhält den Schlüssel
(1110)2 = 14, mit X- als erster und Y- als zweiter Dimension
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
125
Raumfüllende Kurven
§ Tupel werden nun anhand des mittels einer raumfüllenden
Kurve ermittelten Schlüssels in einem B+-Baum indiziert
§ Mehrdimensionale Bereichsanfrage
wird nun in entsprechenden
Wertebereich übersetzt
§ Beispiel: Tupel mit x
[1,2] und y
liegen im Wertebereich [3, 13]
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
X
[1,3]
0
1
2
3
0
1
4
5
0
2
3
6
7
1
8
9
12
13
2
10
11
14
15
3
Y
126
Rekursives Partitionieren
§ Verwandter alternativer Ansatz
besteht darin, mehrdimensionalen
Raum rekursiv in gleich große
Bereiche zu unterteilen
§ Der Schlüssel eines Tupels setzt
sich dann aus den Nummern
seiner Bereiche von grober
zu feiner Granularität
zusammen
0
1
2
3
0
0
1
1
X
2
2
3
3
Y
X
0
1
2
3
0
1
0
1
0
2
3
2
3
1
0
1
0
1
2
2
3
2
3
3
Y
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
127
Rekursives Partitionieren
§ Beispiel: Tupel mit x = 3 und y = 2 liegt
in Bereich 3 auf erster und
in Bereich 2 auf zweiter Ebene
und erhält als Schlüssel (11|10)2
0
1
2
3
0
0
1
1
X
2
2
§ Microsoft SQL Server bspw.
verwendet eine ähnliche Idee,
um räumliche Daten
zu indizieren [3]
3
3
Y
X
0
1
2
3
0
1
0
1
0
2
3
2
3
1
0
1
0
1
2
2
3
2
3
3
Y
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
128
R-Bäume
§ Bisher betrachtete Indexstrukturen zur Unterstützung
mehrdimensionaler Bereichsanfragen bilden
mehrdimensionale Daten auf eine einzelne
Dimension ab („linearisieren“) und
verwenden dann B+-Baum
§ Zudem können sie nur mehrdimensionale Punkdaten,
jedoch keine mehrdimensionalen Flächenobjekte,
z.B. aus geografischen Anwendungen, indexieren
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
129
R-Bäume
§ R-Baum ist ein balancierter Suchbaum für
mehrdimensionale Punkt- und Flächenobjekte
§ Knoten ist ein minimales umschließendes Rechteck (MBR)
(minimum bounding rectangle) zugeordnet,
welches alle im entsprechenden Unterbaum
indexierten Objekte vollständig enthält
§ MBRs unterschiedlicher Knoten dürfen sich überlappen
§ MBR der Wurzel enthält alle indexierten Objekte vollständig
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
130
R-Bäume
§ Beispiel:
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
131
R-Bäume
§ Beispiel:
A
E
A
E
B
C
D
F
B
C
D
F
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
132
R-Bäume
§ Beispiel:
G H
A
G
I
E
A E
B C
D F
B
H
C
D
I
F
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
133
R-Bäume
§ Beispiel:
J
G H
A
G
E
A E
H J
I
B C
D F
B
C
D
I
F
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
134
R-Bäume
§ Einfügen und Löschen ähnlich zum B-Baum, d.h. es wird
zuerst ein Blattknoten identifiziert und dann ggf. Knoten auf
dem Weg zur Wurzel geteilt oder verbunden
§ Mehrdimensionale Bereichsanfrage traversiert R-Baum
und besucht alle Knoten, deren MBR mit dem
Anfragebereich überlappt
§ R-Bäume unterstützen zudem Anfragen nach den
k-nächsten-Nachbarn eines Punktes
(k nearest neighbors)
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
135
Mehrdimensionale Bereichsanfrage im R-Bäumen
§ Beispiel: Suche nach Anfragebereich
J
G H
A
G
E
A E
H J
I
B C
D F
B
C
D
I
F
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
136
Mehrdimensionale Bereichsanfrage im R-Bäumen
§ Beispiel: Suche nach Anfragebereich
J
G H
A
G
E
A E
H J
I
B C
D F
B
C
D
I
F
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
137
Mehrdimensionale Bereichsanfrage im R-Bäumen
§ Beispiel: Suche nach Anfragebereich
J
G H
A
G
E
A E
H J
I
B C
D F
B
C
D
I
F
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
138
3.5 Anfragebearbeitung
§ SQL ist rein deklarativ (vgl. Kapitel 2), d.h. man sagt dem
RDBMS welches Ergebnis man haben möchte; wie es
ermittelt wird, muss das RDBMS selbst entscheiden
§ SQL Anfrage wird in äquivalenten Ausdruck der
(erweiterten) Relationenalgebra übersetzt,
welcher dann schrittweise in einen
physischen Auswertungsplan
überführt wird
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
139
Anfragebearbeitung
§ Wie lassen sich die Operatoren der Relationenalgebra
implementieren – bei Ausnutzung verfügbarer Indizes?
§ Wie können wir Statistiken berechnen und speichern, um
die Kosten von Auswertungsplänen zu bestimmen?
§ Wie können wir einen Ausdruck der Relationenalgebra
in einen kostengünstigen physischen
Auswertungsplan überführen?
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
140
3.5.1 Basisalgorithmen
§ Physische Implementierung folgender Operatoren
§ Sortieren (s) im Primär- und Sekundärspeicher
§ Selektion (σ) mit/ohne Indexunterstützung
§ Projektion (π) mit/ohne Duplikateneliminierung
§ Join (⨝) mit/ohne Ausnutzung von Sortierung
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
141
Sortieren im Primärspeicher
§ Zusätzlicher Operator zum Sortieren von Relationen
sort [ A ] ( R )
mit A als Folge von Attributen und R als Relation;
Ergebnis ist eine geordnete Folge von Tupeln
§ Passt die Eingaberelation in den Primärspeicher, können
wir die uns bekannten effizienten Sortierverfahren
(z.B. QuickSort oder HeapSort) verwenden
§ Kapazität des Primärspeichers soll M Seiten entsprechen
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
142
Sortieren im Primärspeicher
§ Kosten des physischen Operators
sortP [ A ] ( R )
schätzen wir ab als die Anzahl benötigter Seitenzugriffe
c(sortP [ A ] ( R )) = p(R)
mit p(R) als Seitenanzahl der Relation R
§ Die Zahl benötigter Vergleichsoperationen ist in O(n log n);
Sortieren im Primärspeicher nur anwendbar, wenn
p(R) Æ M
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
143
Sortieren im Sekundärspeicher
§ Relationen passen i.A. nicht in den Primärspeicher,
so dass wir sie oft unter Zuhilfenahme des
Sekundärspeichers sortieren
§ Beim Sortieren im Sekundärspeicher müssen wir dessen
Besonderheiten (langsamer wahlfreier Zugriff; schneller
sequenzieller Zugriff) beachten
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
144
Sortieren im Sekundärspeicher
§ Externes MergeSort-Verfahren
§ teile Relation R in etwa gleich große Teile (runs) auf,
welche im Primärspeicher sortiert werden können,
und speichere sie im Sekundärspeicher
§ mische jeweils m vorsortierte Teile und speichere
das Ergebnis wiederum im Sekundärspeicher
§ stoppe, sobald nur noch ein Teil übrig ist
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
145
Sortieren im Sekundärspeicher
§ Beispiel: Sortieren einer Relation R mit m = 2
R (unsortiert)
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
146
Sortieren im Sekundärspeicher
§ Beispiel: Sortieren einer Relation R mit m = 2
T1 (sortiert)
T2 (sortiert)
…
Tn-1 (sortiert)
Tn (sortiert)
Sortieren im Primärspeicher
R (unsortiert)
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
147
Sortieren im Sekundärspeicher
§ Beispiel: Sortieren einer Relation R mit m = 2
T1,2 (sortiert)
…
Tn-1,n (sortiert)
Mischen
T1 (sortiert)
T2 (sortiert)
…
Tn-1 (sortiert)
Tn (sortiert)
Sortieren im Primärspeicher
R (unsortiert)
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
148
Sortieren im Sekundärspeicher
§ Beispiel: Sortieren einer Relation R mit m = 2
T1… (sortiert)
T…n (sortiert)
Mischen
T1,2 (sortiert)
…
Tn-1,n (sortiert)
Mischen
T1 (sortiert)
T2 (sortiert)
…
Tn-1 (sortiert)
Tn (sortiert)
Sortieren im Primärspeicher
R (unsortiert)
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
149
Sortieren im Sekundärspeicher
§ Beispiel: Sortieren einer Relation R mit m = 2
R (sortiert)
Mischen
T1… (sortiert)
T…n (sortiert)
Mischen
T1,2 (sortiert)
…
Tn-1,n (sortiert)
Mischen
T1 (sortiert)
T2 (sortiert)
…
Tn-1 (sortiert)
Tn (sortiert)
Sortieren im Primärspeicher
R (unsortiert)
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
150
Sortieren im Sekundärspeicher
§ Kosten des physischen Operators
sortS [ A ] ( R )
hängen offensichtlich von der Anzahl initial erzeugter
Teile Ti und dem Wert des Parameters m ab
§ Anzahl initial erzeugter Teile (runs)
Áp(R)/M Ë
§ Anzahl von Mischrunden (Ebenen)
log m (Áp(R)/M Ë)
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
151
Sortieren im Sekundärspeicher
§ Kosten des physischen Operators
sortS [ A ] ( R )
betragen damit
c(sortS [ A ] ( R )) = 2 p(R) (1 + log m (Áp(R)/M Ë))
da wir jede Seite der Relation R beim initialen Aufteilen
und bei jeder Mischrunde einmal lesen und schreiben
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
152
Selektion mittels Tabellenscan
§ Selektion mittels Tabellenscan
‡T [ P ] ( R )
liest Relation R sequenziell und filtert Tupel anhand
der Selektionsbedingung P aus
§ Kosten des physischen Operators entsprechen damit der
Seitenanzahl der Relation R und betragen
c(‡T [ P ] ( R )) = p(R)
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
153
Selektion mittels Indexscan
§ Selektion mittels Indexscan
‡I [ P ] ( R )
verwendet einen geeigneten Index, sofern verfügbar,
um Tupel zu identifizieren, welche die
Selektionsbedingung P erfüllen
§ Qualifizierende Tupel werden mit Hilfe des Index
identifiziert und bei Bedarf aus der zur Relation
gehörenden Datendatei geholt
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
154
Selektion mittels Indexscan
§ Kosten des physischen Operators hängen damit, bei
Verwendung eines B+-Baums, von der Höhe des Baums
und der Anzahl sich qualifizierender Tupel ab
c(‡I [ P ] ( R )) = logm p(R) + p(‡ [ P ] ( R ))
mit m als Grad des B+-Baums
§ Anzahl qualifizierender Tupel, d.h. die Selektivität der
Bedingung P, kann meist nur mit Hilfe von Statistiken
geschätzt werden (dazu später mehr)
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
155
Projektion ohne Duplikateneliminierung
§ Projektion ohne Duplikateneliminierung erfordert keine
zusätzlichen Seitenzugriffe, da nur Attribute entfernt
werden müssen
§ Kosten des physischen Operators
c(fiD [ A ] ( R )) = p(R)
entsprechen somit der Seitenanzahl der Relation R
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
156
Projektion mit Duplikateneliminierung
§ Projektion mit Duplikateneliminierung erfordert im
ungünstigsten Fall das Sortieren der Relation
gemäß der Attributmenge A
§ Kosten des physischen Operators
c(fiN [ A ] ( R )) = c(sortS [ A ] ( R ))
entsprechend damit den Kosten für das Sortieren
der Relation R im Sekundärspeicher
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
157
Projektion mit Duplikateneliminierung
§ Existiert ein geeigneter Index (z.B. ein B+-Baum auf den
Attributen aus A), so muss nicht sortiert werden
und die Kosten betragen
c(fiN [ A ] ( R )) = p(R)
§ Bei einem B+-Baum werden die Blattknoten durchlaufen;
Duplikate treten in Gruppen auf und können daher
einfach mittels Gruppenwechsel eliminiert werden
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
158
Nested-Loop Join
§ Nested-Loop Join durchläuft für jedes Tupel aus R alle
Tupel aus S und überprüft, ob die Joinbedingung θ gilt
1
2
3
4
5
for ( r : R ) {
for ( s : S ) {
if ( theta (r , s )) output (r , s );
}
}
§ Block Nested-Loop Join, als Optimierung, durchläuft für
jeden Block der Relation R alle Blöcke der Relation S;
für jedes Paar von Blöcken wird für alle Paare von
Tupeln die Joinbedingung θ überprüft
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
159
Nested-Loop Join
§ Kosten des physischen Operators
R ÛÙL [ ◊ ] S
hängen davon ab, ob ein geeigneter Index verfügbar ist
§ ohne geeignetem Index
c(R ÛÙL [ ◊ ] S) = p(R) · p(S)
§ mit geeignetem Index (B+-Baum)
c(R ÛÙL [ ◊ ] S) = p(R) · (log m p(S) + k)
mit m als Grad des B+-Baums und k als durchschnittliche
Anzahl von Tupeln in S mit gleichem Attributwert
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
160
Merge Join
§ Merge Join, nur anwendbar für Equi-Joins, nutzt aus,
dass die Relationen R und S vorsortiert auf
den Attributen A der Joinbedingung vorliegen
§ Relationen R und S werden im „Zick Zack“ vermischt
§ gilt r < s bzgl. A für die aktuellen Tupel aus R und S,
so wird das nächste Tupel aus R gelesen
§ gilt r > s für die aktuellen Tupel aus R und S,
so wird das nächste Tupel aus S gelesen
§ gilt r = s für die aktuellen Tupel aus R und S,
so wird r mit s und allen darauffolgenden Tupeln s‘
mit r = s‘ verbunden, dann wird nächstes Tupel aus R gelesen
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
161
Merge Join
§ Beispiel: Merge Join auf zwei Relationen R und S
R
1
2
4
7
7
S
3
4
4
5
6
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
7
162
Merge Join
§ Beispiel: Merge Join auf zwei Relationen R und S
R
1
2
4
7
7
S
3
4
4
5
6
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
7
163
Merge Join
§ Beispiel: Merge Join auf zwei Relationen R und S
R
1
2
4
7
7
S
3
4
4
5
6
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
7
164
Merge Join
§ Beispiel: Merge Join auf zwei Relationen R und S
R
1
2
4
7
7
S
3
4
4
5
6
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
7
165
Merge Join
§ Beispiel: Merge Join auf zwei Relationen R und S
R
1
2
4
7
7
S
3
4
4
5
6
7
§ Ausgabe: 4
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
166
Merge Join
§ Beispiel: Merge Join auf zwei Relationen R und S
R
1
2
4
7
7
S
3
4
4
5
6
7
§ Ausgabe: 4, 4
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
167
Merge Join
§ Beispiel: Merge Join auf zwei Relationen R und S
R
1
2
4
7
7
S
3
4
4
5
6
7
§ Ausgabe: 4, 4
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
168
Merge Join
§ Beispiel: Merge Join auf zwei Relationen R und S
R
1
2
4
7
7
S
3
4
4
5
6
7
§ Ausgabe: 4, 4
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
169
Merge Join
§ Beispiel: Merge Join auf zwei Relationen R und S
R
1
2
4
7
7
S
3
4
4
5
6
7
§ Ausgabe: 4, 4
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
170
Merge Join
§ Beispiel: Merge Join auf zwei Relationen R und S
R
1
2
4
7
7
S
3
4
4
5
6
7
§ Ausgabe: 4, 4
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
171
Merge Join
§ Beispiel: Merge Join auf zwei Relationen R und S
R
1
2
4
7
7
S
3
4
4
5
6
7
§ Ausgabe: 4, 4, 7
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
172
Merge Join
§ Beispiel: Merge Join auf zwei Relationen R und S
R
1
2
4
7
7
S
3
4
4
5
6
7
§ Ausgabe: 4, 4, 7, 7
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
173
Merge Join
§ Kosten des physischen Operators
R ÛÙM [ ◊ ] S
hängen davon ab, ob die beiden Relationen sortiert sind
§ beide Relationen vorsortiert
c(R ÛÙM [ ◊ ] S) = p(R) + p(S)
§ ist keine der Relationen vorsortiert, kommen die
entsprechenden Kosten zum Sortieren der beiden
Relationen hinzu
§ Achtung: Ergebnis kann |R|*|S| Tupeln enthalten
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
174
Hash Join
§ Hash Join konstruiert aus den Tupeln der kleineren
Relation (o.b.d.A. R) eine Hashtabelle und nutzt diese,
um zu jedem Tupel aus S die Joinpartner zu finden
§ Passt selbst die kleinere Relation nicht in den
Primärspeicher, so kann blockweise
vorgegangen werden
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
175
Hash Join
§ Beispiel:
R
1
2
4
7
7
S
3
4
4
5
6
7
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
x
h(x) = x mod 5
0
1
2
3
4
{}
{1}
{2, 7, 7}
{}
{4}
176
Hash Join
§ Beispiel:
R
1
2
4
7
7
S
3
4
4
5
6
7
x
h(x) = x mod 5
0
1
2
3
4
{}
{1}
{2, 7, 7}
{}
{4}
§ Ausgabe: 4
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
177
Hash Join
§ Beispiel:
R
1
2
4
7
7
S
3
4
4
5
6
7
x
h(x) = x mod 5
0
1
2
3
4
{}
{1}
{2, 7, 7}
{}
{4}
§ Ausgabe: 4, 4
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
178
Hash Join
§ Beispiel:
R
1
2
4
7
7
S
3
4
4
5
6
7
x
h(x) = x mod 5
0
1
2
3
4
{}
{1}
{2, 7, 7}
{}
{4}
§ Ausgabe: 4, 4
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
179
Hash Join
§ Beispiel:
R
1
2
4
7
7
S
3
4
4
5
6
7
x
h(x) = x mod 5
0
1
2
3
4
{}
{1}
{2, 7, 7}
{}
{4}
§ Ausgabe: 4, 4
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
180
Hash Join
§ Beispiel:
R
1
2
4
7
7
S
3
4
4
5
6
7
x
h(x) = x mod 5
0
1
2
3
4
{}
{1}
{2, 7, 7}
{}
{4}
§ Ausgabe: 4, 4, 7, 7
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
181
Hash Join
§ Kosten des physischen Operators
c(R ÛÙH [ ◊ ] S) = p(R) + p(S)
sofern die kleinere Relation R in den Primärspeicher passt
§ Bei blockweiser Vorgehensweise mit Kapazität M des
Primärspeichers ergeben sich ansonsten Kosten von
9
:
p(R)
c(R ÛÙH [ ◊ ] S) = p(R) +
· p(S)
M
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
182
Zusammenfassung
§ Mehrdimensionale Bereichsanfragen möglich mit
§ raumfüllenden Kurven
§ rekursiver Partitionierung
§ R-Bäumen
§ Implementierung von Operatoren der Relationenalgebra
§ Selektion mit/ohne Indexunterstützung
§ Projektion mit/ohne Duplikateneliminierung
§ Sortieren im Primär- oder Sekundärspeicher
§ Join mittels verschachtelter Schleifen, Mischen oder Hashing
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
183
Literatur
[1]
A. Kemper und A. Eickler: Datenbanksysteme – Eine
Einführung, De Gruyter Oldenbourg, 2015 (Kapitel 8)
[2]
G. Saake, K.-U. Sattler und A. Heuer:
Datenbanken - Implementierungstechniken,
mitp Professional, 2011 (Kapitel 6 & 7)
[3]
Spatial Indexing Overview, Microsoft TechNet
[Link]
Datenbanken & Informationssysteme / Kapitel 3: Datenbanksysteme
184
Herunterladen