Proseminar Algorithmen und Datenstrukturen fr Datenbanksysteme UBBume Vortrag
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 Primärindex • 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 – 5 D=> =>42 Seiten Anfragen auf andere Felder erfordern Sekundärindexe Þ Daten nicht geclustert
Einführung Multidimensionale Anfragen Das Universum • n-dimensionaler Raum bei n indexierten Feldern • Die Werte der Felder sind die Koordinaten Punktanfrage „Hyperplane“ „Query Box“ • alle Dimensionen • ein bestimmter Wert • ein Wert fix, die auf einen Bereich in jeder Dimension anderen Dimensionen beschränkt unbeschränkt • genau ein Punkt des Universums [((- , + ), “Executer“] Beispiel: [11, 9, “Galactica“] [(42, 49), (10, 20), („NCC 1701 A“, “NCC 1701 E“)]
Einführung Theoretischer Leistungsvergleich composite mehrere key clustering B-Bäume, B-Baum Bitmap Indexe s 1*P s 1*I 1+s 2*I 2+s 1*s 2*T multidimensionaler Index Idealfall s 1 *s 2 *P s 1*s 2*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 2 n 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 4 2 3 6 8 9 12 10 11 14 32 33 36 34 35 38 40 41 44 42 43 46 Z-Kurve 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 10 Z -Region[10: 20] Partitionierung: [0: 7], [8: 20], [21: 46], [47: 57], [58: 63]
Konzept Abbildung einer Query-Box
Ü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: x 1= 101 Zweidimensionaler Beispielraum: x 2= 110 x 3= 001 x 2 Z-Adresse = 1 1 0 0 1 0 1 = 405 Step 0 Step 1 Step 2 x 1
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 Schiffe < < und n/2 - < Anzahl der Objekte in Z-Region[ : ] < n/2+
Umsetzung Rangequery Felder Status UBTree_Range_Query(Tuple ql, Tuple qh) { ql Schiffe Query-Box 1. 2. 3. 4. 5. qh Z-value start = UBKEY(ql); Z-value end = UBKEY(qh); Z-value cur = start; While (1) { cur = get. Region. Separator(cur); Filter. Tuples(Get. Page(cur), ql, qh); if (cur >= end) break; cur = get. Next. Zvalue(&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 • 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 (A 2) Tetris Oder (A 1)
Tetris Algorithmus Nächster Event Point • 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 ! s k l o f l l a s ‘ t Tha
- Slides: 25