UB-Bäume Vortrag von Georg Göttlich am 26.06.2001 Proseminar: Algorithmen und Datenstrukturen für...

Preview:

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

Recommended