260 likes | 380 Views
Übung Datenbanksysteme II Index- strukturen. Thorsten Papenbrock. Rückblick: Hausaufgabe 1. Submit : Bitte beachten: Bei JEDER Submission BEIDE Autoren angeben! Notifications sind raus; Korrekturen einsehbar; Anmerkungen jetzt natürlich in Freitextfeldern statt direkt auf Zetteln.
E N D
Übung Datenbanksysteme IIIndex-strukturen Thorsten Papenbrock
Rückblick:Hausaufgabe 1 • Submit: • Bitte beachten: Bei JEDER Submission BEIDE Autoren angeben! • Notifications sind raus; Korrekturen einsehbar; Anmerkungen jetzt natürlich in Freitextfeldern statt direkt auf Zetteln Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
Rückblick:TPMMS • Phase 1: • Phase 2: Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
Rückblick:TPMMS • Phase 1: • n Blöcke hat die gesamte Relation • m Blöcke passen gleichzeitig in den RAM • I/O Zeit Phase 1 = m Blöcke sequentielllesen + m Blöcke sequentiell schreiben • Phase 2: • n Blöcke hat die gesamte Relation • m Blöcke passen gleichzeitig in den RAM • I/O Zeit Phase 2 = n Blöcke selektivlesen +n Blöcke selektivschreiben Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
Quiz: ZuordnungIndexstrukturen • dichtbesetzter Index • dünnbesetzter Index • mehrstufiger Index • nicht-eindeutige Attribute • Sekundärindex • invertierter Index b. d. f. a. c. e. Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
Quiz: Richtig oder Falsch?Dicht- und dünnbesetzte Indexe • Es ist für jedes Datenfile möglich, zwei separate dünnbesetzte Level-1-Indexe auf unterschiedlichen Attributen anzulegen. • Es ist für jedes Datenfile möglich, zwei separate dichtbesetzte Level-1-Indexe auf unterschiedlichen Attributen anzulegen. • Es ist für jedes Datenfile möglich, einen dünnbesetzten Level-1-Index mit einem dichtbesetzten Level-2-Index anzulegen. Beide Indexe sind sinnvoll. • Es ist für jedes Datenfile möglich, einen dichtbesetzten Level-1-Index mit einem dünnbesetzten Level-2-Index anzulegen. Beide Indexe sind sinnvoll. Falsch Bei zwei Schlüsseln kann nur nach einem Schlüssel sortiert werden. Beide dünnbesetzte Level-1-Indexe benötigten daher eine Sortierung nach ihrem Schlüssel-Attribut. Das ist gleichzeitig nicht möglich! Wahr Dichtbesetzte Level-1-Indexe benötigen keine Sortierung. Es können daher mehrere dichtbesetzte Indexe auf unterschiedlichen Schlüsseln angelegt werden! Falsch Ein dichtbesetzter Level-2-Index auf einen Level-1-Index ist sinnlos, da er alle Werte noch einmal indexiert, dabei zusätzlich Speicher belegt und keinen Mehrwert schafft. Wahr Ein dünnbesetzter Level-2-Index auf einem dichtbesetzten Level-1-Index ist sinnvoll, da der dünnbesetzte Index nur die ersten Elemente der Blöcke indexiert und so letztendlich Speicher und Zugriffszeit spart. Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
B+-Baume:Aufbau Wurzel Knoten Blatt Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
Quiz: Richtig oder Falsch?B+-Baume • B+-Bäume können Overflow-Buckets benötigen. • Ein Block eines B+-Baums speichert n Pointer und n+1 Suchschlüssel. • Der durch Löschen eines Schlüssels entstehende B+-Baum ist nicht eindeutig bestimmt. • B+-Bäume können nur als Primärindexe verwendet werden. • B+-Bäume können auf eindeutigen und nicht-eindeutigen Attributen angelegt werden. Falsch Statt Overflow-Buckets zu generieren nutzen B+-Baume split-Operationen um den Index beim Überlauf eines Knotens oder Blattes zu erweitern. Falsch Ein Block (= Knoten bzw. Blatt) speichert bis zu n Suchschlüssel und bis zu n+1 Pointer. Wahr Beim Geschwister-Klauen und beim Merge ist nicht eindeutig bestimmt, mit welchem anderen Knoten die Operation durchgeführt wird! Falsch B+-Baume können verschiedene Index-Rollen übernehmen. Dabei können sie auch eine Sortierung des indexierten Attributes nutzen, benötigen diese aber nicht zwangsläufig. B +-Baume sind daher nicht nur als Primärindex einsetzbar. Wahr Ein B+-Baum ist ein mehrstufiger Index, der sowohl auf eindeutigen als auch auf nicht-eindeutigen Attributen aufgebaut werden kann. Bei doppelten Attributwerten müssen wir uns mit einem zusätzlichen Level unter den Blättern behelfen, da doppelte Schlüsselwerte nicht erlaubt sind! Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
B+-Bäume:INSERT Überlauf? Blatt? N Wurzel? SucheentsprechendesBlatt FügeSchlüssel und Pointer ein Nein Fertig Ja Split TeileKnoten N in zweiTeile N1, N2und verteileSchlüsselgleichmäßig Erzeugeneue Wurzel(mitnur einemSchlüssel) Ja Nein Ja Nein Kopiere kleinstenSchlüssel in N2 nach oben Ziehegrößten Schlüssel in N1nachoben Einfügen des neuen Schlüssel/Pointer-Paares im Elternknoten
B+-Bäume:INSERT • INSERT(17) o42o _ o _ o _ o o…o…o _ o _ o o12o23o32o _ o o6o8o9o10o o12o15o17o18o o23o24o28o _ o o32o38o _ o _ o _ _ Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
B+-Bäume:INSERT • INSERT(17) • INSERT(18) o42o _ o _ o _ o o…o…o _ o _ o o12o23o32o _ o o6o8o9o10o o12o15o17o18o o23o24o28o _ o o32o38o _ o _ o _ Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
B+-Bäume:INSERT • INSERT(17) • INSERT(18) • INSERT(19) o42o _ o _ o _ o o…o…o _ o _ o o12o23o32o _ o o6o8o9o10o o12o15o17o18o o23o24o28o _ o o32o38o _ o _ o o12o15o17o_o o18o19o_o_o Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
B+-Bäume:INSERT • INSERT(17) • INSERT(18) • INSERT(19) o42o _ o _ o _ o o…o…o _ o _ o o12o18o23o32o o12o23o32o _ o o6o8o9o10o o23o24o28o _ o o32o38o _ o _ o o12o15o17o_o o18o19o_o_o Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
B+-Bäume:INSERT • INSERT(17) • INSERT(18) • INSERT(19) • INSERT(11) o42o _ o _ o _ o o…o…o _ o _ o 10 o12o18o23o32o o12o23o32o _ o o6o8o9o_o o10o11o_o_o o6o8o9o10o o23o24o28o _ o o32o38o _ o _ o o12o15o17o_o o18o19o_o_o Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
B+-Bäume:INSERT • INSERT(17) • INSERT(18) • INSERT(19) • INSERT(11) o18o42o _ o _ o o42o _ o _ o _ o o…o…o _ o _ o o23o32o_o_o o10o12o18o_o o10o12o_o_o o6o8o9o_o o10o11o_o_o o6o8o9o10o o23o24o28o _ o o32o38o _ o _ o o12o15o17o_o o18o19o_o_o Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
B+-Bäume:INSERT • INSERT(17) • INSERT(18) • INSERT(19) • INSERT(11) o18o42o _ o _ o o42o _ o _ o _ o o…o…o _ o _ o o23o32o_o_o o10o12o_o_o o6o8o9o_o o10o11o_o_o o6o8o9o10o o23o24o28o _ o o32o38o _ o _ o o12o15o17o_o o18o19o_o_o Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
B+-Bäume:DELETE Unterbesetzt? UmverteilenmitGeschwistern? Blatt? Suche entsprechendes Blatt = weniger Child-Pointer in Knoten bzw. Daten-Pointer in Blatt gesetzt? Lösche Schlüssel und Pointer Nein Fertig Ja “linker“ und “rechter“ Geschwisterknoten beim Merge sind relativ und abhängig von der Ent- scheidung, mit welchem Geschwisterknoten der unterbestzte Knoten gemerged werden soll! Ja Nein Ja Nein Merge Ziehe den Split-Key des Vaterknoten in den linkenGeschwisterknoten Umverteilen ZiehealleSchlüsselvomrechten in den linkenGeschwisterknoten und verwerferechten (leeren) Knoten Schlüsselwerteder Elternanpassen
B+-Bäume:INSERT DELETE(17) o18o42o _ o _ o o23o32o_o_o o…o…o _ o _ o o10o12o_o_o o6o8o9o_o o6o8o9o10o o32o38o _ o _ o o10o11o_o_o o23o24o28o _ o o12o15o17o_o o18o19o_o_o Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
B+-Bäume:INSERT DELETE(17) DELETE(18) Ursprünglichen Schlüssel durch neuen kleinsten Schlüssel im rechten Blatt ersetzen o19o42o _ o _ o o18o42o _ o _ o o23o32o_o_o o24o32o_o_o o…o…o _ o _ o o10o12o_o_o o6o8o9o_o o6o8o9o10o o32o38o _ o _ o o10o11o_o_o o19o_o_o_o o23o24o28o _ o o12o15o_o_o o18o19o_o_o o19o23o_o_o o24o28o_o _ o Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
B+-Bäume:INSERT DELETE(17) DELETE(18) DELETE(23) o19o42o _ o _ o o24o32o_o_o o32o _o_o_o o…o…o _ o _ o o10o12o_o_o o6o8o9o_o o6o8o9o10o o32o38o _ o _ o o10o11o_o_o o19o_o_o_o o23o24o28o _ o o12o15o_o_o o19o24o28o_o o19o23o_o_o o24o28o_o _ o o _ o _ o_o _ o Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
B+-Bäume:INSERT DELETE(17) DELETE(18) DELETE(23) o_o42o _ o _ o o19o42o _ o _ o o10o12o19o_o o23o32o_o_o o32o _o_o_o o…o…o _ o _ o o10o12o_o_o o6o8o9o_o o6o8o9o10o o32o38o _ o _ o o10o11o_o_o o19o_o_o_o o12o15o_o_o o19o24o28o_o o19o23o_o_o Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
B+-Bäume:INSERT DELETE(17) DELETE(18) DELETE(23) o42o _ o _ o _ o o_o42o _ o _ o o10o12o19o32o o23o32o_o_o o _ o _o_o_o o…o…o _ o _ o o10o12o_o_o o6o8o9o_o o6o8o9o10o o32o38o _ o _ o o10o11o_o_o o19o_o_o_o o12o15o_o_o o19o24o28o_o o19o23o_o_o Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
B+-Bäume:Übungsaufgabe • Gegeben: B+-Baum, entstanden durch Einfügen von 9, 22, 19, 21, 13, 17, 1, 6, 23, 15 • Füge nacheinander ein: 14, 29, 4, 24 • Lösche nacheinander: 6, 13, 15 Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
B+-Bäume:Übungsaufgabe – Übersicht • Füge nacheinander ein: 14, 29, 4, 24 • Lösche nacheinander: 6, 13, 15 Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
B+-Bäume:Übungsaufgabe – Lösung 1 • Füge nacheinander ein: 14, 29, 4, 24 • Lösche nacheinander: 6, 13, 15 o17o _ o _ o _ o o6o13o _ o _ o o21o24o _ o _ o o13o14o15o _ o o21o22o23o _ o o1o2o4o _ o o24o29o_o _ o o17o19o_o _ o o6o9o_o _ o Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen
B+-Bäume:Übungsaufgabe – Lösung 2 • Füge nacheinander ein: 14, 29, 4, 24 • Lösche nacheinander: 6, 13, 15 o4o14o21o24o o14o17o19o _ o o21o22o23o _ o o1o2o_o _ o o24o29o_o _ o o4o9o_o _ o Thorsten Papenbrock | Übung Datenbanksysteme II – Indexstrukturen