From b448cf9056fff67f77c87b22270f5c56c83e8eb2 Mon Sep 17 00:00:00 2001 From: Luis Gerhorst Date: Sun, 11 Feb 2018 17:53:43 +0100 Subject: [PATCH] Hash-Verbund Aufgabenstellung anpassen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Für Herleitung der Veränderungen siehe eingefügtem Kommentar. Relation S etwas angepasst damit es beim Join über x auch Treffer gibt. --- IDB/klausur_ws1516/klausur_idb_WS1516.tex | 78 ++++++++--------------- 1 file changed, 26 insertions(+), 52 deletions(-) diff --git a/IDB/klausur_ws1516/klausur_idb_WS1516.tex b/IDB/klausur_ws1516/klausur_idb_WS1516.tex index e2608f8..8993b1a 100644 --- a/IDB/klausur_ws1516/klausur_idb_WS1516.tex +++ b/IDB/klausur_ws1516/klausur_idb_WS1516.tex @@ -429,7 +429,7 @@ static char *read(char* segment_identifier, struct tid tid) { \hline 4 & G\\ \hline - 14 & A\\ + 13 & A\\ \hline 8 & F\\ \hline @@ -445,17 +445,17 @@ static char *read(char* segment_identifier, struct tid tid) { \hline x & y\\ \hline - 14 & C\\ + 13 & C\\ \hline - 3 & U\\ + 2 & U\\ \hline 6 & Z\\ \hline - 9 & D\\ + 8 & D\\ \hline - 11 & A\\ + 4 & A\\ \hline - 14 & B\\ + 0 & B\\ \hline 29 & W\\ \hline @@ -466,7 +466,23 @@ static char *read(char* segment_identifier, struct tid tid) { Mache einen Hash-Verbund Inner Join mit S.x = R.x, die Zwischenergebnisse der einzelnen Schritte (also das Ergebnis \textbf{nach} einem Schritt) muessen angegeben werden. Hashfunktion - ist $h(k) = k mod 2$.\\\hrule \vspace{1cm} + ist $h(k) = k mod 2$. Ein Bucket fasst maximal 2 Tupel, verwenden + Sie keine Überlaufbuckets. Ist die Hash-Tabelle gefüllt kann die + verbleibende Relation in einem Schritt sequentiell durchlaufen + werden.\\\hrule \vspace{1cm} + +% Beim Lesen: So lange Tupel aus R (der kleineren Relation) in die Hashtabelle +% eintragen bis wir deren Limit erreicht haben (aka wir bräuchten ein +% Überlaufbucket, das ist ja aber nicht erlaubt). Beim ersten Lesen kommen wir +% also bis einschließlich (13, A), stände hier eine 14 kämen wir nur bis (4, G) +% und hätten somit mehr als 2 Abschnitte. + +% Beim Probing: Die komplette Relation S durchlaufen (die Frage ob das mit +% mehreren oder einem Blockzugriff geht bleibt offen). Jeden Treffer in die +% Ergebnisrelation eintragen. + +% Da beim Lesen nur die Hashtabelle und beim Probing nur die Ergebnisrelation +% geändert werden kann man die andere Vorlage jeweils weglassen. \textbf{1. Lesen}\\ @@ -480,30 +496,9 @@ static char *read(char* segment_identifier, struct tid tid) { \end{tabularx} \vspace{1cm} - - Ergebnisrelation:\\ - \begin{tabularx}{10cm}{|X|X|X|X|} - \hline - S.x & S.y & R.x & R.y\\ - \hline - \rule{0cm}{25mm} & & & \\ - \hline - \end{tabularx} - \vspace{1cm} \newpage \textbf{2. Probing}\\ - Hashtabelle:\\ - \begin{tabularx}{5cm}{|X|X|} - \hline - 0 & 1\\ - \hline - \rule{0pt}{2cm} & \\ - \hline - \end{tabularx} - - \vspace{1cm} - Ergebnisrelation:\\ \begin{tabularx}{10cm}{|X|X|X|X|} \hline @@ -523,38 +518,17 @@ static char *read(char* segment_identifier, struct tid tid) { \rule{0pt}{2cm} & \\ \hline \end{tabularx} - - \vspace{1cm} - - Ergebnisrelation:\\ - \begin{tabularx}{10cm}{|X|X|X|X|} - \hline - S.x & S.y & R.x & R.y\\ - \hline - \rule{0cm}{25mm} & & & \\ - \hline - \end{tabularx} - \vspace{1cm} -\newpage - \textbf{4. Probing}\\ - Hashtabelle:\\ - \begin{tabularx}{5cm}{|X|X|} - \hline - 0 & 1\\ - \hline - \rule{0pt}{2cm} & \\ - \hline - \end{tabularx} - \vspace{1cm} + + \textbf{4. Probing}\\ Ergebnisrelation:\\ \begin{tabularx}{10cm}{|X|X|X|X|} \hline S.x & S.y & R.x & R.y\\ \hline - \rule{0cm}{25mm} & & & \\ + \rule{0cm}{50mm} & & & \\ \hline \end{tabularx} \vspace{1cm}