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