Hash-Verfahren. Einführung

Ähnliche Dokumente
Hash-Verfahren. Prof. Dr. T. Kudraß 1

Dateiorganisation und Zugriffsstrukturen. Prof. Dr. T. Kudraß 1

Dateiorganisation und Zugriffsstrukturen

Überlaufbehandlung ohne Verkettung

Baum-Indexverfahren. Einführung

Teil VII. Hashverfahren

Organisationsformen der Speicherstrukturen

5.8.2 Erweiterungen Dynamische Hash-Funktionen (mit variabler Tabellengröße)?

Mehrdimensionale Zugriffspfade und Dateiorganisation

Themen. Hashverfahren. Stefan Szalowski Programmierung II Hashverfahren

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Algorithmen und Datenstrukturen 1

Datenbanken: Indexe. Motivation und Konzepte

13. Hashing. AVL-Bäume: Frage: Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n)

12. Hashing. Hashing einfache Methode um Wörtebücher zu implementieren, d.h. Hashing unterstützt die Operationen Search, Insert, Delete.

B*-BÄUME. Ein Index ist seinerseits wieder nichts anderes als eine Datei mit unpinned Records.

Übung Algorithmen I

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Informatik II, SS 2014

Gleichheitsanfrage vs. Bereichsanfrage

Kollision Hashfunktion Verkettung Offenes Hashing Perfektes Hashing Universelles Hashing Dynamisches Hashing. 4. Hashverfahren

Datenbanksysteme I WS 2012/13 - Übung 0 - Bernhard Pietsch Friedrich-Schiller-Universität Jena Lehrstuhl für Datenbanken und Informationssysteme

Grundlagen: Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Beweis: Die obere Schranke ist klar, da ein Binärbaum der Höhe h höchstens

Übung Algorithmen und Datenstrukturen


! DBMS organisiert die Daten so, dass minimal viele Plattenzugriffe nötig sind.

Datenstrukturen & Algorithmen Lösungen zu Blatt 5 FS 14

Bäume, Suchbäume und Hash-Tabellen

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Dr. Thomas Neumann

Informatik II, SS 2014

Datenbanksysteme II Indexstrukturen Felix Naumann

Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Sommersemester Dr. Tobias Lasser

Informatik II Prüfungsvorbereitungskurs

Überblick. 2. Eindimensionale Zugriffsstrukturen. Bäume. Anforderungen

Suchen in Listen und Hashtabellen

Übersicht. Volltextindex Boolesches Retrieval Termoperationen Indexieren mit Apache Lucene

Algorithmen und Datenstrukturen Hashverfahren

Algorithmen und Datenstrukturen

Kapitel 3. Symboltabelle. Symboltabelle Wintersemester 2008/09 1 / 10

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. Begründen Sie Ihre Antwort.

Oracle Database 12c Was Sie immer schon über Indexe wissen wollten

Kapitel 9. Hashverfahren. 9.1 Einführung

Mehrwegbäume Motivation

Grundlagen: Algorithmen und Datenstrukturen

Hash-Join Algorithmen

{0,1} rekursive Aufteilung des Datenraums in die Quadranten NW, NE, SW und SE feste Auflösung des Datenraums in 2 p 2 p Gitterzellen

Funktionsübersicht. Beschreibung der zentralen Funktionen von PLOX

Algorithmen und Datenstrukturen II: Hashverfahren

OPERATIONEN AUF EINER DATENBANK

Übungen zu Datenbanksysteme

Algorithmen und Datenstrukturen II: Hashverfahren

Ziel: Schaffung einer zusätzlichen, schnellen Zugriffsmöglichkeit unabhängig von Primärorganisation der Datei

Algorithmen und Datenstrukturen 11

Muster. Informatik 3 (Februar 2004) Name: Matrikelnummer: Betrachten Sie den folgenden Suchbaum. A G H J K M N

Übungsklausur Algorithmen I

Arbeiten mit dem Versionsverwaltungssystem. Jannik Kramer Proseminar Werkzeuge für das wissenschaftliche Arbeiten

Einführung in die Informatik Hashtables

Klausur Informatik B April Teil I: Informatik 3

In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen.

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

ANHANG: Vertiefung Zugriffspfade mit Übungsaufgaben

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

Algorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser

Algorithmen und Datenstrukturen (für ET/IT)

P ( Mindestens zwei Personen haben am gleichen Tag Geb. ) (1) = 1 P ( Alle Personen haben an verschiedenen Tagen Geb. ) (2)

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 4 ArrayList, PriorityQueue, HashSet und HashMap

Grundlagen der Programmierung

Cluster-Bildung. VL Datenbanken II 4 107

Indizes B+Bäume in Oracle. Jörg Winkler

Transkript:

Hash-Verfahren Prof. Dr. T. Kudraß 1 Einführung Drei Alternativen, wie Dateneinträge k* im Index aussehen können: 1. Datensatz mit Schlüsselwert k. <k, ID des Datensatzes mit dem Wert des Suchschlüssels k> 3. <k, Liste von Datensatz-IDs mit Suchschlüssel k> Auswahl einer Alternative ist orthogonal zur Indexierungstechnik, die genutzt wird, um Dateneinträge mit einem gegebenen Schlüsselwert k zu plazieren. Hash-basierte Verfahren am besten geeignet für Lookup- Operationen (Suche nach Daten mit einem bestimmten Wert), ungeeignet für Bereichssuche (Range Query) Statische und dynamische Hashing-Techniken: Trade-Offs analog zur Bewertung ISAM vs. B+ Bäume Prof. Dr. T. Kudraß

Statisches Hashing # Primärseiten fest, sequentiell allokiert, niemals de-allokiert; Überlaufseiten wenn benötigt h(k) mod M = Bucket, zu dem der Dateneintrag mit dem dem Schlüsselwert k gehört. (M = # Buckets) h(key) mod N key h 0 1 N-1 Primäre Bucketseiten Überlaufseiten Prof. Dr. T. Kudraß 3 Statisches Hashing (Forts.) Buckets enthalten Dateneinträge und entsprechen einer Seite Hashfunktion auf dem Suchschlüssel-Attribut des Datensatzes r. Muß eine Verteilung der Werte in einem Bereich 0... M-1 gewährleisten (auch Streuen genannt) h(key) = (a * key + b) funktioniert gut Hash-Funktion nach dem Divisionsrestverfahren mit linearem Sondieren (Berechnung von Ersatzadressen) a und b sind Konstanten; viel Kenntnis über Tuning von h vorhanden Lange Überlaufketten können entstehen und die Performance beeinträchtigen Extendible und Linear Hashing: Dynamische Techniken, um dieses Problem zu lösen Prof. Dr. T. Kudraß 4

Extendible Hashing Extendible = Erweiterbares Hashing Situation: Bucket(Primärseite) voll! Reorganisation der Datei durch Verdopplung der Anzahl Buckets nicht sinnvoll! Lesen und Schreiben von Seiten ist teuer! Idee: Nutze ein Verzeichnis von Pointern auf Buckets (Index), verdopple die Anzahl Buckets durch Verdopplung des Indexes, Aufsplitten des Buckets, das übergelaufen ist Index viel kleiner als Datei, somit Verdopplung viel billiger. Nur eine Seite mit Dateneinträgen wird gesplittet. Keine Überlaufseiten! Hash-Funktion richtig einstellen! Prof. Dr. T. Kudraß 5 Beispiel LOCALE TIEFE GLOBALE TIEFE 4* 1* 3* 16* Bucket A Index ist Array der Größe 4 Globale Tiefe heißt: Um ein Bucket für r zu finden, nehme die letzten Bits von h(r); wir bezeichnen r durch seine Hash-Funktion h(r). Wenn h(r) = 5 = binär 101, Satz gehört in Bucket, auf den 01 verweist. 00 01 10 11 INDEX 1* 5* 1* 13* 10* 15* 7* 19* Bucket B Bucket C Bucket D DATENSEITEN Insert: Wenn Bucket voll, splitte ihn (allokieren neue Seite - Umverteilung der Einträge) Wenn notwendig, verdopple den Index (Splitten eines Bucket erfordert nicht immer Verdopplung des Indexes; hängt ab von der lokalen Tiefe des aufzusplittenden Bucket im Vergleich zur globalen Tiefe) Prof. Dr. T. Kudraß 6

Einfügen eines neuen Eintrags h(r)=0 Directory verdoppeln! LOKALE TIEFE GLOBALE TIEFE 3*16* Bucket A LOKALE TIEFE GLOBALE TIEFE 3 3* 16* Bucket A 00 01 10 11 INDEX 1* 5* 1*13* Bucket B 10* 15* 7* 19* 4* 1* 0* Bucket C Bucket D Bucket A (Abspaltung von Bucket A) 3 000 001 010 011 100 101 110 111 INDEX 1* 5* 1* 13* 10* 15* 7* 19* 3 4* 1* 0* Bucket B Bucket C Bucket D Bucket A (Abspaltung von Bucket A) Prof. Dr. T. Kudraß 7 Bemerkungen 0 = binär 10100. Die letzten Bits (00) verraten: r gehört in A oder A. Die letzten 3 Bits werden benötigt, um zu entscheiden wohin genau Globale Tiefe des Directory: Maximale Anzahl Bits, die benötigt wird, um zu entscheiden, in welchen Bucket ein Eintrag gehört. Lokale Tiefe eines Bucket: Anzahl von Bits, die benötigt wird, um zu entscheiden, ob ein Eintrag in diesen Bucket gehört. Wann verursacht das Aufsplitten eines Bucket eine Verdopplung des Indexes? Vor dem Einfügen gilt: lokale Tiefe des Bucket = globale Tiefe. Ein Insert erhöht die lokale Tiefe so daß: lokale Tiefe > globale Tiefe. Index wird verdoppelt durch Kopieren und Fixieren eines Pointers zum neuen, abgespalteten Bucket (Split Image Page). ½ Verwendung der hinteren Bits (least significant) gestattet eine effiziente Verdopplung des Indexes durch Kopieren! Prof. Dr. T. Kudraß 8

Kommentare zum Erweiterbaren Hashing Wenn der Index in den Speicher paßt, werden Lookup-Operationen mit einem Plattenzugriff ausgeführt; ansonsten zwei. Beispiel 100 MB File: ½ 100 Bytes/Satz, 4K Seite, somit 40 Einträge pro Seite bzw. Bucket ½ enthält 1,000,000 Sätze (als Dateneinträge) ½ 5,000 Indexeinträge ½ hohe Wahrscheinlichkeit, daß Index in den Speicher paßt Index kann sehr stark wachsen, wenn die Streuung der Hashwerte ungleichmäßig ist Kollision: Überlaufseiten anlegen, wenn keine Einträge mehr in Bucket passen! Delete: Wenn das Löschen eines Dateneintrages den Bucket vollständig leert, kann dieser mit seinem abgesplitteten Teil (Split Image) wieder zusammengefaßtwerden. Wenn jeder Index-Eintrag zum gleichem Bucket wie auf dessen Abspaltung verweist, kann der Index entsprechend halbiert werden. Prof. Dr. T. Kudraß 9 Lineares Hashing * Weiteres dynamisches Hash-Verfahren = Alternative zum Erweiterbaren Hashing. LH behandelt das Problem langer Überlaufketten ohne Verwendung eines Index Idee: Verwende eine Folge von Hash-Funktionen h 0, h 1, h,... h i+1 verdoppelt den Wertebereich von h i (ähnlich wie Verdopplung des Index) Index wird vermieden in LH durch Verwendung von Überlaufseiten und Auswahl des aufzusplittenden Buckets nach Round- Robin-Methode Überlaufseiten im allgemeinen nicht sehr lang Einfache Behandlung von Duplikaten Speicherplatzauslastung evtl. schlechter als beim erweiterbaren Hashing, weil Splits nicht auf dichten Datenbereichen konzentriert sind. Prof. Dr. T. Kudraß 10

Zusammenfassung Hash-basierte Indexe: am besten für Lookup-Operationen keine Unterstützung für Bereichssuchen Statisches Hashing kann zu langen Überlaufketten führen Erweiterbares Hashing vermeidet Überlaufseiten durch Splitten voller Buckets, wenn neue Einträge hinzugefügt werden (Duplikate könnten Überlaufseiten erfordern) Index zur Verwaltung der Buckets, verdoppelt sich periodisch - Durch unbegrenztes Wachstum des Index-Array paßtes irgendwann nicht mehr in den Hauptspeicher und erhöht I/O-Kosten Prof. Dr. T. Kudraß 11