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

Ähnliche Dokumente
Dateiorganisation und Zugriffsstrukturen

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

Kapitel 9. Hashverfahren. 9.1 Einführung

Suchen in Listen und Hashtabellen

OPERATIONEN AUF EINER DATENBANK

Einführung in die Informatik Hashtables

Kapitel 8: Physischer Datenbankentwurf

Cluster-Bildung. VL Datenbanken II 4 107

Physische Datenorganisation

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 5, Donnerstag, 20.

3.5 Balancierung gemäß Zugriffshäufigkeit

Kapitel 7 Physische Datenorganisation. Speicherhierarchie Hintergrundspeicher / RAID Speicherstrukturen B-Bäume Hashing R-Bäume

Tag 4 Inhaltsverzeichnis

Physische Datenorganisation

Algorithmen und Datenstrukturen

Funktionsübersicht. Beschreibung der zentralen Funktionen von PLOX

3. Übung Algorithmen I

Nachtrag zu binären Suchbäumen

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Physischer Datenbankentwurf: Datenspeicherung

Programmiertechnik II

Jeder Datenträger besitzt einen I-Node-Array. Jede Datei auf dem Datenträger hat einen I-Node-Eintrag.

im Sekundärspeicher (magnetische und optische Platte (, Band)) gespeichert langsam (Blockzugriff), reichlich, billig, permanent

6. Formaler Datenbankentwurf 6.1. Rückblick. Datenbanken und Informationssysteme, WS 2012/ Januar 2013 Seite 1

Digitale Magazine ohne eigenen Speicher

5.3 Datenänderung/-zugriff mit SQL (DML)

6-1 A. Schwill Grundlagen der Programmierung II SS 2005

Vorlesung : Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Algorithmen & Datenstrukturen 1. Klausur

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Dateisysteme mit Plugin-Funktion

Tag 4 Inhaltsverzeichnis

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Inhalt. 1. Indextypen B*Baum-Index Reversed Key Index Bitmap Index Funktionsbasierter Index

Think Big. Skalierbare Anwendungen mit Azure. Aydin Mir Mohammadi Bluehands GmbH & co.mmunication KG

EXT: kool_leute. Extension Key: kool_leute Copyright , Renzo Lauper,

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

PostgreSQL Hardware und RAM Tuning

VS7 Slide 1. Verteilte Systeme. Vorlesung 7 vom Dr. Sebastian Iwanowski FH Wedel

ANDROID. Analyse der Android Plattform. Andre Rein, Johannes Florian Tietje. 28. Oktober FH-Gieÿen-Friedberg Android Praktikum

Einfu hrung in Subversion mit TortoiseSVN

Algorithmen. Consistent Hashing Bloom Filter MapReduce. Distributed Hash Tables. Einführung 1

Installationsanleitung für DoRIS unter Linux Inhaltsverzeichnis

Software RAID oder LVM auf einem Suse Linux System aufsetzen

Views in SQL. 2 Anlegen und Verwenden von Views 2

Erstellen von Online-Dokumenten für Schülerinnen und Schüler über das Dokumentensystem am Beispiel Nationalparks der USA

Verteiltes Backup. Einleitung Grundlegende Backup Techniken Backup in Netzwerken. Client/Server Peer-to-Peer

Datenstrukturen in Java

Unterabfragen (Subqueries)

Datenbanken für Online Untersuchungen

Überprüfen Active Directory und DNS Konfiguration Ver 1.0

XAMPP-Systeme. Teil 3: My SQL. PGP II/05 MySQL

Definition. Gnutella. Gnutella. Kriterien für P2P-Netzwerke. Gnutella = +

Datenbanken II Speicherung und Verarbeitung großer Objekte (Large Objects [LOBs])

Programmieren in Haskell

Downloadanleitung CATIA V5 Student Edition

Bedeutung der Metadateien. Alle Metadaten werden in Dateien gehalten. NTFS ist ein Journal-File-System

Übungsblatt 6 Lösungsvorschläge

Datenbanken: Datenintegrität.

Heureka CAQ. Reorganisation 7.0. QDaTech GmbH

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

6.2 FAT32 Dateisystem

Algorithmen und Datenstrukturen Suchbaum

Teil IV. Dateiorganisation und Zugriffsstrukturen

7.5 Zugriffsrechte SYSTEMPRIVILEGIEN BENUTZERIDENTIFIKATION ZUGRIFFSRECHTE INNERHALB ORACLE SCHEMAKONZEPT. berechtigen zu Schemaoperationen

Workshop Datensicherung

IMPLEMENTIERUNG VON OPERATIONEN AUF RELATIONEN

Inhaltsverzeichnis. jetzt lerne ich

Vergleich verschiedener Möglichkeiten des Table-Lookups für größere Tabellen

Inhaltsverzeichnis. Web Hacking

Datenbanken: Architektur & Komponenten 3-Ebenen-Architektur

Anleitung zur NMR Auswertung mit SpinWorks. SpinWorks 3.1.8, Copyright 2011, Kirk Marat, University of Manitoba

Kapitel 6 Anfragebearbeitung

Source Routed Multicast Ein Multicast-Routing-Header für IP Version 6 Mark Doll

Wiederholung: Informationssicherheit Ziele

Physische Datenbankdefinition in. Arthur Bauer

TYPO3 und TypoScript

Kryptographie und Fehlertoleranz für Digitale Magazine

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Technische Informatik I. Übung 3 Speicherhierarchie. v t d 0 d 1 d 2 d Technische Informatik I Übung 3. Technische Informatik I Übung 3

Access Grundkurs. M. Eng. Robert Maaßen

Bedienungsanleitung MiniDV (V3)

Eine kurze Einführung in Vim

bersicht Datenbanken und Datawarehouses Datenbank Datenbanksysteme Niels Schršter

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Kapitel 9 Suchalgorithmen

Programmieren I. Kapitel 7. Sortieren und Suchen

Konzepte von Betriebssystemkomponenten Disk-Caches und Dateizugriff

SVN-Einführung für das SEP DS und CM. Julian Timpner, Stefan Brenner, Stephan Rottmann

Next Generation Internet

Algorithmen und Datenstrukturen Balancierte Suchbäume

Name:... Vorname:... Matrikel-Nr.:... Unterschrift:...

Themenkatalog der Schulungsinhalte

Tipps & Tricks. Neues, Nützliches und Praktisches. Christian Dahmen con terra GmbH

Alle Metadaten werden in Dateien gehalten

Betriebssysteme SS Hans-Georg Eßer Dipl.-Math., Dipl.-Inform. Foliensatz E SB 5 ( ) ACLs und Capabilities

MS SQL Server: Index Management. Stephan Arenswald 10. Juli 2008

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) modm = 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 00 1* 5* 1* 13* Bucket B 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). 01 10 11 10* Bucket C Wenn h(r) = 5 = binär 101, Satz gehört in Bucket, auf den 01 verweist. INDEX 15* 7* 19* 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 1* 5* 1*13* 10* Bucket B Bucket C 000 001 010 011 3 1* 5* 1*13* 10* Bucket B Bucket C INDEX 15* 7* 19* Bucket D 100 101 110 15* 7* 19* Bucket D 4* 1* 0* Bucket A (Abspaltung von Bucket A) 111 INDEX 3 4* 1* 0* 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ßt werden. 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

Hash-basierte Indexe: Zusammenfassung 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 Prof. Dr. T. Kudraß 11