Teil 4b

Werbung
Proseminar: Algorithmen und Datenstrukturen für Datenbanksysteme
UB-Bäume
Vortrag von
Georg Göttlich
am
26.06.2001
Übersicht
1.
Einführung
2.
Konzept
3.
Umsetzung
4.
Tetris Algorithmus
(optional)
5.
Leistung
(optional)
Einführung
Der B+-Baum
B+-Baum
Sekundärindex
B,1 A,2 Primärindex
G,3 E,4 D,5 F,6 H,7C,8
• Daten nur in den Blättern
• Nach Primärindex geclustert
• Blätter Verkettet
 Geringer Aufwand für Bereichsanfragen
auf den Primärschlüssel
aber
A,2 B,1 C,8 D,5 E,4 F,6 H,7 G,3
A
2–D
5 =>
=> 42 Seiten
Seiten
Anfragen auf andere Felder erfordern
Sekundärindexe
 Daten nicht geclustert
Einführung
Multidimensionale Anfragen
Das Universum
Punktanfrage
„Hyperplane“
„Query Box“
X-Position
Schiffsname
Y-Position
• n-dimensionaler
Raum bei n
indexierten Feldern
• Die Werte der Felder
sind die Koordinaten
• ein bestimmter Wert
in jeder Dimension
• genau ein Punkt des
Universums
• alle Dimensionen
• ein Wert fix, die
auf einen Bereich
anderen Dimensionen
beschränkt
unbeschränkt
[((-,+ ), (-,+ ),“Executer“]
Beispiel: [11,9,“Galactica“]
[(42,49),(10,20),(„NCC1701A“,“NCC1701E“)]
Einführung
Theoretischer Leistungsvergleich
composite
mehrere
key clustering B-Bäume,
B-Baum
Bitmap Indexe
s1*P
s1*I1+s2*I2+s1*s2*T
multidimensionaler
Index
Idealfall
s1 *s2 *P
s1*s2*P
Übersicht
1.
Einführung
2.
Konzept
3.
Umsetzung
4.
Tetris Algorithmus
(optional)
5.
Leistung
(optional)
Konzept
Zerlegung in Subcubes
Ein n-dimensionaler Kubus wird in 2n Subcubes zerlegt
n=2
n=3
Rekursive Zerlegung bis zu den „Pixeln“
n=2
Konzept
Z-Ordering
Das n-dimensionale Universum wird mit Hilfe der Lebesgue-Kurve (Z-Kurve)
auf die Zahlengerade projiziert.
2-dimensionales Universum
0 1 2 3 4 5 6 7
0
1
2
3
4
5
6
7
Z-Kurve
0 1 4
2 3 6
8 9 12
10 11 14
32 33 36
34 35 38
40 41 44
42 43 46
5
7
13
15
37
39
45
47
16
18
24
26
48
50
56
58
17 20
19 22
25 28
27 30
49 52
51 54
57 60
59 62
Z-Adressen
21
23
29
31
53
55
61
63
Konzept
Z-Regionen
Zwei Z-Adressen  und  gebend eine
„Region“ des Universums bzw. einen
Abschnit auf der Zahlengerade an.
Formal: Z-region[:]
Eine Menge Z-Adressen M
partitioniert ein Universum
vollständig
20
20
7
10
57
46
Z -Region[10:20]
Partitionierung:
[0:7],[8:20],[21:46],
[47:57],[58:63]
Konzept
Abbildung einer Query-Box
Q
mehrdimensionaler Raum
Z-Adressraum
Übersicht
1.
Einführung
2.
Konzept
3.
Umsetzung
4.
Tetris Algorithmus
(optional)
5.
Leistung
(optional)
Umsetzung
Bitinterleaving
Umwandlung der Koordinaten in eine geeignete Bitdarstellung, d.h.
lexikographische Ordnung der Bitstrings = Ordnung der Feldwerte
=> Berechnung der Z-Adressen durch einfache Bitoperationen möglich
Koordinaten:
x1= 101
Zweidimensionaler Beispielraum:
x2= 110
x3= 001
0
Z-Adresse = 1 1 0 0 1 0 1 0 1 = 405
Step0
Step1
Step2
1
10
11
x1
x2
0
1
10
11
0
1
4
5
0
1
100
101
2
3
6
7
10
11
110
111
8
9
12
13
1000
1001
1100
1101
10
11
14
15
1010
1011
1110
1111
Umsetzung
Punktoperationen
Operationalisierung: Koordinaten => Z-Adresse => Algorithmus für den B+-Baum
Veranschaulichung an einem UB-Baum mit maximaler Tupelzahl pro Blatt M = 3:
Felder
Pagesplitting:
entsprich im UB-Baum dem Teilen von Z-Regionen
<< und n/2- < Anzahl der Objekte in Z-Region[:] < n/2+
Umsetzung
Rangequery
Felder
Status UBTree_Range_Query(Tuple ql, Tuple qh) {
ql
Query-Box
qh
1.
2.
3.
4.
5.
Z-value start = UBKEY(ql);
Z-value end = UBKEY(qh);
Z-value cur = start;
While (1) {
cur = getRegionSeparator(cur);
FilterTuples(GetPage(cur), ql, qh);
if (cur >= end) break;
cur = getNextZvalue(&cur, start,
end);
}}
//continue as long we are in the query box
// getting the address of the region containing cur
//post- filtering of the tuples in the region
//stop once we covered the whole query box
//calculation of next region
Seite von ql laden
Ende der aktuellen Seite finden
Tupel filtern
überprüfen ob Ende der aktuelle Seite > qh
wenn ja: HALT
nächsten Punkt der Z-Kurve finden, der innerhalb der
Abfrage liegt
Umsetzung
Nächste Z-Adresse
• erste Z-Adresse nach der höchsten Z-Adresse der
aktuellen Region suchen

AD




B

C





• Durch Vergleich mit qh und ql überprüfen, ob
innerhalb der Querrybox (Bitoperation)
• Anhand der beim Vergleich gewonnen Daten
feststellen, in welchen Dimensionen die Adresse
nicht innerhalb der Query-Box liegt und welche Bits
geändert werden müssen (Bitoperationen)
Übersicht
1.
Einführung
2.
Konzept
3.
Umsetzung
4.
Tetris Algorithmus
(optional)
5.
Leistung
(optional)
NOTHALT
Tetris Algorithmus
Tetris Ordering
Z-Ordering
Tetris Oder (A2)
0 1
0 0
1
2
3
4
5
6 7 A2
2
3
4
5
6
7
A1
63
Tetris Oder (A1)
0 1 2
0 0
1
2
3
4
5
6
7
A1
3 4 5 6 7 A2
63
Tetris Algorithmus
Nächster Event Point
1 H
(2)
1
2

b
H2a(0)
2 2
 1
e5
e3

e4


2
e5
3


• ql Seite laden und Tuperl filtern und cachen
• auf der Ebene (sweep plane) weiter bis zum
nächsten Punkt der außerhalb des schon
geladenen Bereichs liegt (event point)
• entsprechende Seite lade und Tupel filtern,
wiederholen bis Ebene komplett
•Cach sortieren
•nächsten event point suchen, die Elemente aller
Ebene darunter, bis einschließlich der letzten
„sweep plane“, ausgeben und aus dem Cach
löschen
• auf der neuen „sweep plane“ fortfahren
Tetris Algorithmus
Beispiel
Sortierrichtung
Übersicht
1.
Einführung
2.
Konzept
3.
Umsetzung
4.
Tetris Algorithmus
(optional)
5.
Leistung
(optional)
NOTHALT
Leistung
Position der Query-Box
Leistung
Größe der Query-Box
Leistung
Füllungsgrad des Universums
Schluss
Integrierbarkeit
•
•
•
•
Communication Manager
SQL
Compiler/Interpreter
Extend Parser with
DDL statements
for UB-Trees
Query
Optimizer
– DML
– Multi-user support, i.e.,
locking, logging facilities
 handled by underlying
B*-Tree
Catalog
Manager
New Rules+Cost Model
for UB-Trees
Creation of UB-Trees
Query
Processor
UB-Tree Range
Query Support
Lock
Manager
Access Structure
Manager
UB-Tree Modules:
Transformation Functions, Page Splitting,
Range Query
Buffer
Manager
Storage
Manager
Minor extensions:
Major extensions:
New modules:
NO changes for:
Recovery
Manager
The End
Herunterladen