4. Zugriffsstrukturen für komlpexe Objekte Integration von Zugriffsstrukturen in DBs Integration von Zugriffsstrukturen in Datenbanken 4. Zugriffsstrukturen für komlpexe Objekte Integration von Zugriffsstrukturen in DBs Struktur und Eigenschaften des GiST • Viele Forschungsansätze konzentrieren sich auf die Entwicklung spezieller Zugriffsstrukturen (geometrisch, mehrdimensional, metrisch, etc.), • z.B. Suchbäume zur Optimierung einzelner Anfragetypen. • Andere Forschungsansätze zielen darauf ab, existierende Suchbäume um neue Datentypen erweitern zu können. • Da das DBS-Anwendungsspektrum immer komplexer wird, ist die Flexibilit ät beider Ansätze nicht ausreichend. • Ziel: Erweiterbarkeit sowohl für Anfrage- als auch für Datentypen Datenbanksysteme: Weiterführende Konzepte — FH Bonn-Rhein-Sieg, WS 05/06 4. Zugriffsstrukturen für komlpexe Objekte 198 Integration von Zugriffsstrukturen in DBs Generalized Search Tree (GiST) Der verallgemeinerte Suchbaum (GiST) beruht: • auf einem objektorientierten Ansatz, • besitzt eine Code-Basis und • kann mit Hilfe von vier benutzerdefinierten Methoden für neue Anwendungen konfiguriert oder spezialisiert werden. • balancierter Suchbaum • generische Algorithmen für Suche, Einfügen und Löschen • Knoten besitzen einen variablen Verzweigungsgrad m mit f · M ≤ m ≤ M und 2 1 ≤f ≤ M 2 • Für die Wurzel: 2 ≤ m ≤ M • f stellt den minimalen Füllfaktor des Baumes dar. Datenbanksysteme: Weiterführende Konzepte — FH Bonn-Rhein-Sieg, WS 05/06 4. Zugriffsstrukturen für komlpexe Objekte 200 Integration von Zugriffsstrukturen in DBs • Innere Knoten: Einträge sind (p, Z)-Paare mit – einem Prädikat p, daß eine “umhüllende Figur” beschreibt und als Wegweiser für das Durchwandern des Baumes verwendet wird – und einem Verweis Z auf einen Teilbaum. • Blattknoten enthalten als Einträge (p, D)-Paare mit – einem Prädikat p, das als Suchschlüssel verwendet wird – und einer Satzadresse D. ☞ Ein Indexeintrag kann ein beliebiges Prädikat enthalten, das für alle Prädikate des abhängigen Teilbaums gilt. Durch einheitlichen Implementierungskern und benutzerdefinierte Methoden: ☞ Erweiterbarkeit und Code-Reuse Datenbanksysteme: Weiterführende Konzepte — FH Bonn-Rhein-Sieg, WS 05/06 199 Datenbanksysteme: Weiterführende Konzepte — FH Bonn-Rhein-Sieg, WS 05/06 201 4. Zugriffsstrukturen für komlpexe Objekte Integration von Zugriffsstrukturen in DBs GiST: Definition Die Wurzel hat mindestens zwei Indexeinträge, außer sie ist ein Blatt. Jeder Indexeintrag (p, ptr) in einem Blatt liefert p = T RU E , wenn er mit den Werten aus dem mit ptr referenzierten Satz instanziiert wird. • Jeder Indexeintrag (p, ptr) in einem inneren Knoten liefert p = T RU E , wenn er mit Werten aus Sätzen, die über ptr erreichbar sind, instanziiert wird. Datenbanksysteme: Weiterführende Konzepte — FH Bonn-Rhein-Sieg, WS 05/06 SEARCH liefert für ein Suchprädikat p alle Blatteinträge, die p erfüllen. Dazu ist üblicherweise rekursive Suche notwendig. INSERT fügt einen Indexeintrag (p, D) in den GiST ein. Es kann mehr als einen Teilbaum geben, in den der GiST eingefügt werden kann. DELETE entfernt ein (p, D)-Paar aus einem Blattknoten. Jeder Weg von der Wurzel zum Blatt hat die Länge h. Jeder Knoten außer der Wurzel enthält zwischen f · M und M Indexeinträgen 4. Zugriffsstrukturen für komlpexe Objekte Integration von Zugriffsstrukturen in DBs Operationen für den GiST Definition. Ein GiST vom Typ (f, M, h) ist ein Suchbaum mit den folgenden Eigenschaften: • • • • 4. Zugriffsstrukturen für komlpexe Objekte 202 Integration von Zugriffsstrukturen in DBs ☞ Diese generischen Operationen werden durch eine Menge von Methoden erg änzt, die das genaue Verhalten der Operationen und der Organisation des Suchbaums kapseln. ☞ Dadurch läßt sich der GiST als Zugriffsstruktur spezialisieren. Datenbanksysteme: Weiterführende Konzepte — FH Bonn-Rhein-Sieg, WS 05/06 4. Zugriffsstrukturen für komlpexe Objekte 204 Integration von Zugriffsstrukturen in DBs Bemerkungen zur Definition GiST Parameter • Für einen Eintrag (p0, ptr0 ), der über ptr erreichbar ist, wird nicht p0 ⇒ p gefordert. • Auf derselben Baumebene sind Einträge mit umhüllenden Prädikaten gestattet, die sich überlappen können. • Dadurch kann die Pfadauswahl bei der Suche mehrdeutig werden. • Die Vereinigung aller umhüllenden Prädikate kann “Löcher” aufweisen. • Die Blattknoten des GiST partitionieren die Menge der gespeicherten Objektreferenzen. Zu jedem Objekt darf es nur einen Blatteintrag geben. • Umhüllende Prädikate (Bounding Predicates) Um einen hohen Verzweigungsgrad und geringe Suchkosten zu erzielen, müssen diese Prädikate kompakt zu speichern und einfach zu überprüfen sein. Beispiel R-Baum: mehrdimensionale Rechtecke • Einfügeheuristik (Penalty Metric) Diese Heuristik muß mit Hilfe der umhüllenden Prädikate den Modifikationsaufwand bei alternativer Möglichkeiten der Einfügung abschätzen. Beispiel R-Baum: minimale Rechteckerweiterung (Fläche) • Knotenaufteilung (PickSplit Algorithm) Algorithmus zur Aufteilung eines Knotens bei einem Überlauf Beispiel R-Baum: Split-Heuristik auf Basis einer heuristischen Minimierung der entstehenden Gesamtfläche ☞ Für die Realisierung dieser Parameter werden im GiST vier abstrakte Methoden definiert, die dann für einen spezifischen Index mit einer Implementierung versehen werden. Datenbanksysteme: Weiterführende Konzepte — FH Bonn-Rhein-Sieg, WS 05/06 203 Datenbanksysteme: Weiterführende Konzepte — FH Bonn-Rhein-Sieg, WS 05/06 205 4. Zugriffsstrukturen für komlpexe Objekte Integration von Zugriffsstrukturen in DBs 4. Zugriffsstrukturen für komlpexe Objekte Integration von Zugriffsstrukturen in DBs Beispiel: Integer GiST Spezialisierung durch Schlüsselmethoden • Schlüssel repräsentieren Intervalle [x, y). • Consistent(E, q) Für einen gegebenen Eintrag E = (p, ptr) und ein Anfrageprädikat q liefert die Methode F ALSE , falls (p ∧ q) nicht erfüllbar ist, sonst T RU E . • U nion(P ) Eine Menge P = {(p1 , ptr1), . . . , (pn, ptrn)} von Einträgen liefert ein Prädikat r zurück, das von allen über ptr1, . . . , ptrn erreichbaren Tupeln erfüllt wird. • P enalty(E1 , E2) Zwei Einträge E1 = (p1 , ptr1) und E2 = (p2, ptr2) liefern einen Penalty-Wert zurück, der den Aufwand des Einfügens von E2 in den Teilbaum mit E1 als Wurzel beschreibt. • P ickSplit(P ) Eine Menge P = {(p1 , ptr1), . . . , (pM +1 , ptrM +1 } wird so in zwei Mengen P1 und P2 aufgeteilt, daß jede der beiden Mengen mindestens f · M Einträge enthält. Datenbanksysteme: Weiterführende Konzepte — FH Bonn-Rhein-Sieg, WS 05/06 4. Zugriffsstrukturen für komlpexe Objekte 206 Integration von Zugriffsstrukturen in DBs • Compress(E) Für einen Eintrag E = (p, ptr) wird ein Eintrag (π, ptr) geliefert, wobei π eine komprimierte Darstellung von p ist. • Decompress(E) Für eine komprimierte Darstellung (π, ptr) eines Eintrags mit π = Compress(p) wird ein Eintrag (r, ptr) geliefert, mit p ⇒ r. Bemerkung: Die Kompression kann verlustbehaftet sein. Datenbanksysteme: Weiterführende Konzepte — FH Bonn-Rhein-Sieg, WS 05/06 207 • Anfrage: Contains([a, b), v) = T RU E :⇔ a ≤ v < b Implementierung: • Consistent(E, q) := (x < b) ∧ (y > a) • U nion(P ) = [min(xi ), max(yi)) • P enalty(E1 , E2) = – max(x1 − x2, 0) falls E1 der am weitesten rechts stehende Eintrag ist. – max(y1 − y2, 0) falls E1 der am weitesten links stehende Eintrag ist. – max(y2 − y1, 0) + max(x2 − x1 , 0) sonst • P ickSplit(P ): P1 seien die ersten b |P2 | c Einträge und P2 die letzen d |P2 | e. Der GiST entspricht so genau einem B*-Baum. Datenbanksysteme: Weiterführende Konzepte — FH Bonn-Rhein-Sieg, WS 05/06 4. Zugriffsstrukturen für komlpexe Objekte 208 Integration von Zugriffsstrukturen in DBs Weitere Beispiel: Polygone, Integer-Mengen ✎ GiST-Implementierungen existieren für: • Informix • Postgres Datenbanksysteme: Weiterführende Konzepte — FH Bonn-Rhein-Sieg, WS 05/06 209 4. Zugriffsstrukturen für komlpexe Objekte Integration von Zugriffsstrukturen in DBs Integration von Zugriffsstrukturen mittels Tabellenfunktion Objekte.oid = Indexstruktur.oid OID GeoBlob 4711 NonGeoAttr. See 4711 Relation R−Baum als Tabellenfunktion Datenbanksysteme: Weiterführende Konzepte — FH Bonn-Rhein-Sieg, WS 05/06 4. Zugriffsstrukturen für komlpexe Objekte • • • • 210 Integration von Zugriffsstrukturen in DBs Zugriffsstruktur für ein Prädikat wird als Tabellenfunktion bereitgestellt. Tabellenfunktion ist gemäß Prädikat parametrisiert. CARDINALITY-Klausel bei der Tabellenfunktion verwenden! Bei großer Relation sollte der Optimizer als Strategie die Berechnung der Tabellenfunktion bevorzugen. Beispiel: ✎ Datenbanksysteme: Weiterführende Konzepte — FH Bonn-Rhein-Sieg, WS 05/06 211