Upload
izaak-schmidtberger
View
106
Download
0
Embed Size (px)
Citation preview
UB-Bäume
Vortrag von
Georg Göttlich
am
26.06.2001
Proseminar: Algorithmen und Datenstrukturen für Datenbanksysteme
Übersicht
1. Einführung
2. Konzept
3. Umsetzung
4. Tetris Algorithmus (optional)
5. Leistung(optional)
Einführung
B+-Baum
Primärindex
A,2 B,1 C,8 D,5 E,4 F,6 G,3H,7
• Daten nur in den Blättern• Nach Primärindex geclustert• Blätter Verkettet
Geringer Aufwand für Bereichsanfragen auf den Primärschlüssel
Daten nicht geclustertA – D => 2 Seiten
A,2 B,1 C,8 D,5 E,4 F,6 G,3H,7
2 – 5 => 4 Seiten
aber
Anfragen auf andere Felder erfordernSekundärindexe
Sekundärindex A ,2B ,1 C ,8D ,5E ,4 F,6G ,3 H ,7
Der B+-Baum
EinführungMultidimensionale Anfragen
Das Universum
S ch iffsnam e
X -Po s itio n
Y -Po s itio n
[(42,49),(10,20),(„NCC1701A“,“NCC1701E“)]
• n-dimensionaler Raum bei n indexierten Feldern
• Die Werte der Felder sind die Koordinaten
„Hyperplane“
• ein Wert fix, die anderen Dimensionen unbeschränkt
„Query Box“
• alle Dimensionen auf einen Bereich beschränkt
[11,9,“Galactica“][((-,+ ), (-,+ ),“Executer“]
Punktanfrage
• ein bestimmter Wert in jeder Dimension
• genau ein Punkt des Universums
Beispiel:
EinführungTheoretischer Leistungsvergleich
Idealfall
s1*s2*P
multidimen-sionaler
Index
s1 *s2
*P
mehrereB-Bäume,
Bitmap Indexe
s1*I1+s2*I2+s1*s2*T
composite key clustering
B-Baum
s1*P
Übersicht
1. Einführung
2. Konzept
3. Umsetzung
4. Tetris Algorithmus (optional)
5. Leistung(optional)
KonzeptZerlegung in Subcubes
Ein n-dimensionaler Kubus wird in 2n Subcubes zerlegt
n = 2 n = 3
Rekursive Zerlegung bis zu den „Pixeln“
n = 2
KonzeptZ-Ordering
Das n-dimensionale Universum wird mit Hilfe der Lebesgue-Kurve (Z-Kurve)auf die Zahlengerade projiziert.
10 32 54 7610 32 54 76
10
4
2
5
3
76
10
4
2
5
3
76
2-dimensionales Universum
Z-Kurve
10 54 1716 212032 76 1918 232298 1312 2524 2928
1110 1514 2726 3130
3332 3736 4948 53523534 3938 5150 55544140 4544 5756 61604342 4746 5958 6362
Z-Adressen
Z -Region[10:20]
KonzeptZ-Regionen
10
20
Partitionierung:[0:7],[8:20],[21:46],[47:57],[58:63]
7
2 0
4 6
5 7
Zwei Z-Adressen und gebend eine„Region“ des Universums bzw. einenAbschnit auf der Zahlengerade an.Formal: Z-region[:]
Eine Menge Z-Adressen M partitioniert ein Universum vollständig
KonzeptAbbildung einer Query-Box
m ehrd im ensiona ler R aum
Z-A dressraum
Q
Übersicht
1. Einführung
2. Konzept
3. Umsetzung
4. Tetris Algorithmus (optional)
5. Leistung(optional)
UmsetzungBitinterleaving
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
Z-Adresse = 1 1 0 = 405
x1= 101 x2= 110 x3= 001
Koordinaten:
Step0
10 0Step1
101Step2
0
0
01
1
1
1 0 0 1 0 1
1 0
1 0
1 0
11
11
11
11 0 11 1
1 0 0 0 1 0 0 1 11 0 0 11 0 1
1 0 1 0 1 0 11 11 1 0 11 11
0 1
2 3
4 5
6 7
8 9
1 0 11
1 2 1 3
1 4 1 5
Zweidimensionaler Beispielraum:
x1
x2
UmsetzungPunktoperationen
Operationalisierung: Koordinaten => Z-Adresse => Algorithmus für den B+-Baum
Veranschaulichung an einem UB-Baum mit maximaler Tupelzahl pro Blatt M = 3:
Felder
Sch
iffe
<< und n/2- < Anzahl der Objekte in Z-Region[:] < n/2+
Pagesplitting:entsprich im UB-Baum dem Teilen von Z-Regionen
UmsetzungRangequery
Query-Box
ql
qh
Felder
Sch
iffe
Status UBTree_Range_Query(Tuple ql, Tuple qh) {
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
1. Seite von ql laden2. Ende der aktuellen Seite finden3. Tupel filtern4. überprüfen ob Ende der aktuelle Seite > qh
wenn ja: HALT5. nächsten Punkt der Z-Kurve finden, der innerhalb der
Abfrage liegt
UmsetzungNächste Z-Adresse
A B
DC
• erste Z-Adresse nach der höchsten Z-Adresse der aktuellen Region suchen
• 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 AlgorithmusTetris Ordering
Z-Ordering
1 2 3 4 5 6 70 2A
0
1
A 1
2
3
4
5
6
7
0
6 3
Tetris Oder (A2)
2A
A 1
1 2 3 4 5 6 700
1
2
3
4
5
6
7
0
6 3
Tetris Oder (A1)
Tetris AlgorithmusNächster Event Point
H2 (0)
e33
2
1
e4
e5
a21 b2
1
e5
H 2(2)
• 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 AlgorithmusBeispiel
Sortier-richtung
Übersicht
1. Einführung
2. Konzept
3. Umsetzung
4. Tetris Algorithmus (optional)
5. Leistung(optional)
NOTHALT
LeistungPosition der Query-Box
LeistungGröße der Query-Box
LeistungFüllungsgrad des Universums
SchlussIntegrierbarkeit
Access Structure Manager
Query Processor
LockManager
CatalogManager
Creation of UB-Trees
SQLCompiler/Interpreter
Extend Parser with DDL statementsfor UB-Trees
QueryOptimizer
New Rules +Cost Modelfor UB-Trees
UB-Tree Range Query Support
UB-Tree Modules :Transformation Functions , Page Splitting, Range Query
StorageManager
Recovery Manager
BufferManager
Communication Manager • Minor extensions:
• Major extensions:
• New modules:
• NO changes for:– DML
– Multi-user support, i.e., locking, logging facilities handled by underlying B*-Tree
That‘s all folks!
The End