II Extendible Hashing

Werbung
Dynamische Hashverfahren
I.
Einführung
1.1 Überblick
1.2 Prinzipien, Einsetzbarkeit
1.3 Probleme und Lösungen
II.
Extendible Hashing
2.1. Motivation
2.2. Struktur und Eigenschaften
2.3. Operationen
III.
Analyse und Betrachtungen
3.1. Zeitliches
3.2. Pro und Kontra
IV.
Ausblick
4.1. Weitere Verfahren
4.2. Alternativen?
V.
Anhang
5.1. Literaturquellen
5.2. Bildquellen
2
I Einführung
1.1. Überblick




heutzutage große Speichermengen und Datenverwaltung
erfordert hohe Konsistenz , wenig Speicherumfang und minimale Zugriffszeiten
viele Verfahren, meist uneffektiv oder langsam
Hashing  Verfahren, um schnell auf gespeicherte Daten zuzugreifen
1.2. Prinzipien, Einsetzbarkeit
 Datensatz  eindeutige Kennung (Schlüssel)
 Hashfunktion h:S  A ordnet Schlüssel S einen genauen Speicherplatz (Adresse A) zu
 an dieser Stelle findet man den gesuchten, einzufügenden oder zu löschenden Datensatz
2
I Einführung
1.3. Probleme und Lösungen
 Problem: max. k Schlüsssel, d.h. Anzahl Schlüssel ≤ Anzahl Speicherplätze
 einer Adresse werden mehrere Schlüssel zugewiesen  Kollisionen
 Kollisionsbehandlung etwa durch Listenerstellung mit Hilfe von Verkettung, etc.
 Listensuche langwieriger  O(1) nicht mehr generell erreichbar
 evtl. neue Hashfkt. erhöht Aufwand beimUmkopieren nochmals
 Suche nach neuen Methoden
 evtl. Speichererweiterung
 Erweiterung der Hash-Tabelle nur durch Umkopieren möglich
 höherer Aufwand erneut gegeben (s.o.)
 dynamische Hashverfahren schaffen Abhilfe
 Speicherweiterung möglich
3
II Extendible Hashing
2.1. Motivation
 nötig: Verfahren mit konstanter Zugriffszeit (bezogen auf externen Speicherzugriff) und wenig
Kollisionen unabhängig vom Datenumfang
 Kollisionsvermeidung und minimale Speicherumordnung benötigen dynamische Tabellen
 Wachsen und Schrumpfen entsprechend des benötigten Platzes ohne große Umordnung
 Extendible Hashing erfüllt diese Bedingungen
K12
K34
K45
K57
K59
...





...
K98

Überlauf
4
II Extendible Hashing
2.2. Struktur und Eigenschaften
 Hash-Tabelle besteht aus 2 Teilen: Directory (Verzeichnis) und Leaf-Pages (Buckets)
5
II Extendible Hashing
 Directory:
 enthält globale Tiefe d (in dem Fall: 3)
 2d Felder enthalten Zeiger auf Buckets
 Zeiger des i-ten Feldes zeigt auf Bucket mit ersten bzw. letzten d Bits des
Pseudoschlüssels (Fkt. von S)
 Pseudoschlüssel S* entspricht der binären Darstellung von i
 entsteht bei Anwendung von Hashfunktion h auf Schlüssel S: S*=h(S)
 Speicherplatz der Information von S eindeutig, dh. nur ein Bucket pro Datensatz
 Buckets
 dienen zur Datensatzspeicherung (Bucket wird auf einer Seite abgebildet, die Buckets
haben eine feste Größe, bezeichnet mit b)
 jedes Bucket besitzt Header, der die lokale Tiefe d* des Buckets enthält
 d* beschreibt Übereinstimmung in ersten bzw. letzten d* Stellen von S*
 ist d*<d, hat ein Bucket mehrere Zeiger
6
II Extendible Hashing
2.3. Operationen
 Standardoperationen Suchen, Einfügen und Löschen (SEARCH; INSERT, DELETE)
 Suchen nach Schlüssel S mit Datensatz
 Berechnung von S* nach der Formel: S*=h(S)
 Suche des Pointers auf Bucket mit Datensatz (S,D(S))
 Algorithmus SEARCH:
1. S*=h(S) berechnen
2. Tiefe d lesen
3. erste d Bits von S* bestimmen (Directory)
4. Pointer zu Bucket LP folgen
5. Datensatz (S*, D(S*)) suchen
 alle Buckets max. vollbesetzt, was aber tun bei Überlauf nach Einfügen?
7
II Extendible Hashing
 Einfügen eines Datensatzes






passende Position für Schlüssel S* suchen nach Suchalgorithmus
bei genügendem Speicherplatz  Datensatz (S,D(S)) einfügen
Überlauf  Aufspalten des Buckets LP in zwei Buckets LP und LP* mit Tiefe d*
Tiefe von LP und LP* um 1 erhöhen
Werte auf beide Blätter neu verteilen, sodass kein Überlauf mehr vorhanden ist
ist d*>d  d um 1 erhöhen, Directory verdoppeln
 Algorithmus INSERT:
1. SEARCH S*
2. INSERT (S;D(S))
3. if Überlauf then
4. Split LP in LP und LP*
5. d*:=d*+1
6. if d*>d
7. then d:=d+1 AND DIR:=DIR*2
8
II Extendible Hashing
 Löschen eines Datensatzes
 Datensatz suchen
 erfolgreich  Löschen
 bei vielen Löschvorgängen  Speicherauslastung schlecht, zuviel frei
 Zusammenfassen zweier unterbesetzter Buckets gdw.
Summe der Einträge < Kapazität und nur letzte Stelle unterschiedlich
 jedes Bucket mehr als 2 Pointer  Directory halbieren und die Tiefe um eins verringern
 Algorithmus DELETE:
1. SEARCH S*
2. if S* not found
3. RETURN “ERROR”
4. else DELETE (S,D(S))
5. if d*(LP,LP*)<b
(b….Grenzwert)
6. d*(LP):=d*(LP)-1
7. INSERT all in LP
8. DELETE LP*
9. if all Buckets more than 2 Pointer then
10. d:=d-1 AND DIR:=DIR/2 AND refresh
9
III Analyse und Betrachtungen
3.1. Zeitliches
 optimaler Fall: O(1), nur geringe Abweichung, solang b (Grenzwert) günstig gewählt wird
 allg: 2 Zugriffe (Directory, Bucket)
3.2. Pro und Kontra






haben gesehen, dass Extendible Hashing Wachsen und Schrumpfen möglich macht
erreichen gute Belegung und Speicherausnutzung, keine Platzverschwendung
zwei Seitenzugriffe pro Zugriff bleiben im Rahmen der Zeitvorgabe O(1)
einziges Makel: Zusätzlicher Aufwand beim Verwalten des Directory und der Buckets
ist aber in Relation zur Datenmenge sehr gering und somit vernachlässigbar
im Gegensatz zum dynamischen Hashing (immer 2 Zugriffe) schafft stat. Hashing im besten Fall
einen Zugriff
 muss wissen, ob man konst. Datenmenge hat  dann stat. Hash-Tabelle mit best. Speicher-Anzahl
ob man unbekannte Datenmenge hat  dann dynamische, erweiterbare Hash-Tabelle
10
IV Ausblick
4.1. Weitere Verfahren
a) Virtuelles Hashing
 prinzipgleich mit Extendible Hashing
 allerdings führt ein Bucket-Überlauf zur Speicherplatzverdopplung
 Bucket-Aufteilung wird durch einen Bitvektor angezeigt
b) Dynamisches Hashing
 Adressverzeichnis als Binärbaum organisiert (Besuchen des Baums in O(log n))
 Blätter des Baums speichern Adressen der zugehörigen Buckets
 Adressierung bring linearen Aufwand O(n) für 2n-1 Knoten und n Buckets für den Speicherplatz
der Adressstruktur
 allerdings: bei größerem Speicherbedarf pro Knoten!!!
11
4.2. Alternativen?





Extendible Hashing: trotz guter Lauf- und Zugriffszeiten nicht zu sequentiellem Lesen in der Lage
d.h. etwa alphabetische Reihenfolge und sortierte Anordnung der Elemente nicht möglich
nun lohnt es sich, über einige andere, weiterführende Verafhren nachzudenken
Verfahren, die solche Zugriffe und Funktionen möglich machen
Etwa: Verfahren ohne Indexnutzung und/oder Verfahren zur Kontrolle des Belegungsgrades
 nach Ortmann, R. Fagin, etc. bspw. das Lineare Hashing....
12
V Anhang
5.1 Literaturquellen
 R. Fagin, J. Nievergelt, N. Pippenger und H. R.: Strong Extendible Hashing - A Fast Access
Method For Dynamic Files, ACM Transactions On Database Systems, Vol. 4, No. 3, 1979,
Pages 315-344
 T.Ortmann, P. Widmayer: Algorithmen und Datenstrukturen, Spektrum Verlag, 4. Auflage,,
2002, Seiten 195-231
 Theo Härder, Erhard Rahm : Datenbaksysteme, Springer Verlag München, 2. Auflage, 2001,
Seiten 278-282
 A. Heuer, G. Saake, Datenbanmken: Konzepte und Sprachen, International Thomson Publishing,
Bonn, 1995, Seiten 1-35, 433-436
 www..minet.uni-jena.de Skript: Informatik 3 Prof. Hecker; Seiten 37-45
5.2. Bildquellen
 alle Bilder sind aus dem Buch von:
R. Fagin, J. Nievergelt, N. Pippenger und H. R.: Strong Extendible Hashing - A Fast Access
Method For Dynamic Files, ACM Transactions On Database Systems, Vol. 4, No. 3, 1979,
Pages 315-344
13
Herunterladen