Datenbanken und Informationssysteme WS 2012/13 - Übung 0 Andreas Göbel 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 23.10.2012 Vorstellung Dipl.-Inf. Andreas Göbel • Bis 31.03.2009: Informatik-Studium an der FSU • Seit 01.04.2009: Wissenschaftlicher Mitarbeiter an der FSU – – – – Lehrstuhl für Datenbanken und Informationssysteme Raum: 3233 Telefon: 03641/946363 E-Mail: [email protected] • Forschungsgebiete: – Database as a Service (DaaS) – Multi-Tenancy-Datenbanken – Service Level Management 3 DBIS-Übung 23.10.2012 Organisatorisches (I) • http://www.informatik.unijena.de/dbis/lehre/ws2012/dbis/index.html – Prüfungsmodalitäten – Organisatorisches und Hinweise – Ergänzende Materialien zur Vorlesung und Übung • Klausur: 18. Februar 2013 16.00 - 17.30 Uhr HS 1, Carl-Zeiss-Str. 3 • Klausurteilnahme nur für angemeldete Studenten: – B.Sc. / Lehramt: – M.Sc. / Diplom: 4 elektronisch über Friedolin schriftlich über Formular DBIS-Übung 23.10.2012 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 5 DBIS-Übung 23.10.2012 Agenda • Organisatorisches • Motivation von Zugriffspfaden • Mehrwegbäume – B-Baum – B*-Baum • Streuspeicherverfahren – Statisches Hashing – Erweiterbares Hashing • Zusammenfassung 6 DBIS-Übung 23.10.2012 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 7 DBIS-Übung 23.10.2012 Zielstellung der Ablage • Ablage von Daten soll einfachen, schnellen und inhaltsbezogenen Zugriff ermöglichen – Bsp: "Gib mir alle Angestellten, die im Raum 3233 arbeiten und deren Nachname mit „G“ beginnt.“ • Randbedingungen – Große Datenmengen nicht komplett im Hauptspeicher ablegbar – Meist mehr Suchanfragen als Änderungen auf Informationen 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 23.10.2012 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 9 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 23.10.2012 Agenda • Organisatorisches • Motivation von Zugriffspfaden • Mehrwegbäume – B-Baum – B*-Baum • Streuspeicherverfahren – Statisches Hashing – Erweiterbares Hashing • Zusammenfassung 10 DBIS-Übung 23.10.2012 Speicherstrukturen Entnommen aus Datenbanksysteme: Konzepte und Techniken der Implementierung von Theo Härder, Erhard Rahm 11 DBIS-Übung 23.10.2012 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 21 – Suchaufwand ist proportional zu Baumhöhe 13 • Vollständige Balanciertheit: 11 16 17 7 15 – Höhe aller Blätter unterscheidet sich maximal um 1 – vermeidet Entartung des Suchbaums 12 DBIS-Übung 19 18 23.10.2012 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 13 DBIS-Übung 23.10.2012 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 ... 14 ... DBIS-Übung ... 23.10.2012 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 log 2 n 1 ( N 1) h log n1 ( ) 2 15 DBIS-Übung 23.10.2012 Suchen im B-Baum 16 DBIS-Übung 23.10.2012 Einfügen im B-Baum (I) 17 DBIS-Übung 23.10.2012 Einfügen im B-Baum (II) 18 DBIS-Übung 23.10.2012 Löschen im B-Baum (I) 19 DBIS-Übung 23.10.2012 Löschen im B-Baum (II) 20 DBIS-Übung 23.10.2012 Löschen im B-Baum (III) 21 DBIS-Übung 23.10.2012 Löschen im B-Baum (IV) 22 DBIS-Übung 23.10.2012 Löschen im B-Baum (V) 23 DBIS-Übung 23.10.2012 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 24 DBIS-Übung 23.10.2012 Agenda • Organisatorisches • Motivation von Zugriffspfaden • Mehrwegbäume – B-Baum – B*-Baum • Streuspeicherverfahren – Statisches Hashing – Erweiterbares Hashing • Zusammenfassung 25 DBIS-Übung 23.10.2012 B*-Baum 26 DBIS-Übung 23.10.2012 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 27 DBIS-Übung 23.10.2012 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 28 DBIS-Übung 23.10.2012 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 29 DBIS-Übung 23.10.2012 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. • Heutige Literatur: B*-Baum wird üblicherweise als B+-Baum bezeichnet 30 DBIS-Übung 23.10.2012 Agenda • Organisatorisches • Motivation von Zugriffspfaden • Mehrwegbäume – B-Baum – B*-Baum • Streuspeicherverfahren – Statisches Hashing – Erweiterbares Hashing • Zusammenfassung 31 DBIS-Übung 23.10.2012 Speicherstrukturen Entnommen aus Datenbanksysteme: Konzepte und Techniken der Implementierung von Theo Härder, Erhard Rahm 32 DBIS-Übung 23.10.2012 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 33 DBIS-Übung 23.10.2012 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 34 DBIS-Übung 23.10.2012 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 35 DBIS-Übung 23.10.2012 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! 36 DBIS-Übung 23.10.2012 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 37 DBIS-Übung 23.10.2012 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 38 DBIS-Übung 23.10.2012 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 39 DBIS-Übung 23.10.2012 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!) 40 DBIS-Übung 23.10.2012 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) 41 DBIS-Übung 23.10.2012 Agenda • Organisatorisches • Motivation von Zugriffspfaden • Mehrwegbäume – B-Baum – B*-Baum • Streuspeicherverfahren – Statisches Hashing – Erweiterbares Hashing • Zusammenfassung 42 DBIS-Übung 23.10.2012 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 43 DBIS-Übung 23.10.2012 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 44 DBIS-Übung 23.10.2012 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 45 DBIS-Übung B1 23.10.2012 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 46 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 23.10.2012 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 6 [00110] 8 [01000] 113 17 [10001] 20 [10100] 25 [11001] 0... 1... 1 • 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 47 DBIS-Übung 23.10.2012 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 B3 – Differenzierung bei Neuverteilung gemäß ersten zwei Bits im Hashwert – Bucket B1 bleibt unverändert mit lokaler Tiefe d'=1 48 DBIS-Übung 23.10.2012 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 49 DBIS-Übung 2 B1 2 2 00... B4 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] 01... 10... 2 B2 11... 2 B3 23.10.2012 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 50 DBIS-Übung 23.10.2012 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 51 DBIS-Übung 23.10.2012 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) 52 DBIS-Übung 23.10.2012 Agenda • Organisatorisches • Motivation von Zugriffspfaden • Mehrwegbäume – B-Baum – B*-Baum • Streuspeicherverfahren – Statisches Hashing – Erweiterbares Hashing • Zusammenfassung 53 DBIS-Übung 23.10.2012 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: – Extendible Hashing: Keine direkte Unterstützung – B*-Baum: Abstieg im Baum und Nutzung der verketteten Blattebene 54 DBIS-Übung 23.10.2012 Nächste Termine der DBIS-Übung • Ausgabe des 1. Übungsblatts: • Besprechung: 55 DBIS-Übung 30.10.2012 06.11.2012 23.10.2012