Prof. Dr. T. Kudraß1 Hash-Verfahren. Prof. Dr. T. Kudraß2 Einführung Drei Alternativen, wie Dateneinträge k* im Index aussehen können: 1. Datensatz mit.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Algorithmentheorie 08 – Dynamische Programmierung (1)
Partitionierungstechniken in Datenbanksystemen
Randomisierte Algorithmen Präfix Suche und Konsistentes Hashing
Punkt-in-Polygon-Verfahren III (R/R+-Baum)
Hash-Tabellen und -Funktionen Hash-Tabellen in Java
Motivation Bisher: Codes mit möglichst kurzer Codelänge.
Eine dynamische Menge, die diese Operationen unterstützt,
Vorlesung Programmieren II
Der k-d-Baum Richard Göbel.
M a r c – o l i v e r p a h l Informatik II – Kapitel 14 Hashing Zusammenfassung des Kapitel 14 Küchlin, Weber, Einführung in die Informatik, 2.Auflage.
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Das LCA – Problem in Suffixbäumen
GIN2 – 2. Vorlesung, SS04 Prof. Dr. Wolfram Conen
FH-Hof Der B-Baum Richard Göbel. FH-Hof Wahl des Verzweigungsgrad Verzweigungsgrad kann größer als 2 sein v Nachfolger für einen Knoten v-1 Werte in einem.
Der B-Baum Richard Göbel.
Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)
5. Sortier-Algorithmen Vorbemerkungen:
Synonyme: Stapel, Keller, LIFO-Liste usw.
Bäume • Kernidee: Speicherung von Daten in einer Baumstruktur
Indexed Sequential Access Method
Lehrstuhl Informatik III: Datenbanksysteme Achim Landschoof 28. April 2009 Strukturierte P2P Systeme 1 Achim Landschoof Betreuerin: Dipl.-Inf. Jessica.
Sortierverfahren Richard Göbel.
Effizienz: Indexstrukturen
Algorithmentheorie 04 –Hashing
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
Prof. Dr. S. Albers Prof. Dr. Th. Ottmann
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 – Offenes Hashing) Prof. Th. Ottmann.
Prof. Dr. S. Albers Prof. Dr. Th. Ottmann
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (12 Hashverfahren: Allgemeiner Rahmen) Prof. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (15 Hashverfahren: Verkettung der Überläufer) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
WS Algorithmentheorie 15 – Fibonacci-Heaps Tobias Lauer.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 16 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Das Relationenmodell 1.
Prof. Dr. T. Kudraß1 Baum-Indexverfahren. Prof. Dr. T. Kudraß2 Einführung Drei Alternativen, wie Dateneinträge k* im Index aussehen können: 1. Datensatz.
Prof. Dr. T. Kudraß1 Relationenkalkül. Prof. Dr. T. Kudraß2 Relationenkalkül Zwei Ausprägungen: Tupelrelationenkalkül (TRK) und Domänenrelationenkalkül.
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Algorithmen und Komplexität Teil 1: Grundlegende.
Kap. 6.2 Binäre B-Bäume Ullmann: (2, 3) - Bäume
Wizards & Builders GmbH Schulung Visual SourceSafe für Visual FoxPro Norbert Abb W&B.
Eine Implementierung einer effiziente externe geordnete (!) lineare Liste Operationen: Search(x) Insert(x) Delete(x)
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Referat von Kim Schröer – Intelligente Dateisysteme WS13/14
Effiziente Algorithmen
Hartmut Klauck Universität Frankfurt SS
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Übung Datenbanksysteme II Index- strukturen
Aufgabe 1 In einem Mikroprozessorsystem mit 32-bit-Datenzugriff auf den Hauptspeicher ist ein Daten-Cache vorhanden. Das Laden des Caches erfolgt in Blöcken.
Algorithmen und Datenstrukturen Übungsmodul 11
Kapitel 6: Suchbäume und weitere Sortierverfahren
Technische Informatik II (INF 1211) Aufgabenteil (Mit Unterlagen)
Vorlesung Datenbanksysteme vom Physische Datenorganisation
Raumbezogene Zugriffsverfahren
Binärbäume.
Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:
Programmiersprachen II Fortsetzung Datenstrukturen Hashing Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Vorbesprechung Klausur Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 2 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 1 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Fortsetzung Datenstrukturen Einfache Bäume Übung 13 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Übungsblatt 2 Erläuterungen Wintersemester 16/17 DBIS.
 Präsentation transkript:

Prof. Dr. T. Kudraß1 Hash-Verfahren

Prof. Dr. T. Kudraß2 Einführung Drei Alternativen, wie Dateneinträge k* im Index aussehen können: 1. Datensatz mit Schlüsselwert 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ß3 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 h key Primäre Bucketseiten Überlaufseiten 1 0 N-1

Prof. Dr. T. Kudraß4 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ß5 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ß6 Beispiel Index ist Array der Größe 4 Globale Tiefe 2 heißt: Um ein Bucket für r zu finden, nehme die letzten 2 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. 13* LOCALE TIEFE GLOBALE TIEFE INDEX Bucket A Bucket B Bucket C Bucket D DATENSEITEN 10* 1*21* 4*12*32* 16* 15*7*19* 5* 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ß7 Einfügen eines neuen Eintrags h(r)=20 20* LOKALE TIEFE 2 2 INDEX GLOBALE TIEFE Bucket A Bucket B Bucket C Bucket D Bucket A2 (Abspaltung von Bucket A) 1* 5*21*13* 32* 16* 10* 15*7*19* 4*12* 19* INDEX Bucket A Bucket B Bucket C Bucket D Bucket A2 32* 1*5*21*13* 16* 10* 15* 7* 4* 20* 12* LOKALE TIEFE GLOBALE TIEFE Directory verdoppeln! (Abspaltung von Bucket A)

Prof. Dr. T. Kudraß8 Bemerkungen 20 = binär Die letzten 2 Bits (00) verraten: r gehört in A oder A2. 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ß9 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) 25,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ßt werden. – Wenn jeder Index-Eintrag zum gleichem Bucket wie auf dessen Abspaltung verweist, kann der Index entsprechend halbiert werden.

Prof. Dr. T. Kudraß10 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 2,... – h i+1 verdoppelt den Wertebereich von h i (ähnlich wie Verdopplung des Index) Index wird vermieden in LH durch Verwendung von Überlauf- seiten 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ß11 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ßt es irgendwann nicht mehr in den Hauptspeicher und erhöht I/O-Kosten