Datenbanken und Informationssysteme WS 2012/13 - Übung 0 Bernhard Pietsch Friedrich-Schiller-Universität Jena Lehrstuhl für Datenbanken und Informationssysteme Agenda • Organisatorisches • Motivation von Zugriffspfaden • Mehrwegbäume – B-Baum – B+-Baum • Streuspeicherverfahren – Statisches Hashing – Erweiterbares Hashing • Zusammenfassung 2 DBIS-Übung 29.10.2013 Organisatorisches (I) • http://www.informatik.uni-jena.de/dbis/lehre/ws2013/dbis/index.html – Prüfungsmodalitäten – Organisatorisches und Hinweise – Ergänzende Materialien zur Vorlesung und Übung • Klausur: 11. Februar 2014 18.00 - 20.00 Uhr HS 1, Carl-Zeiss-Str. 3 • Klausurteilnahme nur für angemeldete Studenten: – B.Sc., M. Sc., Lehramt: 3 elektronisch über Friedolin DBIS-Übung 29.10.2013 Organisatorisches (II) • 7 Übungstermine – Vertiefung und praktische Erprobung des Vorlesungsstoffes – Vorbereitung auf die Klausur • 1. Übungstermin: Mehrwegbäume und Hashing • 2. – 7. Übungstermin: Besprechung der Aufgabenblätter 4 DBIS-Übung 29.10.2013 Agenda • Organisatorisches • Motivation von Zugriffspfaden • Mehrwegbäume – B-Baum – B+-Baum • Streuspeicherverfahren – Statisches Hashing – Erweiterbares Hashing • Zusammenfassung 5 DBIS-Übung 29.10.2013 Seite / Page • grundlegende Einheit der Datenspeicherung in DBMS • Dateneinheit fester Größe, welche bei den meisten DBMS von Datenbankadministrator festgelegt werden kann • Typische Seitengrößen sind 4,8,16 oder 32 KB • enthält einen Header und eine Menge von Datensätzen Header 3240 3233 3235 11 17 23 7 Küspert Göbel Büchse Eichner 3204 40 Pietsch 3233 69 Koch 3240 42 Friedel 3244 Header 12 Rossak 3243 • Datensätze werden seitenweise auf Externspeicher abgelegt • Um schnellen Zugriff zu erzielen, werden einige Seiten im Arbeitsspeicher gepuffert 6 DBIS-Übung 29.10.2013 Zielstellung der Ablage • Ablage von Daten soll einfachen, schnellen und inhaltsbezogenen Zugriff ermöglichen – Bsp: "Gib mir alle Angestellten, die im Raum 3240 arbeiten und deren Nachname mit „B“ beginnt.“ • Randbedingungen – Große Datenmengen nicht komplett im Hauptspeicher ablegbar – Meist mehr Suchanfragen als Änderungen auf Informationen Header 3240 3233 3235 7 11 17 23 7 Küspert Göbel Büchse Eichner 3204 40 Pietsch 3233 69 Koch 3240 42 Friedel 3244 DBIS-Übung Header 12 Rossak 3243 29.10.2013 Zugriffspfade • Motivation: Sequentielle Suche über GB/TB an Daten nicht akzeptabel • Zielstellung: – Minimierung der Anzahl von Externspeicherzugriffen (Latenz um Faktor 106 langsamer als beim Arbeitsspeicher) – Zugriff auf Daten mit konstantem oder logarithmischem Aufwand durch zusätzliche Speicherpfade • Zielkonflikt: Zugriffsbeschleunigung vs. Aktualisierungsaufwand Header 3240 3233 3235 8 11 17 23 7 Küspert Göbel Büchse Eichner 3204 40 Pietsch 3233 69 Koch 3240 42 Friedel 3244 DBIS-Übung Header 12 Rossak 3243 29.10.2013 Agenda • Organisatorisches • Motivation von Zugriffspfaden • Mehrwegbäume – B-Baum – B+-Baum • Streuspeicherverfahren – Statisches Hashing – Erweiterbares Hashing • Zusammenfassung 9 DBIS-Übung 29.10.2013 Speicherstrukturen Entnommen aus Datenbanksysteme: Konzepte und Techniken der Implementierung von Theo Härder, Erhard Rahm 10 DBIS-Übung 29.10.2013 Vollständig balancierter binärer Suchbaum • Wurzelbaum: – Spezieller gerichteter Graph mit Knoten und gerichteten Kanten – Ausgezeichnete Wurzel mit nur ausgehenden Kanten – Knoten ohne ausgehende Kanten heißen Blätter • Binärbaum: – Alle Knoten haben maximal zwei Kinder – Häufig gefordert: Kind ist entweder linkes oder rechtes Kind • Binärer Suchbaum: – effizientes Suchen durch eine Totalordnung – Suchaufwand ist proportional zu Baumhöhe 13 12 • Vollständige Balanciertheit: 11 13 16 17 7 15 – Höhe aller Blätter unterscheidet sich maximal um 1 – vermeidet Entartung des Suchbaums 11 DBIS-Übung 19 18 29.10.2013 19 20 Mehrwegbäume • Ausgangspunkt: vollständig balancierter binärer Suchbaum – Abbildung eines Knotens inkl. ausgehender Kanten auf eine Seite Seiten sind nur zu einem Bruchteil ausgelastet geringer Verzweigungsgrad und große Baumhöhe viele Seitenzugriffen und somit viele Externspeicherzugriffe • Zielstellung der Mehrwegbäume – Zusammenfassung mehrerer Sätze/Schlüssel zu einem Knoten – Höherer Verzweigungsgrad führt zu niedriger Baumhöhe – Kompromiss für wahlfreien Schlüsselzugriff und sortierte Verarbeitung – Aufwand von Änderungsoperationen akzeptabel • Beispiele: B- und B+-Baum 12 DBIS-Übung 29.10.2013 B-Baum • Vorschlag von R. Bayer und E. McCreight (1970) • Daten und Suchinformationen in Baumstruktur angeordnet • Baumknoten werden auf Seiten abgebildet, die vom DBMS verwaltet werden • Seiten- bzw. Knotenaufbau: Header • Beispielknoten: Header ... 13 ... DBIS-Übung ... 29.10.2013 B-Baum • Definition eines B-Baums mit Ordnung n: – Jeder Weg von der Wurzel zum Blatt hat die gleiche Länge h – Jeder Knoten (außer Wurzel und Blätter) hat mindestens n+1 Söhne. Die Wurzel ist ein Blatt oder hat mindestens 2 Söhne. Jedes Blatt besitzt mindestens n Einträge. – Jeder Knoten hat höchstens 2n+1 Söhne • Beispiel mit n=2: • Beschränkung der Höhe für N Datensätze (N>0): N +1 log2 n +1 ( N + 1) ≤ h ≤ logn +1 ( ) 2 14 DBIS-Übung 29.10.2013 Suchen im B-Baum 15 DBIS-Übung 29.10.2013 Einfügen im B-Baum (I) 16 DBIS-Übung 29.10.2013 Einfügen im B-Baum (II) 17 DBIS-Übung 29.10.2013 Löschen im B-Baum (I) 18 DBIS-Übung 29.10.2013 Löschen im B-Baum (II) 19 DBIS-Übung 29.10.2013 Löschen im B-Baum (III) 20 DBIS-Übung 29.10.2013 Löschen im B-Baum (IV) 21 DBIS-Übung 29.10.2013 Löschen im B-Baum (V) 22 DBIS-Übung 29.10.2013 Bewertung • B-Baum ist robust gegen Entartung durch Reorganisation • Ordnung n beeinflusst Effizienz – großes n niedrige Baumhöhe bessere Performance • Jede zusätzliche Seitenanforderung kostet viel Zeit ( Pufferverwaltung) • Wurzelknoten möglichst im Hauptspeicher halten – ABER: n ist durch Seitengröße beschränkt (z.B. 4, 8, 16 KB) • Doppelrolle der Schlüsselwerte si – si bildet ab auf Datensatz di und ist Weiche zur Suchsteuerung – Datenteil für Suchsteuerung nicht erforderlich – Idee: Datenteile nur auf Blattebene speichern B*-Baum 23 DBIS-Übung 29.10.2013 Agenda • Organisatorisches • Motivation von Zugriffspfaden • Mehrwegbäume – B-Baum – B+-Baum • Streuspeicherverfahren – Statisches Hashing – Erweiterbares Hashing • Zusammenfassung 24 DBIS-Übung 29.10.2013 B+-Baum 25 DBIS-Übung 29.10.2013 B+-Baum • Vorschlag von Donald Knuth (1973) • Häufigste Art der Index-Implementierung in DBMS • Indexbaum: – – – keine Datensätze, sondern Schlüssel und Zeiger auf Kinder Datensätze befinden sich ausschl. in der Blattebene des B*-Baums Gesamtbaum somit flacher als B-Baum Platz für mehr Schlüssel bei fester Seitengröße • Lösch-Vorgang einfacher als im B-Baum – Daten werden nur in Blättern entfernt – Schlüssel in inneren Knoten bleiben als Wegweiser erhalten Weniger Seiten müssen geändert werden 26 DBIS-Übung 29.10.2013 Verkettung der Blätter im B+-Baum • Blattfolge entspricht sequentieller Datei, üblicherweise mit (doppelter) Verkettung zwischen den Seiten Gleiche logarithmische Zugriffszeit für alle Daten sequentieller sortierter Zugriff und wahlfreier Schlüsselzugriff sind effizient Bereichsanfragen, Extremwertanfragen 27 DBIS-Übung 29.10.2013 B+-Bäume in der Praxis • Typische Werte: • Ordnung: 100 • Höhe: 3 - 4 • Füllfaktor: 70% • Durchschnittliche Anzahl von Söhnen: ~133 • Daraus resultierende Kapazitäten: – Höhe 3: 1333 = 2,352,637 Sätze – Höhe 4: 1334 = 312,900,700 Sätze • Pufferung der obersten Stufen: – Ebene 0: 1 Seite = 8 KB – Ebene 1: 133 Seiten = 1 MB – Ebene 2: 17,689 Seiten = 133 MB 28 DBIS-Übung 29.10.2013 Historie und Terminologie • Überblick der Baumarten: D. Comer: The Ubiquitous B-Tree. ACM Computing Surveys, 11:2, Juni 1979, pp. 121-137. • Originalpublikation B-Baum: R. Bayer, E. M. McCreight: Organization and Maintenance of Large Ordered Indexes. Acta Informatica, 1:4. 1972. 290-306. • Originalpublikation B*-Baum: D. E. Knuth: The Art of Computer Programming, Vol. 3, Addison-Wesley, 1973. 29 DBIS-Übung 29.10.2013 Agenda • Organisatorisches • Motivation von Zugriffspfaden • Mehrwegbäume – B-Baum – B+-Baum • Streuspeicherverfahren – Statisches Hashing – Erweiterbares Hashing • Zusammenfassung 30 DBIS-Übung 29.10.2013 Speicherstrukturen Entnommen aus Datenbanksysteme: Konzepte und Techniken der Implementierung von Theo Härder, Erhard Rahm 31 DBIS-Übung 29.10.2013 Statisches Hashing: Beschreibung • Hashtabelle als Indexstruktur ("Von der Ordnung ins Chaos") • Verwendung von Streuspeicherverfahren bzw. Hashfunktionen – Berechnung der Speicheradresse eines Datensatzes über den Schlüssel (Schlüsseltransformation) – Hashfunktion h(x) liefert die Seite (Bucket) bzw. Speicheradresse mit dem Dateneintrag zu Schlüssel x • Beispiel einer Hashfunktion: "Divisionsrestverfahren" – Geeignete Division des Schlüssels – Rest der Division ergibt die relative Adresse in der Hashtabelle 32 DBIS-Übung 29.10.2013 Statisches Hashing: Hashfunktion • Hashfunktion h: S {1, 2, ..., n} – S = Schlüsselraum, n = Größe des statischen Hash-Bereichs (Anzahl der Buckets) – Idealfall: h ist injektiv (keine Kollisionen) • Nur in Ausnahmefällen möglich • Jeder Satz kann mit einem Seitenzugriff referenziert werden – Ziel: möglichst gute Gleichverteilung einer konkreten Schlüsselmenge 33 DBIS-Übung 29.10.2013 Statisches Hashing: Operationen (vereinfacht) • Gegeben: – Hashfunktion h, Wertebereich der Hashfunktion W, mit h: S W – Datensatz Di mit Schlüssel Ki • Einfügen – Generierung der zukünftigen Speicheradresse: h(Ki) = Wi – Datensatz Di mit Schlüssel Ki wird auf Adresse Wi gespeichert • Direkte Suche – Ermittlung der zugehörigen Speicheradresse: h(Ki) = Wi – Bereitstellung von Datensatz Di mit Schlüssel Ki von Adresse Wi 34 DBIS-Übung 29.10.2013 Statisches Hashing: Operationen (vereinfacht) II • Gegeben: – Hashfunktion h, Wertebereich der Hashfunktion W, mit h: S W – Datensatz Di mit Schlüssel Ki • Löschen – Ermittlung der zugehörigen Speicheradresse: h(Ki) = Wi – Datensatz Di mit Schlüssel Ki wird auf Adresse Wi gelöscht • Sequentielle Suche – Sequentieller Durchlauf des Wertebereichs W = W1 ... Wn – Keine geordnete Schlüsselfolge keine sequentielle Suche möglich! 35 DBIS-Übung 29.10.2013 Statisches Hashing: Kollision • Definition: – Zwei Schlüssel Ki und Kn kollidieren bezüglich einer Hashfunktion h, wenn gilt: h(Ki) = h(Kn) – Ki und Kn nennt man dann auch Synonyme, sie gehören zu einer Kollisionsklasse • Kollisionsbehandlung umfasst folgende Aufgaben – Einfügen: Finden einer freien Speicheradresse beim Einfügen – Suchen: Auffinden eines Schlüssels, der nicht auf der Adresse gespeichert wurde, die die Hashfunktion bestimmt Alle Operationen werden durch Kollisionsbehandlung komplexer • Viele Hashfunktionen (z.B. Modulo) bilden eine größere Schlüsselmenge in einen kleineren Wertebereich ab Kollision ist dann zwangsläufig 36 DBIS-Übung 29.10.2013 Statisches Hashing: Kollisionsbehandlung • Offenes Hashen – Synonyme werden im Primärbereich untergebracht • Suche einer anderen noch nicht belegten Adresse in der Hashtabelle • Lineares/quadratisches Sondieren, Doppeltes Hashen – Gleiche Strategie beim Wiederauffinden – Lösch-Problematik: Einträge dürfen nicht einfach gelöscht werden, sonst herrschen veränderte Voraussetzungen (Lösung: Delete-Flag) h(Kx) = h(Km) Kx Km Ki Kx Ko 37 DBIS-Übung 29.10.2013 Statisches Hashing: Kollisionsbehandlung II • Geschlossenes Hashen – Kollisionen werden im separaten Überlaufbereich gespeichert • Überlaufbereich für alle Kollisionen • Überlaufbereich pro Adresse – Gefahr der Entartung • Überlauflisten werden zu lang • Performance sinkt (Suche in einer Liste!) h(Kx) = h(Km) Kx Km Ki Kx Ko 38 DBIS-Übung 29.10.2013 Statisches Hashing: Fazit • Vorteile: – Bei Kollisionsfreiheit: Suchen/Einfügen/Löschen in O(1) • Nachteile: – Meist Kollisionsbehandlung nötig: Suchen/Einfügen/Löschen in O(n) – Kein sequentieller Zugriff auf Daten möglich – Hashfunktion entscheidend für die Qualität des Hashverfahrens • beeinflusst Performance, Berechnungs-Komplexität, Datenverteilung und Kollisions-Wahrscheinlichkeit • Es gibt keine optimale Hashfunktion für beliebige Schlüsselmengen! – Ineffizienz bei unvorhersehbaren / stark wachsenden Datenmengen • Primärbereich anfangs überdimensioniert (a priori Allokation des benötigten Speichers), Freihalten von Leerstellen • Wachsende Überlaufketten verschlechtern Laufzeitverhalten • Nachträgliche Vergrößerung der Hashtabelle (Re-Hash) teuer / nicht möglich (24h-Dauerbetrieb!) 39 DBIS-Übung 29.10.2013 Zielstellung weiterführender Hashing-Verfahren • Dynamisches Wachsen und Schrumpfen des Wertebereichs der Hashfunktion – Buckets werden erst bei Bedarf bereitgestellt – Dichte Speicherplatzbelegung möglich – Vermeidung von Überlaufmechanismen und totaler Reorganisation • Konstantes Laufzeitverhalten – Zugriffszeit unabhängig vom Umfang des Datenbestands – Auffinden eines Satzes soll nicht mehr als zwei Seitenzugriffe erfordern • Verschiedene Ansätze: – Erweiterbares Hashing (Fagin, 1979) – Dynamisches Hashing (Larson, 1978) – Virtuelles und lineares Hashing (Litwin, 1978, 1980) 40 DBIS-Übung 29.10.2013 Agenda • Organisatorisches • Motivation von Zugriffspfaden • Mehrwegbäume – B-Baum – B+-Baum • Streuspeicherverfahren – Statisches Hashing – Erweiterbares Hashing • Zusammenfassung 41 DBIS-Übung 29.10.2013 Erweiterbares Hashing: Beschreibung • Hashtabelle gegliedert in zwei Bereiche – Directory (Inhaltsverzeichnis) – Eigentliche Hashbuckets • Zugriff zu den Werten in den Hashbuckets nur über Directory möglich – Zusätzliche Indirektion (evtl. Externspeicherzugriff!) – Notwendiges Hilfsmittel für die gewünschten Erweiterungseigenschaften • Bucket mit fester Länge (z.B. Seitengröße 4KB) und Kapazität b – Abhängig von den zu hashenden Daten (Wertlänge) – Abhängig von Datenintegration (Einbettung vs. Auslagerung) • Hashfunktion h generiert Pseudoschlüssel zu einem Satz x 42 DBIS-Übung 29.10.2013 Erweiterbares Hashing: Realistische Werte • Bucketkapazität: b=100, b=1000 – Abhängig von der Seitengröße (2, 4, 8, 16 KB, etc.) – Abhängig von Wahl der Einbettung (eingebetteter vs. ausgelagerter Ansatz) • h(x) mit h: S [0, 232-1] – Gewährleistet hinreichend viele Bitpositionen 43 DBIS-Übung 29.10.2013 Erweiterbares Hashing: Beispiel (1) • Ein leeres Bucket mit Bucket-Kapazität b = 4 • Hashfunktion h(x) = x mod 32 • Lokale Tiefe eines Bucket d‘: Anzahl von Bits, die benötigt wird, um zu entscheiden, ob ein Eintrag in dieses Bucket gehört • Globale Tiefe des Directory d: Maximale Anzahl Bits, die benötigt wird, um zu entscheiden, in welches Bucket ein Eintrag gehört (d = max(d‘)) d‘ = 0 d=0 44 DBIS-Übung B1 29.10.2013 Erweiterbares Hashing: Beispiel (2) • Schrittweiser Aufbau einer Hashtabelle durch sukzessives Einfügen einiger Werte in der vorgegebenen Reihenfolge: • Einfügen von Werten 134, 8, 113 und 89 – Alle Werte in Bucket B1 45 DBIS-Übung 0 x h(x) [h(x)]2 134 6 00110 8 8 01000 113 17 10001 89 25 11001 20 20 10100 118 22 10110 30 30 11110 107 11 01011 37 5 00101 77 13 01101 B1 134 8 113 89 0 29.10.2013 6 [00110] 8 [01000] 17 [10001] 25 [11001] Erweiterbares Hashing: Beispiel (3) / Split 1 • Im Beispiel: Einfügen von Wert 20 – Bucket-Überlauf in B1 – Splitting von B1 1 B1 134 8 0... 1... 1 113 • Allokation eines neuen Buckets B2 20 B2 mit d‘(B2) = d‘(B1) 89 • Erhöhung der lokalen Tiefen von B1 und B2 um 1 Hinweis: mögliche weitere lokale Tiefen werden nicht verändert • Hashfunktion h generiert Pseudoschlüssel der Einträge • Füllen der Buckets: jedes Bucket enthält nur Sätze, deren Pseudoschlüssel in den ersten d' Bits übereinstimmen • Falls d ≠ max(d‘): – Erhöhung der globalen Tiefe um 1 – Directory enthält 2d Einträge verdoppelt sich mit jedem zusätzlichen Bit 46 DBIS-Übung 6 [00110] 8 [01000] 29.10.2013 17 [10001] 20 [10100] 25 [11001] Erweiterbares Hashing: Beispiel (4) 1 • Einfügen des Werts 118 – Suche des zugehörigen Buckets ergibt B2 aufgrund 1. Bitposition – Freie Kapazität in B2 (|B2| < b) 1 • Erhöhung globaler Tiefe (d=2) • Directory-Verdopplung 6 [00110] 8 [01000] 113 20 118 89 17 [10001] 20 [10100] 22 [10110] 25 [11001] 134 8 6 [00110] 8 [01000] 113 20 118 17 [10001] 20 [10100] 22 [10110] 89 30 25 [11001] 30 [11110] 0... 1 1... B2 • Einfügen des Werts 30 – Bucket-Überlauf in B2 Splitting und Erhöhung der lokalen Tiefe (d'=2) in Buckets B2 und B3 B1 134 8 1 2 B1 00... 01... 2 B2 10... 11... 2 – Differenzierung bei Neuverteilung B3 gemäß ersten zwei Bits im Hashwert – Bucket B1 bleibt unverändert mit lokaler Tiefe d'=1 47 DBIS-Übung 29.10.2013 Erweiterbares Hashing: Beispiel (5) • Einfügen der Werte 107, 37 und 77 – Wert 107 wird in Bucket B1 abgelegt durch Zuordnung über "01..." – Wert 37 wird in Bucket B1 abgelegt durch Zuordnung über "00..." – Bucket-Überlauf in B1 bei Wert 77, Splitting in B1 und B4 – Erhöhung der lokalen Tiefe für Bucket B1 und B4 (d'=2) – Keine Directory-Verdopplung, da weiterhin die globale Tiefe mit d=2 (d=max(d')) bleibt 48 DBIS-Übung 2 B1 2 2 00... B4 01... 10... 2 B2 11... 37 134 5 [00101] 6 [00110] 8 107 77 8 [01000] 11 [01011] 13 [01101] 113 20 118 17 [10001] 20 [10100] 22 [10110] 89 30 25 [11001] 30 [11110] 2 B3 29.10.2013 Erweiterbares Hashing: Operationen • Gegeben: – Hashfunktion h, Buckets B1 ,… , Bn mit Kapazität b – Datensatz D mit Schlüssel K • Suche von D: – Anwendung der Hashfunktion h(K) ergibt Pseudoschlüssel für Directory – Ermittlung des zugeordneten Buckets Bi über das Directory – Durchsuchen von Bucket Bi nach K (z.B. mit binärer Suche) • Einfügen von D: – Suche von D gefunden? • Ja: Fehlermeldung, fertig! • Nein: Ist noch Platz im Bucket Bi, also |Bi|<b? – Ja: Einfügen von D in Bucket Bi – Nein: Splitting von Bucket Bi in zwei neue Buckets » Lokale Neuverteilung der Einträge aus Bi und Verweiskorrektur » Eventuell Verdopplung des Directory wegen Selektivität 49 DBIS-Übung 29.10.2013 Erweiterbares Hashing: Fazit • Hashfunktion sollte gut gewählt sein – Möglichst "zufälliges" Ergebnis – h(x) sollte an jeder Bitposition den Wert 0/1 mit gleicher Wahrscheinlichkeit (0.5) generieren – Hashverfahren reagieren empfindlich auf unausgewogene Hashfunktionen 50 DBIS-Übung 29.10.2013 Erweiterbares Hashing: Sonderfall 1 (Entartung) • Eine Einfügung kann mehrere Directory-Verdopplungen zur Folge haben – Alle betrachteten b+1 Hashwerte h(x) besitzen an der Position i ihrer binären Repräsentation den gleichen Wert – Bei guter Hashfunktion und großer Bucketkapazität b sehr selten – Beispiel: • b=2, h(x): S [0, 31] • Einfügereihenfolge: 2 (00010), 3 (00011), 6 (00110) 51 DBIS-Übung 29.10.2013 Agenda • Organisatorisches • Motivation von Zugriffspfaden • Mehrwegbäume – B-Baum – B*-Baum • Streuspeicherverfahren – Statisches Hashing – Erweiterbares Hashing • Zusammenfassung 52 DBIS-Übung 29.10.2013 Extendible Hashing vs. B*-Baum • Speicherplatzbelegung: – Extendible Hashing: • ≈ 70% [ln2] für gesamten (!) Hash-Bucket-Bereich (nur Einfügen, ideale Hashfunktion) • Zusatzaufwand (Speicher) für Directory moderat (anwachsend) – B*-Baum: • ≈ 70% [ln2] Füllgrad der Baumknoten • Wahlfreier Zugriff – Extendible Hashing: O(1) durch Anwenden der Hashfunktion – B*-Baum: O(logn(N)) durch Abstieg im Indexbaum • Sequentieller Zugriff: 53 – Extendible Hashing: Keine direkte Unterstützung – B*-Baum: Abstieg im Baum und Nutzung der verketteten Blattebene DBIS-Übung 29.10.2013 Nächste Termine der DBIS-Übung • Ausgabe des 1. Übungsblatts: 4.11.2013 • Besprechung: 12.11.2013 54 DBIS-Übung 29.10.2013