Proseminar: Algorithmen und Datenstrukturen für Datenbanksysteme UB-Bäume Vortrag von Georg Göttlich am 26.06.2001
Übersicht Einführung Konzept Umsetzung Tetris Algorithmus (optional) Leistung (optional)
Einführung Der B+-Baum B+-Baum aber Primärindex Daten nur in den Blättern Nach Primärindex geclustert aber Anfragen auf andere Felder erfordern Sekundärindexe Blätter Verkettet Geringer Aufwand für Bereichsanfragen auf den Primärschlüssel Primärindex A – D => 2 Seiten A,2 B,1 C,8 D,5 E,4 F,6 G,3 H,7 2 – 5 => 4 Seiten A,2 B,1 C,8 D,5 E,4 F,6 H,7 G,3 Daten nicht geclustert
Multidimensionale Anfragen Einführung Multidimensionale Anfragen Das Universum Punktanfrage ein bestimmter Wert in jeder Dimension genau ein Punkt des Universums Beispiel: „Hyperplane“ ein Wert fix, die anderen Dimensionen unbeschränkt „Query Box“ alle Dimensionen auf einen Bereich beschränkt n-dimensionaler Raum bei n indexierten Feldern Die Werte der Felder sind die Koordinaten [11,9,“Galactica“] [(42,49),(10,20),(„NCC1701A“,“NCC1701E“)] [((-,+ ), (-,+ ),“Executer“]
Theoretischer Leistungsvergleich Einführung Theoretischer Leistungsvergleich composite key clustering B-Baum s1*P mehrere B-Bäume, Bitmap Indexe s1*I1+s2*I2+s1*s2*T multidimen- sionaler Index s1 *s2 *P Idealfall s1*s2*P
Übersicht Einführung Konzept Umsetzung Tetris Algorithmus (optional) Leistung (optional)
Konzept Zerlegung in Subcubes n = 2 n = 3 n = 2 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 Z-Kurve 1 5 4 17 16 21 20 3 2 7 6 19 18 23 22 9 8 13 12 25 24 29 28 11 10 15 14 27 26 31 30 33 32 37 36 49 48 53 52 35 34 39 38 51 50 55 54 41 40 45 44 57 56 61 60 43 42 47 46 59 58 63 62 Z-Adressen
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 Z -Region[10:20] 10 20 Partitionierung: [0:7],[8:20],[21:46], [47:57],[58:63]
Abbildung einer Query-Box Konzept Abbildung einer Query-Box
Übersicht Einführung Konzept Umsetzung Tetris Algorithmus (optional) Leistung (optional)
lexikographische Ordnung der Bitstrings = Ordnung der Feldwerte 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 x1= 101 x2= 110 x3= 001 Koordinaten: Zweidimensionaler Beispielraum: x1 x2 1 1 Step1 1 1 Step2 Z-Adresse = = 405 Step0
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 Schiffe Pagesplitting: entsprich im UB-Baum dem Teilen von Z-Regionen << und n/2- < Anzahl der Objekte in Z-Region[:] < n/2+
Umsetzung Rangequery ql qh Seite von ql laden Felder Schiffe 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 Query-Box ql qh 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 Einführung Konzept Umsetzung Tetris Algorithmus (optional) Leistung (optional) NOTHALT
Tetris Algorithmus Tetris Ordering Z-Ordering Tetris Oder (A2)
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 Sortier- richtung
Übersicht Einführung Konzept Umsetzung Tetris Algorithmus (optional) Leistung (optional) NOTHALT
Position der Query-Box Leistung Position der Query-Box
Leistung Größe der Query-Box
Füllungsgrad des Universums Leistung Füllungsgrad des Universums
Schluss Integrierbarkeit Minor extensions: Major extensions: New modules: NO changes for: DML Multi-user support, i.e., locking, logging facilities handled by underlying B*-Tree Communication Manager SQL Compiler/Interpreter Extend Parser with DDL statements for UB - Trees Query Optimizer Catalog New Rules + Cost Model Manager for UB - Trees Query Creation of UB - Trees Processor UB - Tree Range Query Support Lock Access Structure Manager Manager UB - Tree Modules : Transformation Functions , Page Splitting, Range Query Buffer Storage Recovery Manager Manager Manager
The End That‘s all folks!