09.02.2013 Aufrufe

pdf (870 Kb) - Fachgebiet Datenbanken und Informationssysteme

pdf (870 Kb) - Fachgebiet Datenbanken und Informationssysteme

pdf (870 Kb) - Fachgebiet Datenbanken und Informationssysteme

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!