Baum-Indexverfahren. Einführung

Ähnliche Dokumente
Baum-Indexverfahren. Prof. Dr. T. Kudraß 1

Hash-Verfahren. Prof. Dr. T. Kudraß 1

Dateiorganisation und Zugriffsstrukturen. Prof. Dr. T. Kudraß 1

Dateiorganisation und Zugriffsstrukturen

Algorithmen und Datenstrukturen 1

Datenbanken: Indexe. Motivation und Konzepte

Mehrwegbäume Motivation

B*-BÄUME. Ein Index ist seinerseits wieder nichts anderes als eine Datei mit unpinned Records.

Gleichheitsanfrage vs. Bereichsanfrage

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

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

Organisationsformen der Speicherstrukturen

4.3 Bäume. Definition des Baumes. Bäume sind eine sehr wichtige Datenstruktur der Informatik.

3.8 Bäume. Definition des Baumes

{0,1} rekursive Aufteilung des Datenraums in die Quadranten NW, NE, SW und SE feste Auflösung des Datenraums in 2 p 2 p Gitterzellen

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

ANHANG: Vertiefung Zugriffspfade mit Übungsaufgaben

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

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Suchstrukturen. Übersicht. 8 Suchstrukturen. Allgemeines. H. Täubig (TUM) GAD SS

Wünschenswerte Eigenschaft von Suchbäumen mit n Knoten: Suchen, Einfügen, Löschen auch im schlechtesten Fall O(log n)

Klasse räumlicher Indexstrukturen, die den Datenraum rekursiv in 4 gleich große Zellen unterteilen (Quadranten NW, NE, SW, SE)

Überlaufbehandlung ohne Verkettung

Universität Augsburg, Institut für Informatik WS 2009/2010 Prof. Dr. W. Kießling 15. Jan Dr. A. Huhn, F. Wenzel, M. Endres Lösungsblatt 10

Wiederholung. Datenstrukturen und. Bäume. Wiederholung. Suchen in linearen Feldern VO

Indizes B+Bäume in Oracle. Jörg Winkler

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Nachtrag zu binären Suchbäumen

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

4.4 Quadtrees. Literatur

Kapitel 8: Physischer Datenbankentwurf

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

ContainerDatenstrukturen. Große Übung 4

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Höhe eines B + -Baums

Zugriff auf Elemente im B + -Baum. Höhe eines B + -Baums. Einfache Operationen auf B + -Bäumen. Anzahl der Blätter bei minimaler Belegung

Datenstrukturen und Algorithmen

Mehrdimensionale Zugriffspfade und Dateiorganisation

Informationssysteme SS 2013 Lösungsvorschläge zu Übungsblatt 2. Übungsblatt 2. Für die Übungen in der Woche vom 29. April bis 03.

a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein:

Übung zur Vorlesung Algorithmische Geometrie

Algorithmen und Datenstrukturen Balancierte Suchbäume

INDEXDATEIEN ( INDEXED FILES )

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

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

Dynamisches Huffman-Verfahren

Dynamische Mengen. Realisierungen durch Bäume

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

Suchen in linearen Feldern. Datenstrukturen & Algorithmen. Laufzeitverhalten der Suchverfahren. Anzahl der Vergleiche für 10 9 Elemente

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

6.4 Minimale Überdeckung: Basis für Normalisierungsalgorithmen

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

Datenbanken. Interne Datenorganisation:

Mobile Objekte Indexstrukturen

Algorithmen und Datenstrukturen Suchbaum

7 Weitere Baumstrukturen und Heapstrukturen

Datenstrukturen & Algorithmen

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

Algorithmen und Datenstrukturen 1

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Rotation. y T 3. Abbildung 3.10: Rotation nach rechts (analog links) Doppelrotation y

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

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

6. Formaler Datenbankentwurf 6.1. Rückblick. Datenbanken und Informationssysteme, WS 2012/ Januar 2013 Seite 1

Doppelt verkettete Listen (1)

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

Datenstrukturen und Algorithmen

Binäre Bäume Darstellung und Traversierung

Lösungen zu Aufgabenblatt 9

Informatik II, SS 2014

Informatik II, SS 2016

7.3 Baum-Indexstrukturen

Suchbäume mit inneren Knoten verschiedener Knotengrade.

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.

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

t-äre Bäume können - wie Binärbäume - degenerieren, d.h. durch ungünstige Einfügereihenfolge kann ein unausgewogener Baum mit großer Höhe entstehen.

Datenbanksysteme SS 2013

13. Binäre Suchbäume

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.

13. Bäume: effektives Suchen und Sortieren

Datenbanksysteme II Indexstrukturen Felix Naumann

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

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

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Algorithmen und Datenstrukturen 1

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

Geometrische Datenstrukturen

Technische Universität München. Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter

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

Seminar Datenbanken Martin Gerstmann

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

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

Algorithmen und Datenstrukturen

Datenstrukturen. Dortmund, Oktober 1998

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

Übung: Algorithmen und Datenstrukturen SS 2007

Quadtrees. Christian Höner zu Siederdissen

Algorithmen und Datenstrukturen

11. Elementare Datenstrukturen

Transkript:

Baum-Indexverfahren Prof. Dr. T. Kudraß 1 Einführung Drei Alternativen, wie Dateneinträge k* im Index aussehen können: 1. Datensatz mit Schlüsselwert k 2. <k, ID des Datensatzes mit dem Wert des Suchschlüssels k> 3. <k, Liste von Datensatz-IDs mit Suchschlüssel k> Auswahl einer Alternative ist orthogonal zur Indexierungstechnik, die genutzt wird, um Dateneinträge mit einem gegebenen Schlüsselwert k zu plazieren. Index mit Baumstruktur unterstützt Bereichsanfragen (Range Query) und Lookups mit einzelnen Schlüsselwerten ISAM: statische Struktur (indexsequentieller Zugriff); B+ Baum: dynamisch, sehr anpassungsfähig beim Einfügen und Löschen Prof. Dr. T. Kudraß 2

Bereichs-Anfragen Finde alle Studenten mit Durchschnitt > 3.0 Wenn Daten in sortierter Datei, dann mache binäre Suche, um den ersten solchen Studenten zu finden, dann lese sequentiell weiter, um die anderen zu finden (scan). Kosten einer Binärsuche können ziemlich hoch sein Einfache Idee: Anlegen einer Indexdatei k1 k2 kn Indexdatei Seite 1 Seite 2 Seite 3 Seite N Hauptdatei Binärsuche kann somit auf (kleinerer) Indexdatei ausgeführt werden Prof. Dr. T. Kudraß 3 ISAM Indexeintrag P 0 K 1 P 1 K 2 P 2 K m P m Indexdatei kann immer noch sehr groß sein. Aber die Index-Idee kann mehrfach angewandt werden (mehrstufiger Index)! Nicht-Blatt Seiten Überlaufseite Blattseiten Blattseiten enthalten Dateneinträge. Primäre Seiten Prof. Dr. T. Kudraß 4

Mehr über ISAM Erzeugung einer Datei: Blattseiten (Datenseiten) werden sequentiell allokiert, sortiert nach dem Suchschlüssel; dann werden Indexseiten allokiert, dann Speicher für Überlaufseiten. Indexeinträge: <Suchschlüssel-Wert, Seiten-ID>; sie lenken die Suche nach Dateneinträgen, die sich in den Blattseiten befinden. Search: Beginne bei der Wurzel; mache Vergleich mit Schlüsselwert auf dem Weg zu einem Blatt. Kosten log F N ; F = # Einträge/Indexseite, N = # Anzahl Blattseiten Insert: Finde das Blatt, wohin der Dateneintrag gehört und füge ihn dort ein. Delete: Finde das Blatt und lösche Eintrag von dort; wenn die Überlauf-Seite leer ist, deallokiere sie (d.h. gebe Speicher frei) Statische Baum-Struktur Insert / Delete betrifft nur die Blattseiten Datenseiten Indexseiten Überlaufseiten Prof. Dr. T. Kudraß 5 Beispiel ISAM-Baum Jeder Knoten kann 2 Einträge aufnehmen; kein Bedarf für Pointer zur nächsten Seite 40 20 33 51 63 10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97* Prof. Dr. T. Kudraß 6

Insert 23*, 48*, 41*, 42*... Einfügen Index Seiten 40 20 33 51 63 Primäre Blatt Seiten 10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97* Überlauf Seiten 23* 48* 41* 42* Prof. Dr. T. Kudraß 7... Delete 42*, 51*, 97* Löschen 40 20 33 51 63 10* 15* 20* 27* 33* 37* 40* 46* 55* 63* 23* 48* 41* Beachte: 51* erscheint nur in Indexstufen, aber nicht im Blatt! Prof. Dr. T. Kudraß 8

B+ Baum: Meistgenutzter Index Ordnung d des Baumes: Jeder Zwischenknoten enthält d m 2d Einträge und somit mindestens d+1 und höchstens 2d+1 Söhne Die Wurzel ist ein Blatt oder hat mindestens 2 Söhne Höhe h des Baumes: Länge des Pfades von der Wurzel bis zu einem Blatt (im allg. 3-4) Format eines Knotens: P0 K 1 P 1 K 2 P 2 K m P m Pi verweist auf einen Teilbaum, in dem für alle Schlüsselwerte K gilt: K i K < K i+1 Spezialfall: P 0 verweist auf einen Baum, in dem alle K < K 1 P m verweist auf einen Baum, in dem alle K P m Insert / Delete erhalten den Baum höhenbalanciert Mindestens 50% Belegung garantiert Suchkosten: log d N (d=ordnung, N=Anzahl der indizierten Datensätze) Prof. Dr. T. Kudraß 9 B-Bäume in der Praxis Typische Ordnung: 100. Typischer Füllfaktor: 67%. durchschnittliche Anzahl von Söhnen = 133 Typische Kapazitäten: Höhe 4: 133 4 = 312,900,700 Sätze Höhe 3: 133 3 = 2,352,637 Sätze Die obersten Stufen können im Puffer gehalten werden: Level 1 = 1 Seite = 8 Kbytes Level 2 = 133 Seiten = 1 Mbyte Level 3 = 17,689 Seiten = 133 Mbytes Dateneinträge nur in Blattknoten (B+ Bäume heißen auch B* Bäume) Index-Einträge (Direkte Suche) Dateneinträge ("Sequenz") Prof. Dr. T. Kudraß 10

Beispiel B+ Baum Suche beginnt an der Wurzel, durch Vergleiche mit dem Schlüsselwert bis zu einem Blatt (wie in ISAM). Suche nach 5*, 15*, allen Dateneinträgen >= 24*... 13 17 24 30 2* 3* 5* 7* 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39* Wir finden 15* nicht auf dem entsprechenden Blatt, somit nicht im Baum! Prof. Dr. T. Kudraß 11 Einfügen eines Eintrags in einen B+ Baum Finde das richtige Blatt L. Lege den Eintrag in L ab. Wenn in L genug Platz, fertig! Sonst, splitte L (in L und einen neuen Knoten L2) ½ Umverteilung der Einträge gleichmäßig, kopiere den mittleren Schlüssel nach oben ½ Füge einen Indexeintrag ein beim Vater von L, der auf L2 verweist Dies kann rekursiv geschehen Um einen Index-Knoten zu splitten, verteile die Einträge gleichmäßig, aber ziehe den mittleren Schlüssel hoch. (Anders als beim Splitten von Blättern!) Durch Splitten wächst der Baum; ein Split der Wurzel erhöht die Baumhöhe. Baumwachstum heißt: wird breiter oder eine Stufe höher an der Spitze. Prof. Dr. T. Kudraß 12

Insert 8* Beachte, wie die minimale Belegung beim Splitting von Blatt und Indexseite garantiert wird. Beachte die Differenz zwischen Hochkopieren und Hochziehen; (hat einen Grund)! Einfügen in den Beispiel-Baum 2* 3* 5* 7* 8* 5 13 24 30 5 17 Einzufügender Eintrag im Vaterknoten. (Beachte, daß 5 hochkopiert wird und im Blatt fortbestehen bleibt.) Einzufügender Eintrag im Vaterknoten (Beachte, daß 17 hochgezogen wird und nur einmal im Index erscheint - anders als beim Split eines Blattes) Prof. Dr. T. Kudraß 13 Insert 8* Beispiel-Baum nach dem Einfügen 17 5 13 24 30 2* 3* 5* 7* 8* 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39* Beachte, daß die Wurzel gesplittet wurde, somit wird die Höhe des Baums größer. In diesem Beispiel könnten wir einen Split durch eine Umverteilung der Einträge vermeiden, wird gewöhnlich in der Praxis nicht gemacht. Prof. Dr. T. Kudraß 14

Löschen eines Eintrags aus einem B+ Baum Beginne an der Wurzel, finde Blatt L, wohin der Eintrag gehört.. Lösche den Eintrag. Wenn L mindestens noch halbvoll ist, fertig! Wenn L nur d-1 Einträge hat, ½ Versuche umzuverteilen, Borgen vom Bruder -Knoten (Nachbarknoten mit dem gleichen Vater wie L). ½ Falls Umverteilung scheitert, mische L und den Bruder- Knoten. Nach diesem Mischen muß der Eintrag aus dem Vater von L gelöscht werden (der auf L oder dessen Bruder verweist). Mischen kann bis zur Wurzel propagiert werden, reduziert somit die Höhe des Baumes. Prof. Dr. T. Kudraß 15 Beispiel-Baum nach dem Löschen (vorher Insert 8*), dann Delete 19* und 20* 17 5 13 27 30 2* 3* 5* 7* 8* 14* 16* 22* 24* 27* 29* 33* 34* 38* 39* Löschen 19* ist einfach. Löschen 20* erfolgt mit Umverteilung, da Unterlauf im Knoten entstanden ist (Belegung pro Knoten mindestens 2) Mittlerer Schlüssel wird hochkopiert. Prof. Dr. T. Kudraß 16

... Delete 24* Weiteres Löschen Mischen erforderlich. Zunächst Herüberziehen benachbarter Indexeinträge und Löschen des Verweises im Vater dadurch Unterlauf im Vaterknoten, der mit Bruder und Wurzel gemischt wird 5 13 17 30 22* 27* 29* 33* 34* 38* 39* 30 2* 3* 5* 7* 8* 14* 16* 22* 27* 29* 33* 34* 38* 39* Prof. Dr. T. Kudraß 17 Beispiel einer Umverteilung zwischen Nicht-Blatt-Knoten Baum während des Löschens von 24* Im Gegensatz zum vorherigen Beispiel, Umverteilung vom linken Sohn der Wurzel zum rechten Sohn (d.h. 30 hat einen Bruder, der Einträge abgeben kann) 22 5 13 17 20 30 2* 3* 5* 7* 8* 14* 16* 17* 18* 20* 21* 22* 27* 29* 33* 34* 38* 39* Prof. Dr. T. Kudraß 18

Nach der Umverteilung Einträge werden umverteilt durch Hochschieben des S plit-eintrages in den Vaterknoten Es genügt, den Index-Eintrag mit Schlüssel 20 umzuverteilen; Umverteilung von 17 ist hier nur zur Illustration. 17 5 13 20 22 30 2* 3* 5* 7* 8* 14* 16* 17* 18* 20* 21* 22* 27* 29* 33* 34* 38* 39* Prof. Dr. T. Kudraß 19 Kompression des Schlüssels Höhe eines Baumes abhängig von der Anzahl Dateneinträge und der Größe der Indexeinträge Größe der Indexeinträge bestimmt Anzahl der Indexeinträge, die auf eine Seite passen Wichtig, um die Anzahl der Sohn-Knoten zu erhöhen Optimierungsziel: Erhöhe die Sohn-Anzahl (Fan-Out), minimiere die Baumhöhe (Höhe bestimmt die Anzahl I/Os) Alphanumerische Schlüsselwerte in Index-Einträgen lenken nur den Weg; können oft komprimiert werden. Z.B.: Wenn wir benachbarte Index-Einträge haben mit Such-schlüsselwerten Dannon Yogurt, David Smith und Devarakonda Murthy, können wir abkürzen: David Smith zu Dav. (die anderen Schlüssel ebenfalls...) ½ Korrekt? Nicht unbedingt! Wenn es einen Indexeintrag gäbe Davey Jones? (Dann weniger komprimieren, z.b. David Smith zu Davi) ½ Im allgemeinen gilt: Während der Kompression muß jeder Indexeintrag länger als irgendein Schlüsselwert in seinem linken Teilbaum sein. Insert/Delete müssen entsprechend modifiziert werden. Prof. Dr. T. Kudraß 20

Laden eines B+ Baumes Wenn wir eine große Anzahl von Sätzen haben, und wir möchten einen B+ Baum auf einem Feld erzeugen, ist dies mit wiederholtem Einfügen von Sätzen sehr langsam. Laden (Bulk Loading) kann wesentlich effizienter gemacht werden. Initialisierung: Sortiere alle Dateneinträge, füge Pointer auf die erste (Blatt) Seite in einer neuen (Wurzel) Seite ein. Beispiel-Baum mit Ordnung d = 1 Sortierte Seiten mit Dateneinträgen; noch nicht im B+ Baum 3* 4* 6* 9* 10* 11* 12* 13* 20* 22* 23* 31* 35* 36* 38* 41* 44* Prof. Dr. T. Kudraß 21 Laden eines B+ Baumes (Forts.) 10 20 Indexeinträge für Blatt- Seiten immer in die rechteste Indexseite unmittelbar oberhalb Blatt- Ebene eingegeben. Wenn diese gefüllt ist, splitten (Splitten kann den ganzen rechtesten Pfad bis zur Wurzel hochgehen) Viel schneller als wiederholte Inserts, besonders wenn Sperren berücksichtigt werden! 6 12 Seite mit Dateneinträgen noch nicht im B+ Baum 3* 4* 6* 9* 10*11* 12* 13* 20*22* 23* 31* 35*36* 38*41* 44* 10 20 23 35 35 Seite mit Dateneinträgen noch nicht im B+ Baum 6 12 23 38 3* 4* 6* 9* 10* 11* 12* 13* 20*22* 23* 31* 35*36* 38*41* 44* Prof. Dr. T. Kudraß 22

Option 1: viele Inserts Langsam Zusammenfassung: Laden Keine sequentielle Abspeicherung der Blätter Option 2: Bulk Loading Hat Vorteile für Concurrency Control (Kontrolle des nebenläufigen Zugriffs auf Seiten) Weniger I/Os beim Aufbau des Baumes Blätter werden sequentiell gespeichert (und auch entsprechend gelinkt) Kontrolle über den Füll-Faktor auf den Seiten Prof. Dr. T. Kudraß 23 Ordnung Ordnung (d) in der Praxis ersetzt durch das Kriterium Platzausnutzung (z.b. Belegung mindestens halb-voll ). Knoten in einem B+ Baum entsprechen Seiten Indexseiten (Nicht-Blatt-Knoten) können typischerweise wesentlich mehr Einträge als Blattseiten aufnehmen. Sätze und Suchschlüssel variabler Länge bedeuten: verschiedene Knoten enthalten unterschiedliche Anzahl von Einträgen. Selbst bei Feldern fester Länge können mehrere Sätzen mit dem gleichen Wert des Suchschlüssels (Duplikate) zu variabel langen Dateneinträgen führen (bei Verwendung von Alternative 3, d.h. Dateneinträge enthalten Listen von Datensatz-IDs) Prof. Dr. T. Kudraß 24

Zusammenfassung Baum-basierter Index ideal für Bereichsanfragen (Range Query), auch gut für Lookups ISAM ist eine statische Struktur: Nur Blattseiten werden modifiziert; benötigt Überlaufseiten Überlaufketten können Performance ruinieren, ausgenommen Datenmenge und Datenverteilung bleiben gleich. B+ Baum ist eine dynamische Struktur: Inserts/Deletes lassen den Baum höhen-balanciert: log d N Kosten Hohe Ordnung = hohe Anzahl Söhne bedeutet geringe Baumhöhe (ca. 3 oder 4) Fast immer besser als sortierte Datei 67% Belegung des Baues im Durchschnitt Gegenüber I SAM vorzuziehen; paßt sich flexibel ans Wachstum an Wenn Dateneinträge Datensätze sind, können sich Satz-IDs durch Splits ändern! Schlüsselkompression erhöht die Ordnung, reduziert Baumhöhe Bulk loading wesentlich schneller als wiederholte Inserts, um B+ Bäume für große Datenmengen zu erzeugen Verbreitester Index in Datenbank-Management-Systemen wegen seiner Vielseitigkeit. Meist optimierte Komponente eines DBMS. Prof. Dr. T. Kudraß 25