5. Basisalgorithmen für DB-Operationen



Ähnliche Dokumente
Einordnung. 6. Basisalgorithmen für DB-Operationen. Datenbankparameter. Datenbankparameter (II)

Teil V Basisalgorithmen für DB-Operationen

Kapitel 8: Physischer Datenbankentwurf

Datenbank- Implementierung

Teil V. Basisalgorithmen für DB-Operationen

Teil V Basisalgorithmen für DB-Operationen

1 topologisches Sortieren

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

teamsync Kurzanleitung

Gezielt über Folien hinweg springen

MIN oder MAX Bildung per B*Tree Index Hint

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

SQL Teil 2. SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Komplexer SELECT-Ausdruck

Informatik 12 Datenbanken SQL-Einführung

Datenexport aus JS - Software

Urs Meier Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung

Einleitung Projektion Selektion Join Mengenop. Vollst.keit. Einleitung Projektion. Selektion Join. Vollst.keit. Einleitung Projektion Selektion Join

Suchmaschinen. Universität Augsburg, Institut für Informatik SS 2014 Prof. Dr. W. Kießling 23. Mai 2014 Dr. M. Endres, F. Wenzel Lösungsblatt 6

MS Excel 2010 Kompakt

Abfrage-Befehle in MySQL -diverse Funktionen -

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Zwischenablage (Bilder, Texte,...)

Datenbanken Microsoft Access 2010

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

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Datenbanken: Architektur & Komponenten 3-Ebenen-Architektur

Lehrer: Einschreibemethoden

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Primzahlen und RSA-Verschlüsselung

Inventur. Bemerkung. / Inventur

1.3. Installation und Konfiguration von Filr Desktop

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Handbuch zum Statistiktool Pentaho Stand: Dezember 2013

Access [basics] Gruppierungen in Abfragen. Beispieldatenbank. Abfragen gruppieren. Artikel pro Kategorie zählen

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erwin Grüner

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Programmieren I. Kapitel 7. Sortieren und Suchen

Anwendertreffen 20./21. Juni

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Übersicht Programmablaufsteuerung

KAPITEL 4 BASISALGORITHMEN FÜR DATENBANKOPERATIONEN

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Sortierte Folgen 250

Überblick. Lineares Suchen

OP-LOG

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Java-Programmierung mit NetBeans

Algorithmen II Vorlesung am

Informatik I WS 07/08 Tutorium 24

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

1. Einleitung Was ist die App Listini Was benötigen Sie dazu Wie gehen Sie vor

Datenbanksysteme 2 Frühjahr-/Sommersemester Mai 2014

I Serverkalender in Thunderbird einrichten

Benutzung der LS-Miniscanner

Prozedurale Datenbank- Anwendungsprogrammierung

Datenbanksysteme II SS Übungsblatt 9: Wiederholung

Automatisches Parallelisieren

Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt

Informationen zu den regionalen Startseiten

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

WinWerk. Prozess 6a Rabatt gemäss Vorjahresverbrauch. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang Effretikon

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

Ich möchte meine Beitragsnachweise nach dem vereinfachten Schätzverfahren erstellen.

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

ecaros2 - Accountmanager

Personen. Anlegen einer neuen Person

Das Briefträgerproblem

Über Arrays und verkettete Listen Listen in Delphi

Abschlussprüfung Realschule Bayern II / III: 2009 Haupttermin B 1.0 B 1.1

Massenversand Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

Kontrollstrukturen, Strukturierte Programmierung

Sie sollen eine Datenbank für Befragungen mittels Online-Fragebögen zu unterschiedlichen Themen erstellen:

Feiertage in Marvin hinterlegen

OPERATIONEN AUF EINER DATENBANK

ajanzen.com Beispiele für den Umgang mit Feldsymbolen

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

Internationales Altkatholisches Laienforum

Gleichungen Lösen. Ein graphischer Blick auf Gleichungen

Kurzanleitung für die Abgabe der Abrechnung über das Mitgliederportal der KV Sachsen

Auf der linken Seite wählen Sie nun den Punkt Personen bearbeiten.

Achtung Konvertierung und Update von BDE nach SQL

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

Alltag mit dem Android Smartphone

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

7. Übung - Datenbanken

SQL - Übungen Bearbeitung der Datenbank Personal (1)

Mathematischer Vorbereitungskurs für Ökonomen

Datenaufbereitung in SPSS. Daten zusammenfügen

Task: Nmap Skripte ausführen

7 Rechnen mit Polynomen

Dokumentation zur Versendung der Statistik Daten

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

Shopware 4.1 Kategorien

Transkript:

5. Basisalgorithmen für DB-Operationen Datenbankparameter Komplexität von Grundalgorithmen Unäre Operationen (Scan, Selektion, Projektion) Binäre Operationen: Mengenoperationen Berechnung von Verbunden VL Datenbank-Implementierungstechniken 5 1 Einordnung MOS Datensystem SOS Zugriffssystem ISS Speichersystem SPS Pufferverwaltung DS Betriebssystem GS Mengenorientierte Schnittstelle Satzorientierte Schnittstelle Interne Satzschnittstelle Systempufferschnittstelle Dateischnittstelle Geräteschnittstelle VL Datenbank-Implementierungstechniken 5 2 Datenbankparameter Komplexitätsbetrachtungen (O(n 2 )) Aufwandsabschätzungen (konkret) Datenbankparameter als Grundlage müssen im Katalog des Datenbanksystems gespeichert werden VL Datenbank-Implementierungstechniken 5 3

Datenbankparameter (II) n r : Anzahl Tupel in Relation r b r : Anzahl von Blöcken (Seiten), die Tupel aus r beinhalten s r : (mittlere) Größe von Tupeln aus r (s für size) f r : Blockungsfaktor (Tupel aus r pro Block) mit bs Blockgröße f r = bs s r, Tupel einer Relation kompakt in Blöcken: nr b r = f r VL Datenbank-Implementierungstechniken 5 4 Datenbankparameter (III) V (A, r): Anzahl verschiedener Werte für das Attribut A in der Relation r (V für values): V (A, r) = π A (r) A Primärschlüssel: V (A, r) = n r SC(A, r): Selektionskardinalität (selection cardinality); durchschnittliche Anzahl von Ergebnistupeln bei σ A=x (r) für x π A (r) Schlüsselattribut A: SC(A, r) = 1 Allgemein: SC(A, r) = n r V (A, r) Weiterhin: Verzweigungsgrad bei B-Baum-Indexen, Höhe des Baums, Anzahl von Blätterknoten VL Datenbank-Implementierungstechniken 5 5 Komplexität von Grundalgorithmen Grundannahmen Indexe B + -Bäume dominierender Kostenfaktor: Blockzugriff Zugriff auf Hintergrundspeicher auch für Zwischenrelationen Zwischenrelationen zunächst für jede Grundoperation Zwischenrelationen hoffentlich zum großen Teil im Puffer einige Operationen (Mengenoperationen) auf Adreßmengen (TID-Listen) VL Datenbank-Implementierungstechniken 5 6

Hauptspeicheralgorithmen wichtig für den Durchsatz des Gesamtsystems, da sie sehr oft eingesetzt werden Tupelvergleich (Duplikate erkennen, Sortierordnung angeben,... ) iterativ durch Vergleich der Einzelattribute, Attribute mit großer Selektivität zuerst TID-Zugriff TID innerhalb des Hauptspeichers: übliche Vorgehensweise bei der Auflösung indirekter Adressen VL Datenbank-Implementierungstechniken 5 7 Zugriffe auf Datensätze Relationen: interner Identifikator RelID Indexe: interner Identifikator IndexID Primärindex, etwa I(Personen(PANr))) bei A = a wird maximal ein Tupel pro Zugriff Sekundärindex, etwa I(Ausleihe(PANr))) Bsp.: PANr = 4711 liefert i.a. mehrere Tupel Indexzugriffe: Ergebnis TID-Listen VL Datenbank-Implementierungstechniken 5 8 Zugriffe auf Datensätze (II) fetch-tupel Direktzugriff auf Tupel mittels TID-Wertes holt Tupel in Tupel-Puffer fetch-tupel(relid, TID) Tupel-Puffer fetch-tid: TID zu (Primärschlüssel-)Attributwert bestimmen fetch-tid(indexid, Attributwert) TID weiterhin auf Relationen und Indexen: Scans VL Datenbank-Implementierungstechniken 5 9

Beispiel in SQL select * from KUNDE where KName = Meier Gleichheitsanfrage über einen Schlüssel put: hier Anzeige des Ergebnisses aktuellertid := fetch-tid(kunde-kname-index, Meyer ); aktuellerpuffer:= fetch-tupel(kunde-relationid, aktuellertid); put(aktuellerpuffer); VL Datenbank-Implementierungstechniken 5 10 Externe Sortieralgorithmen Gunter 42 Andreas 24 Dieter 4 Chris 7 Berta 77 Elle 36 Tamara 99 Dieter 2 Mario 9 Peer 43 Dieter 11 Andreas 21 partition sort Andreas 24 Andreas 24 Dieter 4 Andreas 21 Berta 77 Gunter 42 Andreas 24 Chris 7 Berta 77 Dieter 4 Berta 77 Chris 7 Elle 36 Chris 7 Dieter 2 Gunter 42 Elle 36 Dieter 4 Dieter 2 Mario 9 Tamara 99 Andreas 21 Dieter 11 Peer 43 merge merge Andreas 21 Dieter 2 Dieter 11 Mario 9 Peer 43 Tamara 99 merge Dieter 11 Elle 36 Gunter 42 Mario 9 Peer 43 Tamara 99 Externes Sortieren durch Mischen; Komplexität O(n log n) Vertauschoperationen VL Datenbank-Implementierungstechniken 5 11 Unäre Operationen Scan durchläuft Tupel einer Relation Relationen-Scan (full table scan) durchläuft alle Tupel einer Relation in beliebiger Reihenfolge Aufwand: b r Index-Scan nutzt Index zum Auslesen der Tupel in Sortierreihenfolge Aufwand: Anzahl der Tupel plus Höhe des Indexes Vergleich Relationen-Scan besser durch Ausnutzung der Blockung Index-Scan besser, falls wenige Daten benötigt, aber schlechter beim Auslesen vieler Tupel VL Datenbank-Implementierungstechniken 5 12

Operationen auf Scans Relationen-Scan öffnen open-rel-scan(relationenid) ScanID liefert ScanID zurück, die bei folgenden Operationen zur Identifikation genutzt wird Index-Scan initialisieren open-index-scan(indexid, Min, Max) ScanID liefert ScanID zurück; Min und Max bestimmen Bereich einer Bereichsanfrage next-tid liefert nächsten TID; Scan-Cursor weitersetzen end-of-scan liefert true, falls kein TID mehr im Scan abzuarbeiten close-scan schließt Scan VL Datenbank-Implementierungstechniken 5 13 Beispiel: Scan select * from Personen where Nachname between Heuer and Jagellowsk VL Datenbank-Implementierungstechniken 5 14 Beispiel: Relationen-Scan aktuellerscanid := open-rel-scan(personen-relationid); aktuellertid := next-tid(aktuellerscanid); while not end-of-scan(aktuellerscanid) do aktuellerpuffer := fetch-tupel(personen-relationid,aktuellertid); if aktuellerpuffer.nachname >= Heuer and aktuellerpuffer.nachname <= Jagellowsk then put (aktuellerpuffer); endif; aktuellertid := next-tid(aktuellerscanid); end; close (aktuellerscanid); VL Datenbank-Implementierungstechniken 5 15

Beispiel: Index-Scan aktuellerscanid := open-index-scan(personen-nachname-indexid, Heuer, Jagellowsk ); aktuellertid := next-tid(aktuellerscanid); while not end-of-scan(aktuellerscanid) do aktuellerpuffer := fetch-tupel(personen-relationid,aktuellertid); put(aktuellerpuffer); aktuellertid := next-tid(aktuellerscanid); end; close (aktuellerscanid); VL Datenbank-Implementierungstechniken 5 16 Selektion exakte Suche, Bereichsselektionen, komplex zusammengesetzte Selektionskriterien zusammengesetztes Prädikat ϕ aus atomaren Prädikaten (exakte Suche, Bereichsanfrage) mit and, or, not Tupelweises Vorgehen Gegeben σ ϕ (r) Relationen-Scan: für alle t r auswerten ϕ(t) Aufwand O(n r ), genauer b r VL Datenbank-Implementierungstechniken 5 17 Selektion: Konjunktive Normalform Zugriffspfade bei komplexen Prädikaten einsetzen ϕ analysieren und geeignet umformen etwa ϕ in konjunktive Normalform KNF überführen; bestehend aus Konjunkten heuristisch Konjunkt auswählten, das sich besonders gut durch Indexe auswerten laßt (etwa bei A = c und über A Index) ausgewähltes Konjunkt auswerten; für Ergebnis-TID-Liste andere Konjunkte tupelweise oder mehrere geeignete Konjunkte auswerten und die sich ergebenden TID-Listen schneiden VL Datenbank-Implementierungstechniken 5 18

Selektion: Filtermethoden bei Filtermethode alle Bedingungen auf true setzen, die nicht durch eine Zugriffsmethode unterstützt werden resultierendes Prädikat: ϕ. r = σ ϕ (r) unter Ausnutzung der Indexe auswerten σ ϕ (r ) auf dem (hoffentlich viel kleineren) Zwischenergebnis r mittels tupelweisem Vorgehen auswerten Filtermethoden nur gut, wenn ϕ tatsächlich Datenvolumen reduziert (Vorsicht bei Disjunktionen) VL Datenbank-Implementierungstechniken 5 19 Projektion Relationenalgebra: mit Duplikateliminierung SQL: keine Duplikateliminierung, wenn nicht mit distinct gefordert (modifizierter Scan) mit Duplikateliminerung: sortierte Ausgabe eines Indexes hilft bei der Duplikateliminierung Projektion auf indexierte Attribute ohne Zugriff auf gespeicherte Tupel VL Datenbank-Implementierungstechniken 5 20 Projektion (II) Projektion π X (r): 1. r nach X sortieren 2. t r werden in das Ergebnis aufnehmen, für die t(x) previous(t(x)) gilt Zeitaufwand: O(n r log n r ) Falls r schon sortiert nach X: O(n r ) Schlüssel K X: O(n r ) VL Datenbank-Implementierungstechniken 5 21

Scan-Semantik bei Scan-basierten (positionalen) Änderungsoperationen: Festlegung einer Scan-Semantik Wirkungsweise nachfolgender Scan-Operationen Beispiel: Löschen des aktuellen Satzes Zustände: vor dem ersten Satz, auf einem Satz, in Lücke zwischen zwei Sätzen, hinter dem letzten Satz, in leerer Menge weiterhin: Übergangsregeln für Zustände VL Datenbank-Implementierungstechniken 5 22 Scan-Semantik (II) Helloween-Problem (System R): SQL-Anweisung: update employee e set salary = salary * 1.05 satzorientierte Auswertung mittels Index-Scan über I employee (salary) und sofortige Index-Aktualisierung ohne besondere Vorkehrungen: unendliche Anzahl von Gehaltserhöhungen VL Datenbank-Implementierungstechniken 5 23 Binäre Operationen: Mengenoperationen Binäre Operationen meist auf Basis von tupelweisem Vergleich der einzelnen Tupelmengen Nested-Loops-Technik oder Schleifeniteration für jedes Tupel einer äußeren Relation s wird die innere Relation r komplett durchlaufen Aufwand: O(n s n r ) Merge-Technik oder Mischmethode r und s (sortiert) schrittweise in der vorgegebenen Tupelreihenfolge durchlaufen Aufwand: O(n s + n r ) Falls Sortierung noch vorzunehmen: Sort-Merge-Technik Aufwand n r log n r und/oder n s log n s VL Datenbank-Implementierungstechniken 5 24

Mengenoperationen (II) Hash-Methoden kleinere der beiden Relationen in Hash-Tabelle Tupel der zweiten Relation finden ihren Vergleichspartner mittels Hash-Funktion idealerweise Aufwand O(n s + n r ) VL Datenbank-Implementierungstechniken 5 25 Klassen binärer Operationen r s A B C VL Datenbank-Implementierungstechniken 5 26 Klassen binärer Operationen (II) Ergebnisextensionen Übereinstimmung auf allen Attributen Übereinstimmung auf einigen Attributen A Differenz r s Anti-Semi- Verbund B Schnitt r s Verbund, Verbund Semi- C Differenz s r Anti-Semi- Verbund A B Left Outer Join A C Anti-Verbund B C symmetrische Differenz Right Outer Join (r s) (s r) A B C Vereinigung r s Full Outer Join VL Datenbank-Implementierungstechniken 5 27

Vereinigung mit Duplikateliminierung Vereinigung durch Einfügen Variante der Nested-Loops-Methoden Kopie einer der beiden Relationen r 2 unter dem Namen r 2 anlegen, dann Tupel t 1 r 1 in r 2 einfügen (Zeitaufwand abhängig von Organisationsform der Kopie) Spezialtechniken für die Vereinigung r und s verketten Projektion auf alle Attribute der verketteten Relation Zeitaufwand: O((n r + n s ) log(n r + n s )) (wie Projektion) VL Datenbank-Implementierungstechniken 5 28 Vereinigung (II) Vereinigung durch Merge-Techniken (merge-union) 1. r und s sortieren, falls nicht bereits sortiert 2. r und s mischen t r r kleiner als t s s: t r in das Ergebnis, nächstes t r r lesen t r r größer als t s s: t s in das Ergebnis, nächstes t s s lesen t s = t r : t r in das Ergebnis, nächste t r r bzw. t s s lesen Zeitaufwand: O(n r log n r + n s log n s ) mit Sortierung, O(n r + n s ) ohne Sortierung VL Datenbank-Implementierungstechniken 5 29 Berechnung von Verbunden Varianten Nested-Loops-Verbund Block-Nested-Loops-Verbund Merge-Join Hash-Verbund... VL Datenbank-Implementierungstechniken 5 30

Nested-Loops-Verbund doppelte Schleife iteriert über alle t 1 r und alle t 2 s bei einer Operation r s r ϕ s: for each t r r do for each t s s do if ϕ(t r, t s ) then put(t r t s ) endif end end VL Datenbank-Implementierungstechniken 5 31 Nested-Loops-Verbund mit Scan R1ScanID := open-rel-scan(r1id); R1TID := next-tid(r1scanid); while not end-of-scan(r1scanid) do R1Puffer := fetch-tupel(r1id,r1tid); R2ScanID := open-rel-scan(r2id); R2TID := next-tid(r2scanid); while not end-of-scan(r2scanid) do.../* Scan über innere Relation */ close (R2ScanID); end; R1TID := next-tid(r1scanid); close (R1ScanID); VL Datenbank-Implementierungstechniken 5 32 Nested-Loops-Verbund mit Scan II /* Scan über innere Relation */ R2Puffer := fetch-tupel(r2id,r2tid); if R1Puffer.X = R2Puffer.Y then insert into ERG (R1.Puffer.A1,..., R1.Puffer.An, R1.Puffer.X, R2.Puffer.B1,..., R1.Puffer.Bm); endif; R2TID := next-tid(r2scanid); Verbesserung: Nested-Loops-Verbund verbindet alle t 1 r mit Ergebnis von σ X=t1(X)(s) (gut bei Index auf X in r 2 ) VL Datenbank-Implementierungstechniken 5 33

Block-Nested-Loops-Verbund statt über Tupel über Blöcke iterieren for each Block B r of r do for each Block B s of s do for each Tupel t r B r do for each Tupel t s B s do if ϕ(t r, t s ) then put(t r t s ) endif end end end end Aufwand: b r b s VL Datenbank-Implementierungstechniken 5 34 Merge-Techniken X := R S; falls nicht bereits sortiert, zuerst Sortierung von r und s nach X 1. t r (X) < t s (X), nächstes t r r lesen 2. t r (X) > t s (X), nächstes t s s lesen 3. t r (X) = t s (X), t r mit t s und allen Nachfolgern von t s, die auf X mit t s gleich, verbinden 4. beim ersten t s s mit t s (X) t s(x) nend mit ursprünglichem t s mit den Nachfolgern t r von t r wiederholen, solange t r (X) = t r(x) gilt VL Datenbank-Implementierungstechniken 5 35 Merge-Techniken: Aufwand alle Tupel haben den selben X-Wert: O(n r n s ) X Schlüssel von R oder S: O(n r log n r + n s log n s ) bei vorsortierten Relationen sogar: O(n r + n s ) VL Datenbank-Implementierungstechniken 5 36

Merge-Join mit Scan Verbund-Attribute auf beiden Relationen Schlüsseleigenschaft min(x) und max(x): minimaler bzw. maximaler gespeicherter Wert für X VL Datenbank-Implementierungstechniken 5 37 Merge-Join mit Scan (II) R1ScanID := open-index-scan(r1xindexid, min(x), max(x)); R1TID := next-tid(r1scanid); R1Puffer := fetch-tupel(r1id,r1tid); R2ScanID := open-index-scan(r2yindexid, min(y), max(y)); R2TID := next-tid(r2scanid); R2Puffer := fetch-tupel(r2id,r2tid); while not end-of-scan(r1scanid) and not end-of-scan(r2scanid) do.../* merge */ end; close (R1ScanID); close (R2ScanID); VL Datenbank-Implementierungstechniken 5 38 Merge-Join mit Scan (III) /* merge */ if R1Puffer.X < R2Puffer.Y then R1TID := next-tid(r1scanid); R1Puffer := fetch-tupel(r1id,r1tid); else if R1Puffer.X > R2Puffer.y then R2TID := next-tid(r2scanid); R2Puffer := fetch-tupel(r2id,r2tid); else insert into ERG (R1.Puffer.A1,..., R1.Puffer.An, R1.Puffer.X, R2.Puffer.B1,..., R1.Puffer.Bm); R1TID := next-tid(r1scanid); R1Puffer := fetch-tupel(r1id,r1tid); R2TID := next-tid(r2scanid); R2Puffer := fetch-tupel(r2id,r2tid); endif; endif; VL Datenbank-Implementierungstechniken 5 39

Hash-Verbund Tupel aus r und s über X in gemeinsame Datei mit k Blöcken (Buckets) gehasht Tupel in gleichen Buckets durch Verbundalgorithmus verbinden VL Datenbank-Implementierungstechniken 5 40 Hash-Verbund (II) r h 0 join 0 h s... 1 join 1... 2 join...... 2 max join max VL Datenbank-Implementierungstechniken 5 41 Hash-Verbund (III) for each t r in r do i := h(t r (X)); Hi r := Hr i t r(x); end; for each t s in s do i := h(t s (X)); Hi s := Hs i t s(x); end; for each k in 0... max do Hk r Hs k ; VL Datenbank-Implementierungstechniken 5 42

Vergleich der Techniken s s s r r r Nested-Loops-Join Merge-Join Hash-Join VL Datenbank-Implementierungstechniken 5 43