pdf (870 Kb) - Fachgebiet Datenbanken und Informationssysteme
pdf (870 Kb) - Fachgebiet Datenbanken und Informationssysteme
pdf (870 Kb) - Fachgebiet Datenbanken und Informationssysteme
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
3.3. JOIN-METHODEN (✶P , ⊲⊳P ) 27<br />
Es ist offensichtlich, daß die Komplexität des gerade beschriebenen Verb<strong>und</strong>es<br />
(Laufzeit bei gleichen Eingabelängen O(n 2 )) vom Aufwand des Zugriffes auf die<br />
Eingabeströme abhängt. Deshalb gibt es eine Vielzahl von Verbesserungsmöglichkeiten.<br />
Die erste mögliche Zugriffsoptimierung liegt darin, statt der Durchführung der<br />
Schleifeniteration auf Elementbasis ganze Cluster als Schleifengranulat zu verwenden,<br />
die je nach Blockgröße aus einer bestimmten Elementanzahl bestehen.<br />
Aufgr<strong>und</strong> der Tatsache, daß mit Hilfe dieser Verfahrensänderung die Zahl der<br />
Schleifeniterationen drastisch minimiert werden kann, reduziert sich die Komplexität<br />
erheblich.<br />
Darüberhinaus ist die Schleifeniteration auch kombinierbar mit Indexzugriffen,<br />
wobei es unwichtig ist, welche Zugriffsstruktur verwendet wird (Index- oder Hash-<br />
Strukturen).<br />
3.3.2 Index-Join (✶Index p )<br />
Eine durch die Nutzung eines Index verbesserte Verb<strong>und</strong>operation wird Index-<br />
Join genannt. Dabei wird ein Index auf dem Joinattribut einer oder beider Relationen<br />
als vereinfachte Zugriffsmethode benutzt. Manchmal lohnt sich sogar die<br />
Schaffung eines Indexes, um den Zugriff zu beschleunigen. Es sollte auch erwähnt<br />
werden, daß die Iteratoren TID-Folgen liefern <strong>und</strong> nicht wie die anderen Implementierungen<br />
Tupel wieder zurückgeben. Die Index-Join Varianten stellen sich<br />
mit Iteratoren wie folgt dar (siehe Tabelle 3.8).<br />
iterator ✶ Rel,Index<br />
p<br />
open<br />
next<br />
• Falls TID-Folge nicht vorhanden, hole nächstes Tupel aus der linken Eingabe,<br />
schlage Joinattributwert des linken Tupels im Index nach, setze Zeiger auf den<br />
ersten Eintrag der dadurch erhaltenen TID-Folge<br />
• Falls TID-Folge vorhanden, setze Zeiger auf den nächsten linken TID<br />
• Schlage passendes Tupel zum aktuellen TID nach<br />
• Bilde Join <strong>und</strong> gib das Jointupel aus<br />
close<br />
Abbildung 3.8: Relationen-Index-Join-Iterator