Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in...

21
Gunnar Söllig, Stand 3. 1. 20 06 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale Datenstrukturen

Transcript of Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in...

Page 1: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

Gunnar Söllig, Stand 3. 1. 2006

Studienarbeit

Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS amBeispiel eines Indexes für mehrdimensionale Datenstrukturen

Page 2: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

2

Gliederung

Erweiterung ORDBMS Drei Ansätze

Multidimensionale Zugriffsverfahren Überblick Konkret: LSDh-Baum

Konzept dieser Implementation Relational Indexing mit IBM DB2

Page 3: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

3

Erweiterung ORDBMS

Vorhanden: Nutzerdefinierte Datentypen, Prädikate Erweiterbare Indexing-Frameworks

Data cartridges, database extenders, data blades

Probleme: Effiziente Ausführungspläne gefordert Zugriffsmethode selbst nicht änderbar Engpässe bei Auslagerung

Ziel: Verwendbarkeit selbstdefinierter Indexe

gleichwertig Standardindexen

Page 4: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

4

Erweiterung ORDBMS

Deklaration CREATE TYPE t_obj AS OBJECT(…) CREATE TABLE my_objects(obj t_obj) CREATE INDEX custom_idx ON my_objects(obj)

Extensible Indexing index_create(), index_drop(), index_open() index_close(), index_insert(), …

Unterstützung Optimierer stats_collect(), predicate_select() index_cpu_cost(), index_io_cost()

Page 5: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

5

Varianten

Integrierender Ansatz „hartverdrahtet“ im DB-Kern

Generischer Ansatz Generalized Search Tree (GiST)

Relationaler Ansatz Setzt auf SQL-Schicht auf

Page 6: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

6

Integrative Approach

ACID-Prinzip gewährleisten Unterscheidet Extending/Enhancing

Approach Vorteil:

Höchste Performanz Nachteile:

Umfangreiche Implementation Fehleranfällig, plattformabhängig Praktisch nur durch Hersteller realisierbar

Page 7: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

7

Generic Approach

Generalized Search Tree Wird einmalig wie Integrative Approach

implementiert Bietet dann Framework für beliebige

Indexe Vorteil:

Leichte Integration neuer Indexe Nachteile:

Schwierig zu implementieren Aktuell nur Forschungsprototypen

Page 8: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

8

Relational Approach

Definition des Indexes mittels relationaler Anfragesprache

Unterliegt deren Beschränkungen, nicht in jedem Fall anwendbar

Geringer Implementierungsaufwand Implementierungsunabhängig von

tieferliegenden Schichten, plattformunabhängig

Trotzdem konkurrenzfähige Performanz

Page 9: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

9

Schaubild Vergleich

Entnommen aus: Hans-Peter Kriegel et al: The Paradigm of Relational Indexing: A Survey

Page 10: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

10

Multidimensionale Zugriffsverfahren

Anwendungsfälle Medizin, CAD, Geographie, Molekularbiologie

Ähnlichkeitsmaß Keine generelle Definition möglich Oft Lk-Metrik

Feature Transformation Typische Anfragen

Punktanfrage (identity query) Bereichsanfrage (range query) (k-)NN-Anfrage (epsilon/nn-query)

0: ObjObj

dObjF :

Page 11: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

11

Klassifizierung Zugriffsstrukturen

Data partitioning vs. space partioning Hash-basierte (ungeignet)

Grid-File, Buddy-Tree R-Baum-ähnliche

R-Tree, R*-Tree, R+-Tree, X-Tree SS-Tree, SR-Tree TV-Tree

kd-Baum-basierte VAMSplit-R-Tree, LSD-Tree, speziell LSDh-Tree

Weitere Pyramid Tree Space Filling Curves

Page 12: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

12

Genauer: LSDh-Tree (A. Henrich et al)

Ist definiert durch Vorgehen beim Splitting: Wähle Dimensionen der Reihe nach Überspringe dabei Dimensionen, in denen

keine verschiedenen Datenwerte auftreten Modifikation bei hoher Dimensionszahl möglich Splitwert i.d.R. datenabhängig, z.B.

arithmetisches Mittel Ausgleichsverfahren ähnlich B-Baum-

Varianten Erweiterung mittels Coded Actual Data

Regions (CADR)

Page 13: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

13

CADR im LSDh-Tree Zerlegung des gesamten Datenraumes einer

Region in gleich große Hyperwürfel Pro Dimension Speicherung des kleinsten und des

größten Indexes besetzter Teilwürfel Zusätzlicher Speicheraufwand 2*z*d Bit bei d

Dimensionen und Auflösung z

Entnommen aus: Christian Böhm et al: Searching in High-Dimensional Spaces – Index Structures for Improving the Performance of Multimedia Databases

Page 14: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

14

k-NN-Suche im LSDh-Tree

Von der Wurzel ausgehend Bucket mit Startpunkt p der Suche ermitteln (Punktanfrage)

Dabei Speichern der nicht verfolgten Geschwisterknoten in einer NPQ (node priority queue), Sortierung gemäß Abstand zu p

k nächste Nachbarn aus Bucket mit p in die OPQ (object priority queue)

Solange sinnvoll, ersetze Elemente aus OPQ durch bessere aus Datenregion des NPQ-Kopfes (Abbau NPQ)

Page 15: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

15

Relational Indexing mit DB2

Erweiterungsmöglichkeiten DB2 UDFs, Stored Procedures, user defined types Prädikate auf nutzerdefinierten Datentypen

Bsp. Interval-Tree: IntervalOverlap Auf (selbstdefinierten) komplexen Datentypen ist

kein Ordnungskriterium bekannt Indexframework definiert Schnittstellen zur

Bereitstellung der fehlenden Funktionalität Fragestellungen bei Erstellung und Nutzung des

Indexes Änderungsoperationen bedingen Einfügen, Löschen

von Schlüsseln Anfrageoperationen bewirken Indexscans

Page 16: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

16

Änderungsoperationen

Entnommen aus: Knut Stolze et al: DB2 Index Extensions by example and in detail

Page 17: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

17

Key-Generator

Anbindung innerhalb der Indexdefinition Beispiel

CREATE INDEX EXTENSION interval_tree FROM SOURCE KEY (i interval)

GENERATE KEY USING IntervalKeyGen (i..start,

i..stop)

Page 18: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

18

Indexabfrage

Entnommen aus: Knut Stolze et al: DB2 Index Extensions by example and in detail

Page 19: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

19

Nutzerdefinierte Prädikate Für welche Prädikate einer WHERE-Klausel kann

der Index sinnvoll eingesetzt werden? Information mittels PREDICATES-Klausel in

Prädikatdefinition Beispiel

CREATE FUNCTION IntervalOverlap (i1 interval, i2 interval)

… PREDICATES (

WHEN = 1SEARCH BY EXACT INDEX EXTENSION

interval_treeWHEN KEY(i1) use USE overlaps(i2)WHEN KEY(i2) use USE overlaps(i1) )

Page 20: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

20

Range Producer/Index Filter

Range-Producer: user defined funtion, liefert TABLE (rangestart INTEGER, rangeStop

INTEGER) Index Filter: für weitere Filterung des

gefundenen Range kann noch eine UDF definiert werden (wiederum mit einer PREDICATES-Klausel)

Page 21: Gunnar Söllig, Stand 3. 1. 2006 Studienarbeit Umsetzung von nutzerdefinierten Indexstrukturen in ORDBMS am Beispiel eines Indexes für mehrdimensionale.

21

Implementation LSDh-Baum

Ausgeglichener binärer Baum mit Pre-order-Numerierung der Knoten als virtueller Backbone-Tree (vgl. Interval-Tree)

Problem: Splitting/Ausgleichen Lösungsansätze:

Extra Datenstruktur zur Speicherung des Baumstatus, Berechnung des Schlüsselwertes vorgelagert in Insert-Routine

Betroffene Datensätze mittels Delete- und Insert-Operationen verschieben