DBIS-Übung - Friedrich-Schiller

Werbung
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 n1 (
)
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
Herunterladen