R-Baum eine dynamische Index-Strukur für räumliche Suche

Ähnliche Dokumente
Mobile Objekte Indexstrukturen

B+-Baum mit Z-Ordnung. B+-Baum mit Z-Ordnung. Anforderungen. 7.3 Räumliche Zugriffsstrukturen

4.1 Einführung. 4.2 Z-Ordnung. 4.3 R-Bäume. 4.4 Quadtrees. Kapitel 3: Räumliche Indexstrukturen. 4. Räumliche Indexstrukturen

B / B* - Bäume. Guido Hildebrandt Seminar Datenbanksysteme

R-Baum R + -Baum X-Baum M-Baum

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

11.1 Grundlagen - Denitionen

Übung zur Vorlesung Algorithmische Geometrie

Indizierung von Geodaten - Raumbezogene Indexstrukturen. Seminar mobile Geoinformationssystem Vortrag von Markus Steger

GRUNDLAGEN VON INFORMATIONSSYSTEMEN INDEXSTRUKTUREN I: B-BÄUME UND IHRE VARIANTEN

Algorithmen und Datenstrukturen 1

Dynamisches Huffman-Verfahren

Algorithmen und Datenstrukturen

Baum-Indexverfahren. Prof. Dr. T. Kudraß 1

INTERVALLBÄUME. Tanja Lehenauer, Besart Sylejmani

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Vorlesung Datenstrukturen

Datenbanken: Indexe. Motivation und Konzepte

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Non-Standard-Datenbanken

Baum-Indexverfahren. Einführung

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

14. Rot-Schwarz-Bäume

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15.

Algorithmen und Datenstrukturen Balancierte Suchbäume

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

13 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

B-Bäume I. Algorithmen und Datenstrukturen 220 DATABASE SYSTEMS GROUP

Informatik II, SS 2014

Dynamische Mengen. Realisierungen durch Bäume

12 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

Datenstrukturen & Algorithmen

Grundlagen der Künstlichen Intelligenz

B-Bäume, Hashtabellen, Cloning/Shadowing, Copy-on-Write

Datenstrukturen. einfach verkettete Liste

Tutoraufgabe 1 (2 3 4 Bäume):

Algorithmen und Datenstrukturen Bereichsbäume

Datenstrukturen und Algorithmen

Bäume, Suchbäume und Hash-Tabellen

Dateiorganisation und Zugriffsstrukturen

Ausgangspunkt: punktförmige hochdimensionale Feature-Objekte

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Dr. Thomas Neumann

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Bäume Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1

Binäre Bäume Darstellung und Traversierung

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

ADS: Algorithmen und Datenstrukturen

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Wintersemester 2007/2008 Helmut Seidl Institut für Informatik TU München

Binärbäume: Beispiel

15. Elementare Graphalgorithmen

368 4 Algorithmen und Datenstrukturen

6. Algorithmen der Computer-Geometrie

Informatik II, SS 2014

1 AVL-Bäume. 1.1 Aufgabentyp. 1.2 Überblick. 1.3 Grundidee

7. Sortieren Lernziele. 7. Sortieren

Ausarbeitung zum Modulabschluss. Graphentheorie. spannende Bäume, bewertete Graphen, optimale Bäume, Verbindungsprobleme

Klassische Indexstrukturen

Nachtrag zu binären Suchbäumen

Informatik II, SS 2014

Grundlagen von Datenbanken. B-Bäume, B*-Bäume Normalisierung

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Tutoraufgabe 1 (2 3 4 Bäume):

Sortierverfahren für Felder (Listen)

Kollisionserkennung

Algorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser

13. Binäre Suchbäume

In diesem Beitrag sollen die einzelnen Möglichkeiten detaillierter erläutert und bei Notwendigkeit mit einem Beispiel hinterlegt werden.

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

9. Heuristische Suche

Isomorphie von Bäumen

Triangulierung von einfachen Polygonen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...)

Westfählische Wilhelms-Universität. Eulersche Graphen. Autor: Jan-Hendrik Hoffeld

KD-Bäume. ein Vortrag von Jan Schaefer

Algorithmen und Datenstrukturen 2

Abschnitt 18: Effizientes Suchen in Mengen

Informatik II Vorlesung am D-BAUG der ETH Zürich

Der Alpha-Beta-Algorithmus

Kapitel 8: Physischer Datenbankentwurf

Vorkurs Informatik WiSe 15/16

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

13. Bäume: effektives Suchen und Sortieren

Punktlokalisierung. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

Klausur Informatik B April Teil I: Informatik 3

Ziel: Schaffung einer zusätzlichen, schnellen Zugriffsmöglichkeit unabhängig von Primärorganisation der Datei

Balancierte Bäume. Minimale Knotenanzahl von AVL-Bäumen. AVL-Bäume. Definition für "balanciert":

Praktikum 3 Algorithmik SS Aufgabe 10: Aufgabe 9 ( Skyline-Problem ) weitere Aufgaben folgen. Name:... Matr-Nr:...

Algorithmen und Datenstrukturen Suchbaum

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Algorithmische Anwendungen WS 2005/2006

Datenstrukturen & Algorithmen

Grundlagen: Algorithmen und Datenstrukturen

Transkript:

Gabriele Wilke-Müller Klufternerstraße 73 88048 Friedrichshafen wilke-mueller@t-online.de Matrikel-Nr. 01/482681 Support for Non-Standard Data Types in DBMSs WS 2003/2004 bei Prof. Dr. Marc H. Scholl Thema: R-Baum eine dynamische Index-Strukur für räumliche Suche Universität Konstanz, FB Informatik und Informationswissenschaft Friedrichshafen 10.März 2004

Inhaltsverzeichnis Abbildungsverzeichnis 1 Einleitung... 4 2 Aufbau und Eigenschaften von R-Bäumen... 5 3 Operationen auf R-Bäume... 7 3.1 Suchen... 7 3.2 Einfügen... 9 3.3 Löschen... 11 3.4 Updaten... 12 3.5 Splitten eines Knotens SplitNode... 13 3.5.1 Algorithmen für den Split... 13 3.5.1.1 Quadratic-Cost Algorithmus... 14 3.5.1.2 Linear-Cost Algorithmus... 16 3.6 Kosten für Seitenzugriffe beim R-Baum... 17 4 Der R + -Baum... 19 4.1 Opeartionen auf den R + -Baum... 20 4.2 Performance... 21 5 Sonstige Erweiterungen zum R-Baum... 22 6 Zusammenfassung... 23 Literaturverzeichnis - 2 -

Abbildungsverzeichnis Abbildung 1: Beispiel wie Rechtecke im R-Baum organisiert sind... 5 Abbildung 2: Der zu Abb. 1 dazugehörige R-Baum... 6 Abbildung 3: Suche in R-Bäumen... 8 Abbildung 4: Einfügen eines Datenpunktes auf der Seite ist Platz... 10 Abbildung 5: Einfügen eines Datenpunktes auf der Seite ist kein Platz... 11 Abbildung 6: Löschen eines Eintrages... 12 Abbildung 7: Varianten des Splittens eines Knotens... 13 Abbildung 8: Kosten für Seitenzugriffe... 18 Abbildung 9: R + -Baum... 19-3 -

1 Einleitung Mehrdimensionale Daten sind in vielen Anwendungsgebieten, wie in der Molekularbiologie, der Kartographie und im Computer-Aided Design (CAD) von hoher Bedeutung. Deshalb sind die Anforderungen an Indexstrukturen, die auch mit mehrdimensionalen Daten arbeiten groß. Herkömmliche Indexstrukturen wie B-Bäume können lediglich eindimensionale Daten speichern und suchen, doch für räumliche Daten bedarf es Indexstrukturen, die auch mehrdimensionale Daten effizient verarbeiten können. Der R-Baum ist eine solche Indexstruktur, die vor allem für zwei-dimensionale Daten, wie CAD-Daten entwickelt wurde. In der folgenden Seminararbeit soll diese Indexstruktur erläutert, die einzelnen Operationen beschrieben und einige Erweiterungen betrachtet werden. Beim R-Baum handelt es sich um eine dynamische Indexstruktur, Daten können also jeder Zeit in einen bestehenden Baum eingefügt, verändert oder gelöscht werden. Im ersten Teil wird mit Hilfe eines Beispieles die Struktur eines R-Baumes vorgestellt. Im zweiten Teil werden die verschiedenen Operationen, wie das Einfügen, Löschen oder Verändern eines Datenobjektes in einem bestehen R-Baum beschrieben. Insbesondere werden an dieser Stelle verschiedene Splitalgorithmen, wie der Quadradric-Cost Algorithmus und der Linear-Cost Algorithmus näher beschrieben, die beim Überlaufen einer Datenseite angewandt werden können. Im folgenden Kapitel werden die Schwachpunkte des R-Baumes betrachtet und der R + -Baum, eine Erweiterung zum R-Baum eingeführt. Im letzten Punkt werden noch andere Erweiterungen, die auf dem R-Baum basieren und in unterschiedlichen Gebieten Anwendung finden, vorgestellt. - 4 -

2 Aufbau und Eigenschaften von R-Bäumen Der R-Baum ist eine hoch-balancierte Indexstruktur, die für mehrdimensionale Daten entwickelt wurde. Die Datenstruktur besteht aus Directory- und aus Datenseiten. Die Datenobjekte werden auf den Datenseiten gespeichert. Diese sind die Blattknoten des Baumes und speichern geclusterte Punktdaten oder aber auch n-dimensionale Datenobjekte, wie z. B. ein Detail einer CAD-Zeichnung. Die Directoryseiten ihrerseits sind die inneren Knoten und speichern die Directory-Einträge. Die räumlichen Daten, also die geclusterten Punktdaten bzw. die n- dimensionalen Datenobjekte werden mit Hilfe von minimal umgebende Rechtecke, auch Minimum Bounding Rectangles (MBRs) genannt, strukturiert. Es handelt sich dabei um Rechtecke, die das Datenobjekt minimal umspannen. Mit Hilfe der folgenden Abbildung soll der Aufbau des R-Baumes näher betrachtet werden. Die Rechtecke R1, R2 und R3 stellen die Directoryseiten dar. R4, R5 und R6 sind die Datenseiten, die auf der Directoryseite R1 liegen. R1 R5 R3 R11 R4 R6 R10 R2 R7 root R8 R9 Abbildung 1: Beispiel wie Rechtecke im R-Baum organisiert sind - 5 -

R8 ist ein Rechteck, das minimal um ein n-dimensionales Datenobjekt gezogen ist. R8 liegt auf der Directoryseite R2. root R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 Abbildung 2: Der zu Abb. 1 dazugehörige R-Baum Nach Antonin Gutmann, 1984 haben R-Bäume folgende Eigenschaften: 1. Alle Blätter haben zwischen m und M Indexeinträge. Wobei m M/2 gilt. Die minimale Anzahl m der Indexeinträge darf die Hälfte der Maximalen Anzahl M nicht überschreiten. 2. Für jeden Index-Eintrag (I, tuple-id) in einem Blatt ist I das kleinste umgebende Rechteck, das das n-dimensionale Datenobjekt beinhaltet. 3. Jeder Knoten, der kein Blattknoten ist, hat zwischen m und M Söhne. 4. Für jeden Eintrag (I, child-pointer) in einem Knoten, der kein Blattknoten ist, ist I das kleinste Rechteck, das die Rechtecke im Kindknoten beinhalten. 5. Die Wurzel hat mindestens zwei Söhne. 6. Alle Blätter erscheinen auf derselben Höhe. Es können wie beim B-Baum verschiedene Operationen ausgeführt werden. Das Suchen, Einfügen und Löschen eines Datenobjektes geschieht analog zum B-Baum. Das Splitten eines - 6 -

Knoten wird dann notwendig, wenn die maximale Anzahl an Indexeinträgen überschritten wird. Hierfür kommen dann verschiedene Split-Algorithmen, die in Kapitel 3.5 vorgestellt werden, zur Anwendung. 3 Operationen auf R-Bäume Im folgenden Kapitel werden auf die verschiedenen Operationen auf den R-Baum wie das Suchen, Löschen und Einfügen eines Datenobjektes eingegangen. 3.1 Suchen Die Suche in einem R-Baum ist ein rekursiver Vorgang. Der Baum wird von der Wurzel zu den Blättern abwärts, ähnlich wie beim B-Baum, durchsucht. Es wird immer ein Pfad durchlaufen. Ist das gesuchte Datenobjekt nicht in diesem Teilbaum, so wird der nächste Suchpfad durchgegangen. Die Pfadauswahl erfolgt willkürlich, weshalb eine gute Performance nicht garantiert werden kann. Da die Rechtecke sich überlappen können, müssen im schlimmsten Fall alle Pfade durchlaufen werden, bis das gesuchte Datenobjekt gefunden wird. Allerdings gibt es verschiedene Suchalgorithmen wie z. B. der Tiefensuche- Algorithmus von Roussopoulos, Kelley und Vincent oder die Prioritätensuche nach Hjaltason und Samet, die es ermöglichen irrelevante Regionen abzuschneiden. Diese machen es sich zu Nutze, dass die Indexstruktur Minimal Bounding Rectangles benutzt. Allerdings wird in dieser Seminararbeit nicht näher auf die oben genannten Algorithmen eingegangen - 7 -

Antonin Gutmann hat 1984 erstmals einen Suchalgorithmus für einen R-Baum vorgestellt. Und zwar ist ein R-Baum mit einer Wurzel T gegeben. Gesucht werden alle Indexeinträge, die das Suchrechteck S schneiden. Suchalgorithmus nach Gutmann S1 Suche in Teilbäumen Wenn T kein Blatt ist, prüfe jeden Eintrag darauf, ob dieser S überschneidet. überschneidenden Einträge setze die Suche in deren Söhnen fort. S2 Suche in Blattknoten Wenn T ein Blatt ist, prüfe alle Einträge darauf, ob sie S schneiden. Wenn ja, so ist dies der gesuchte Eintrag. R1 R5 R3 R11 root R4 R6 R10 R1 R2 R2 R7 root R7 R8 R9 R8 S R9 Abbildung 3: Suche in R-Bäumen In unserem Beispiel befindet sich das Suchrechteck S auf der Datenseite R8. S1 Suche in Teilbäumen. - 8 -

T, in unserem Fall die Wurzel (root) ist kein Blatt, also wird jeder Eintrag daraufhin geprüft, ob dieser S überschneidet. Wir entscheiden uns willkürlich als erstes den Pfad R1 zu verfolgen. Allerdings befindet sich das Suchrechteck S nicht R1, also wird die Suche den Söhnen nicht fortgesetzt und der nächste Pfad, R2 wird aufgerufen. Hier wird S gefunden, also wird die Suche in deren Söhnen fortgesetzt. Nun werden die Blätter durchsucht. In R8 wird der gesuchte Eintrag schließlich gefunden. 3.2 Einfügen Soll ein Datenpunkt oder ein Datenobjekt in einen bestehenden R-Baum eingefügt werden, so wird typischerweise folgendermaßen vorgegangen. Zuerst wird die beste Kindseite (ChooseLeaf) nach bestimmten räumlichen Kriterien gesucht. Dort wird der Datenpunkt eingefügt, wenn auf der Seite Platz ist, d. h wenn die maximale Anzahl M an Einträgen nicht überschritten wird. Ist kein Platz auf der Kindseite, so wird die Seite im Rahmen einer Überlaufbehandlung gesplittet (SplitNode). Auf den Split-Algorithmus wird in Kapitel 3.5 näher eingegangen. Bedingung ist, dass der tote Raum möglichst klein sein soll und die Überlappung minimal, damit die Performance nicht unnötig eingeschränkt wird. Der Vaterknoten muss dem neuen Objekt angepasst werden (AdjustTree) Es kann sein, dass bis zur Wurzel gesplittet werden muss. Wird die Wurzel durch Splitten erreicht, so wird eine neue - 9 -

Wurzel erstellt, deren Kinder die beiden resultierenden Knoten sind. R1 R5 R3 R11 R2 R7 R4 R6 R10 R8.i R9 R2 R7 root R2 R7 R8 i R9 R8.i R9 Abbildung 4: Einfügen eines Datenpunktes auf der Seite ist Platz In Abb. 3 wird das Einfügen eines Datenpunktes i demonstriert. Der Punkt liegt auf dem Verzeichnisrechteck R2. Es gibt zwei mögliche Datenseiten, wo der neue Punkt eingefügt werden kann. Nun kann der Punkt entweder in R7 oder in R9 eingefügt werden, vorausgesetzt, dass die maximale Anzahl M nicht überschritten wrid. In beiden Fällen wird das minimal umgebende Rechteck so vergrößert, dass der Punkt i ebenfalls innerhalb des Rechtecks liegt. Wird der Punkt in R7 eingefügt, so entsteht ein toter Raum. Das Rechteck muss ziemlich stark ausgedehnt werden, um den Punkt zu umschließen. Wird der Punkt in R9 eingefügt, so entsteht eine Überlappung mit R7. Das Rechteck selbst wird aber nur minimal vergrößert. Es entsteht kein toter Raum. In Abb. 4 gehen wir davon aus, dass der Datenpunkt i in R7 eingefügt wird. Dort ist allerdings kein Platz mehr, die Seite muss also gesplittet werden, worauf in Kapitel 3.5 näher eingegangen wird. Eine neue Seite 7-1 entsteht. Der - 10 -

Vaterknoten R2 muss angepasst werden. So befinden sich nun R7, R7-1, R8 und R9 auf diesem Knoten R1 R5 R3 R11 R2 R7 R7-1 R4 R6 R10 R8.i R9 R2 R7 i root R8 R9 root R1 R2 R3 R4 R5 R6 R7 R7-1 R8 R9 R10 R11 Abbildung 5: Einfügen eines Datenpunktes - auf der Seite ist kein Platz 3.3 Löschen Antonin Gutmann stellt folgenden Algorithmus für das Löschen eines Eintrages vor. Das Blatt, das den zu löschenden Eintrag enthält, wird gesucht. (FindLeaf) 1 Der Eintrag wird aus dem Blatt gelöscht (DeleteRecord) 1 Diese Suche ist analog dem Suchen in Kapitel 3.1 Seite 7-11 -

Falls der Knoten nun zu wenige Einträge hat, d.h. wird die minimale Anzahl m unterschritten, so wird der Baum verdichtet (CondenseTree) Die Einträge, die aus dem Blattknoten entfernt wurden, werden wieder eingefügt. Sie werden so behandelt, wie im vorherigen Abschnitt 3.2 Einfügen beschrieben. Hat die Wurzel nur noch einen Sohn, so wird der Sohn die neue Wurzel. Wie in Abb. 5 dargestellt, soll ein Eintrag aus R9 gelöscht werden. Wird die minimale Anzahl m an Einträgen nach dem Löschen nicht unterschritten, so wird der Eintrag einfach aus R9 gelöscht und es passiert weiter nichts. Befinden sich nach dem Löschen allerdings zu wenig Einträge, so wird R9 als Ganzes gelöscht. Der Vaterknoten R2 wird angepasst, sodass sich nun nur noch R7 und R8 darunter befinden. R2 R7 R2 R7 root R1 R2 R3 R8 R9 R8 R4 R5 R6 R7 R8 R10 R11 Abbildung 6: Löschen eines Eintrages 3.4 Updaten Wird ein Datensatz aktualisiert und sein minimal umgebendes Rechteck verändert sich dadurch, so muss der Indexeintrag gelöscht, aktualisiert und wieder eingefügt werden. - 12 -

3.5 Splitten eines Knotens SplitNode Wie bereits in Kapitel 3.2 angesprochen, kann es durch das Einfügen eines Datenobjektes zum Überlaufen kommen. Das heißt, die maximale Anzahl M der Seite wird überschritten, sodass die Seite gesplittet werden muss. Soll ein neuer Eintrag in einen vollen Knoten erfolgen, so müssen die M+1 Einträge auf zwei Knoten aufgeteilt werden. Bei nachfolgenden Suchvorgängen sollten nicht beide Teilbäume durchsucht werden. Deshalb sollte darauf geachtet werden, dass es zu keinen Überlappungen kommt. Bei der Aufteilung der Knoten ist darauf zu achten, dass die Gesamtfläche der beiden Rechtecke möglichst klein ist. Der tote Raum soll minimiert werden. schlechter Split guter Splitt Abbildung 7: Varianten des Splittens eines Knotens 3.5.1 Algorithmen für den Split Verschiedene Algorithmen wurden für das Splitten eines Knotens entwickelt. Die drei Algorithmen, der Exhaustive Algorithmus, der Quadratic-Cost Algorithmus und der Linear-Cost Algorithmus sollen in dieser Seminararbeit angesprochen werden, wobei der Schwerpunkt auf dem Quadratic-Cost Algorithmus liegt. - 13 -

Exhaustive Algorithmus Der Exhaustive Algorithmus ist der einfachste Algorithmus, allerdings sinkt die Performance je nach Anzahl der maximalen Einträge M pro Seite. Hier werden zuerst alle möglichen Splits gebildet, die Gesamtfläche für jeden einzelnen Split errechnet und dann der beste Split ausgewählt. Die Anzahl der Möglichkeiten beträgt 2 M-1. Quadratic-Cost Algorithmus Auch hier steht der Wunsch eine Aufteilung mit einer möglichst kleinen Gesamtfläche zu finden im Vordergrund. Allerdings wird nicht wie beim Exhaustive Algorithmus die kleinstmögliche Fläche garantiert. Dafür liegt die Performance in der Regel höher als beim Exhaustive Algorithmus. Die Kosten des Quadratic-Cost Algorithmus liegen bei O(M 2 ). Linear-Cost Algorithmus Dieser Algorithmus ähnelt dem Quadratic-Cost Algorithmus. Der Unterschied liegt in einer Prozedur. Die Kosten sind linear zu M und zur Anzahl der Dimensionen. 3.5.1.1 Quadratic-Cost Algorithmus Ein Split ist immer dann erforderlich, wenn ein Indexeintrag eingefügt werden soll und die maximale Anzahl an Indexeinträgen M pro Seite überschritten wird. Die Anzahl M+1 soll also auf zwei Seiten aufgeteilt werden. Beim Quadratic-Cost Algorithmus wird folgendermaßen vorgegangen. - 14 -

QS1 Wähle den ersten Eintrag für jede Gruppe. Hierbei soll der Algorithmus PickSeeds ausgeführt werden, um zwei Einträge als erste Elemente der beiden Gruppen zu finden. QS2 Prüfe, ob der Algorithmus fertig ist. Beende den Algorithmus, wenn alle Einträge zugewiesen wurden. Wenn eine Gruppe zu wenig Einträge hat, weise ihr die restlichen zu, um die minimale Anzahl m zu erreichen. QS3 Wähle einen Eintrag und weise ihn einer Gruppe zu. Der PickNext Algorithmus wird aufgerufen, um den nächsten zuzuweisenden Eintrag zu wählen. Die Gruppen werden nach folgender Strategie gebildet: Strategie: Wähle die Gruppe, deren Verzeichnisrechteck am wenigsten vergrößert werden muss. 2 Wähle die Gruppe, deren Verzeichnisrechteck kleiner ist. Wähle die Gruppe, die weniger Elemente hat. Wähle eine beliebige Gruppe. Fahre mit QS2 fort. PickSeeds Wähle die beiden Elemente, die die Startelemente in den beiden Gruppen sein sollen. PS1 Berechne die verschwendete Fläche des Verzeichnisrechtecks, wenn 2 Elemente gruppiert werden. 2 Das heißt, es wird zuerst die Gruppe nach 1. gewählt. Nur wenn das nicht eindeutig ist, kommt 2., usw. - 15 -

Für jedes Paar von Einträgen E 1 und E 2, erzeuge das Minimum Bounding Rectangle J, welches E 1.I und E 2.I enthält. d = Fläche (J) Fläche (E 1.I) Fläche (E 2.I) PS2 Wähle das verschwenderischste Paar, d. h. wähle das Paar bei dem d am größten ist. PickNext Die verbleibenden Einträge werden auf die beiden Gruppe aufgeteilt. PN1 Berechne die Kosten für jeden noch nicht zugeordneten Eintrag. Berechne d 1 und d 2 = Flächenzuwachs des Verzeichnisrechtecks, wenn es den Eintrag enthalten würde. PN2 Wähle den Eintrag mit d 1 d 2 am größten. 3.5.1.2 Linear-Cost Algorithmus Der Linear-Cost Algorithmus ähnelt dem Quadratic-Cost Algorithmus. Der Unterschied liegt in PickSeeds. Die beiden ersten Elemente einer Gruppe werden hier mit der Prozedur LinearPickSeeds gefunden. LinearPickSeeds LPS1 Finde die Extremrechtecke über alle Dimensionen Finde in jeder Dimension die Rechtecke mit der höchsten und der niedrigsten Koordinate. - 16 -

LPS2 Berechne den Abstand und normalisiere ihn. Über die gesamte Breite der Rechteckmenge wird entlang der entsprechenden Dimensionen geteilt. LPS3 Wähle das extremste Paar Wähle das Paar mit der größten normalisierten Separierung in einer Dimension. PickNext Mit PickNext werden die verbleibenden Einträge einer Gruppe zugeordnet. PN1 Berechne die Kosten für jeden Eintrag d 1 = Flächenzuwachs des Verzeichnisrechtecks der ersten Gruppe, wenn es E enthalten würde. Berechne d 2, analog zu d 1. PN2 Wähle den Eintrag mit d 1 d 2 am größten. 3.6 Kosten für Seitenzugriffe beim R-Baum Ziel ist es in R-Bäumen effizient nach gewünschten Datenobjekten zu suchen. Aus diesem Grund ist es erforderlich den toten Raum minimal zu halten und Überlappungen zu vermeiden bzw. ebenfalls minimal zu halten. In der nachstehender Abb. soll gezeigt werden, wie eine Suche nach dem Suchrechteck S im Fall einer Überlappung mehr Seitenzugriffe erfordert. In unserem Beispiel befindet sich das Suchrecheck S auf der Datenseite H. Wie bereits in Kapitel 3.1 beschrieben erfolgt die Suche erst in Teilbäumen, dann im Blattknoten. - 17 -

A F G K B root D E S H J A B C C M I N L D E F G H I J K L M N Abbildung 8: Kosten für Seitenzugriffe S1 Suche in Teilbäumen. T, in unserem Fall die Wurzel (root), ist kein Blatt, also wird jeder Eintrag daraufhin geprüft, ob dieser S überschneidet. Der Pfad A wird verfolgt. S überschneidet A, also wird die Suche in deren Söhnen fortgesetzt. Nun werden die Blätter durchsucht. S wird weder im Blattknoten D, noch in den Knoten E, F oder G gefunden. Die Suche muss also fortgesetzt werden. Der nächste Pfad B wird aufgerufen und verfolgt. S überschneidet B, also werden die Söhne durchsucht. Hier findet man S, das auf dem Blattknoten H liegt. Unser Eintrag wird gefunden, also kann die Suche hier abgebrochen werden. In unserem Fall gab es lediglich eine Überlappung, aber es zeigt, dass die Kosten der Seitenzugriffe durch Überlappungen steigen. Es müssen insgesamt zwei Pfade komplett durchlaufen werden, bis der gewünschte Eintrag gefunden wird. Es sollte also keine Überlappungen geben, allerdings könnten diese beim R-Baum nur dann vermieden werden, wenn Überlappungen alle Datenpunkte im voraus bekannt wären. Da aber der R-Baum eine dynamische Indexstruktur ist, ist dies in der Praxis nicht der Fall. - 18 -

4 R + -Baum Der R + -Baum ist eine Erweiterung zum R-Baum. Wie im vorherigen Kapitel angedeutet, führen Überlappungen zu höheren Kosten der Seitenzugriffe. Vor allem im mehrdimensionalen Raum gibt es häufig viele Überlappungen. Bei einer großen Anzahl von Überlappungen, ist ein sequentieller Scan oft geeigneter als eine Index-Struktur wie der R-Baum. Beim R + -Baum hingegen sind Überlappungen nicht zugelassen. Würde es zu einer Überlappung kommen, werden die entsprechenden Datenrechtecke geteilt, so der Eintrag in mehreren Blättern vorhanden ist. In unserem Beispiel von Abbildung 9 ist der Blattknoten G sowohl auf der Directoryseite A wie auf P. Das heißt, wird das Suchrechteck S gesucht, so werden die Pfade A, B und C nicht weiter verfolgt, da es keine Überschneidung gibt, aber die Söhne von P werden durchsucht und auch dort wird S auf dem Blattknoten G gefunden. A D C M F E G H S K J I B root A B C P N L D E F G I J K L M N G H root Abbildung 9: R + -Baum Der Vorteil von R + -Bäumen ist die schnellere Suche, allerdings erfordert dies auf der anderen Seite meist höhere Bäume. - 19 -

4.1 R + -Baum Operationen Die einzelnen Unterschiede vom R + -Baum im Gegensatz zum R- Baum sollen anschließend näher dargestellt werden. Suchen: Da es bei R + -Bäumen keine Überlappungen gibt, ist die Suche in der Regel schneller. Es müssen nicht unnötig Pfade durchlaufen werden, um dann festzustellen, dass der gesuchte Eintrag nicht auf dem entsprechenden Knoten liegt. Einfügen: Das Datenobjekt kann in mehreren Blättern eingefügt werden, damit es nicht zu Überlappungen kommt. Auch beim R + -Baum gibt es eine maximale Anzahl M an Einträgen. Kommt es zu überlaufende Knoten muss auch hier ein Split durchgeführt werden. Löschen: Soll ein Eintrag aus einem bestehenden Baum gelöscht werden, so wird zuerst das Blatt gesucht, wo sich der zu löschende Eintrag befindet, dann wird er aus dem Blatt entfernt. Ist der Eintrag auf mehreren Blättern gespreichert, so muss er aus allen Blättern entfernt werden. Im Gegensatz zum R-Baum gibt es beim R + -Baum keine minimale Anzahl m an Einträgen. Das heißt es müssen keine Einträge gelöscht werden um wieder an einer anderen Stellen einzufügen. Splitten: Wie bereits erwähnt kommt es bei Überschreiten der maximalen Anzahl M zu einem Überlaufen. Der Knoten - 20 -

muss gesplittet werden. Dieses Splitten setzt sich abwärts fort. Wenn beispielsweise A Vater von B ist und B Vater von C, dann müssen diese ebenfalls gesplittet werden. Dies ist erfordelich, da keine Überlappungen erlaubt sind. 4.3 Performance Der Hauptvorteil von R + -Bäumen im Gegensatz zu R-Bäumen ist die verbesserte Suchleistung. Vor allem bei Punktanfragen können Zugriffsersparnisse bis zu mehr als 50 % betragen. Die Effizienz von R-Bäumen leidet unter wenigen großen Datenobjekten. Um Überlappungen zu vermeiden, werden diese Datenräume beim R + -Baum in mehrere kleiner Datenräume gesplittet. Da keine Pfade verfolgt werden, auf denen sich das gesuchte Objekt nicht befindet werden gesuchte Datenobjekte erheblich schneller gefunden. Der R-Baum ist eine gute Indexstruktur für mehrdimensionale Daten. Allerdings leidet die Performance sehr stark in hochdimensionalen Räumen. Hier kann es bis zu 90 % an Überlappungen kommen, was bedeutet, dass in diesem Fall ein sequentieller Scan meist schnellere Ergebnisse liefert. - 21 -

5 Erweiterungen des R-Baumes Da vor allem in hochdimensionalen Räumen das Hauptproblem des R-Baumes die vielen Überlappungen sind und damit verbunden eine schlechte Performance, wurde eine Reihe von weiteren Indexstrukturen entwickelt. R*-Baum Der R*-Baum ist eine Weiterentwicklung zum R + -Baum. Er ermöglicht durch einen ausgeklügelten Splitalgorithmus eine weitere Effizientsteigerung. X-Baum (extended node) Der X-Baum ist wiederum eine Weiterentwicklung zum R*-Baum. Seine Bedeutung liegt vor allem in hochdimensionalen Räumen. Durch Einführen von sogenannten supernodes können ebenfalls Überlappungen vermieden werden. Die Knoten können erweitert werden. TV-Baum (Telescope vector) Der TV-Baum besitzt eine ähnliche Struktur wie der R- Baum. Dieser Baum wurde speziell für Vektoren entwickelt. Cell-Baum Der sog. Cell-Baum benutzt nicht wie beim R-Baum Rechtecke, sondern Polygone. SS-Baum (Similarity Search) Beim SS-Baum werden anstatt den Minimium Bounding Rectangles (MBRs) Kugeln als Seitenregion benutzt. Dies führt ebenfalls zu einer verbesserten Performance im Gegensatz zum R-Baum. - 22 -

SR-Baum Der SR-Baum benutzt eine Kombination aus einem Rechteck (MBR) und einer Kugel als Seitenregion. Alle die hier vorgestellten Indexstrukturen basieren auf dem R- Baum und werden je nach Anwendungsgebiet unterschiedlich eingesetzt. So wird z. B. der X-Baum (extended Baum) hauptsächlich für hochdimesionale Räume eingesetzt. Da der Einsatz von supernodes erlaubt ist, können die Überlappungen vermieden werden und damit die Performance im Vergleich zum R-Baum deutlich verbessert werden. 6 Zusammenfassung Die vorliegende Seminararbeit behandelte das Thema R-Bäume. Der R-Baum ist eine Indexstruktur für räumlich Daten. Sie werden zum Beispiel in Geografischen Informationssystemen eingesetzt. Der R-Baum ist im Aufbau dem B-Baum sehr ähnlich. Auch die Operationen, die auf den R-Baum ausgeübt werden können, wie Einfügen, Suchen, Löschen eines Datenobjektes sind denen des B-Baumes sehr ähnlich. Der Vorteil vom R-Baum liegt in der Möglichkeit nicht nur Punktanfragen, sondern auch Bereichsanfragen stellen zu können. Dies ist vor allem auch für CAD-Systeme interessant. Da es sich um eine dynamische Indexstruktur handelt, kann es durch Einfügen von Datenobjekten zu Überlappungen führen. Diese Überlappungen verschlechtern die Suchperformance, da oft auch Pfade durchsucht werden müssen, in denen sich das gesuchte Datenobjekt nicht befindet. Der R + -Baum ist eine Erweiterung vom R-Baum und vermeidet Überlappungen und damit auch die Probleme der Performance. Es wurden noch mehr Erweiterung zum R-Baum entwickelt, wie zum Beispiel der X- - 23 -

Baum oder auch der TV-Baum, der hauptsächlich für Vektoren entwickelt wurde. - 24 -

Literaturliste: [1] Gutmann, Antonin: R-Trees A Dynamic Index Structure for Spatial Searching, University of California Berkeley, 1984 [2] Sellis Timos, Roussopoulos Nick, Faloustsos Christos: The R+- Tree: A Dynamic Index for Multi-Dimensional Objects, University of Maryland, [3] Vorlesung Multimedia-Datenbanksysteme; Dr. T. Seidl, http://www.dbs.informatik.uni-muenchen.de/~seidl/multimedia/ - 25 -