Berechnung des Spatial Joins/Join Operation

82
Berechnung des Spatial Joins/Join Operation Spatial Join • aufgeteilt in zwei Schritte: • Filter Step • Refinement Step • Filter Step: • Minimum Bounding Rectangle (mbb) • Plane Sweep Algorithmus • Ergebnis: Kandidatenmenge • Refinement Step: • Entfernung der mbbs und vergleich der eigentli Objekte

description

Spatial Join. Berechnung des Spatial Joins/Join Operation. aufgeteilt in zwei Schritte:. Filter Step Refinement Step. Filter Step:. Minimum Bounding Rectangle (mbb) Plane Sweep Algorithmus Ergebnis: Kandidatenmenge. Refinement Step:. - PowerPoint PPT Presentation

Transcript of Berechnung des Spatial Joins/Join Operation

Page 1: Berechnung des Spatial Joins/Join Operation

Berechnung des Spatial Joins/Join Operation

Spatial Join

• aufgeteilt in zwei Schritte:

• Filter Step• Refinement Step

• Filter Step: • Minimum Bounding Rectangle (mbb)

• Plane Sweep Algorithmus • Ergebnis: Kandidatenmenge

• Refinement Step:

• Entfernung der mbbs und vergleich der eigentlichen Objekte

Page 2: Berechnung des Spatial Joins/Join Operation

Sweep Algorithmen

Spatial Join

• Plane-Sweep-Technik verbreitetes Verfahren um den Schnitt zwischen Objekten zu bestimmen • Um das Rechteck-Schnitt Problem zu lösen, betrachtet man zunächst das Segment-Schnitt Problem• Gegeben: Menge horizontaler und vertikaler Streifen• Gesucht: alle Paare sich schneidender Segmente• Vertikale Gerade, genannt Sweep- Linie, wird von links nach rechts durch die Ebene geschoben. Dabei wird der Schnitt der Geraden mit der Objektmenge beobachtet

Page 3: Berechnung des Spatial Joins/Join Operation

Sweep Algorithmen

Spatial Join

• Alle aktuell die Sweep-Linie schneidenden Elemente werden im Speicher gehalten

Sweepline

Vertikales Segment

X-Achse

Y-Achse

Page 4: Berechnung des Spatial Joins/Join Operation

Sweep Algorithmen

Spatial Join

• Speichere alle Paare, sich schneidende Segmente, in einer Ergebnismenge ab

Page 5: Berechnung des Spatial Joins/Join Operation

Rechteckschnitt-Problem

Spatial Join

• Drei mögliche Lagen der überlappenden Rechtecke

1. 2.

3.

Page 6: Berechnung des Spatial Joins/Join Operation

Rechteckschnitt-Problem

Spatial Join

1. 2.

• Mittels Segmentschnitt-Problem können die Fälle 1 und 2 gelöst werden

Page 7: Berechnung des Spatial Joins/Join Operation

Rechteckschnitt-Problem

Spatial Join

3.

• Kann gelöst werden, indem in jedem Rechteck ein innerer Punkt ausgewählt wird

• ist ein Punkt in einem anderen Rechteck enthalten, dann überschneiden sich auch die Rechtecke

Page 8: Berechnung des Spatial Joins/Join Operation

Rechteckschnitt-Problem

Spatial Join

• ist ein Punkt in einem anderen Rechteck enthalten, dann überschneiden sich auch die Rechtecke

• Ergebnis ist Reduktion auf das Punkteinschlußproblem

• Gesucht sind alle Punkte, die links und rechts sowie oben und unten von Segmenten eingeschlossen sind

• Zwei Schritte:• Ergebnisbildung entlang der x-Achse• Überprüfung entlang der y-Achse

Page 9: Berechnung des Spatial Joins/Join Operation

Rechteckschnitt-Problem

Spatial Join

Page 10: Berechnung des Spatial Joins/Join Operation

Partition Based Spatial Merge Join

Spatial Join

• Annahme:

• R und S sind die Eingaben des Joins• Eingaben sind Folge von Tupeln• jedes Tupel hat räumliches Attribut, welches im Join benutzt wird• jedes Tupel hat eindeutigen Identifizierer

OID des Tupels

Page 11: Berechnung des Spatial Joins/Join Operation

Partition Based Spatial Merge Join

Spatial Join

• Filter Step:

• Einlesen aller Tupel der ersten Relation R• Key-Pointer Element bestehend aus OID und mbb RKP

• RKP als temporäre Relation auf der Festplatte speichern• Identisch für Eingabe S• Ziel: mbbs in RKP finden, die mit einem beliebigen

mbb aus SKP in Beziehung stehen• Planesweep Algorithmuen bestimmen alle mbbs aus RKP

und SKP die überlappen und fügen sie der Ergebnismenge hinzu

Page 12: Berechnung des Spatial Joins/Join Operation

Partition Based Spatial Merge Join

Spatial Join

• Filter Step:

• für passende Paare wird die OID Information herausge- zogen und das OID-Paar wird zur Ausgabe dieses Schrittes hinzugefügt

Page 13: Berechnung des Spatial Joins/Join Operation

Partition Based Spatial Merge Join

Spatial Join

• Filter Step:

SweeplineErgebnismenge

Page 14: Berechnung des Spatial Joins/Join Operation

Partition Based Spatial Merge Join

Spatial Join

• Filter Step:

• Partitionen bilden, falls RKP und SKP nicht vollständig in den Speicher passen R1

KP, R2KP... RP

KP S1KP, S2

KP... SPKP

Universum Partitionen

Page 15: Berechnung des Spatial Joins/Join Operation

Partition Based Spatial Merge Join

Spatial Join

• Filter Step:

• Partitionen werden so gebildet, dass für jedes Schlüssel- element in einer Partition Ri

KP alle Schlüsselelemente aus SKP, die ein überlappendes mbb besitzen, in der zugehörigen Si

KP Partition vorhanden sind• Größe der einzelnen Partitionen so gewählt, dass für jedes i Ri

KP und SiKP simultan, komplett in den

Speicher passen

• Um Partitionen zu bilden, wird Partitionierungsfunktion gebildet

Page 16: Berechnung des Spatial Joins/Join Operation

Partition Based Spatial Merge Join

Spatial Join

• Filter Step:

• Partitionierungsfunktion:

• Algorithmus bestimmt das Universum der Eingabe• Unterteilung des Universums in P Bereiche• Anwendung der räumlichen Partitionierungsfunktion auf das mbb eines Schlüsselelementes

Page 17: Berechnung des Spatial Joins/Join Operation

Partition Based Spatial Merge Join

Spatial Join

• Das Key-Pointer Element wird dann in jeder überlappten Partition eingefügt

Partition 1 Partition 2

Partition 3 Partition 4

• Bestimmung der Anzahl der benötigten Partitionen:

M

SizeSRP ptrKey*||)||||(||

Page 18: Berechnung des Spatial Joins/Join Operation

Partition Based Spatial Merge Join

Spatial Join

• dieser Ansatz kann zu sehr unterschiedlichen Verteilungen der mbbs führen

• besser: Universum in NT-Teile zerlegen, wobei NT P• Teile werden von links oben nach rechts unten von 0 bis NT - 1 nummeriert

Page 19: Berechnung des Spatial Joins/Join Operation

Partition Based Spatial Merge Join

Spatial Join

• nun sortiert man diese Teile den einzelnen P Partitionen zu, wozu man beispielsweise Hashing benutzt• Um diese Partitionierung auf mbbs anzuwenden, muss man alle• Teile, die mit dem mbb überlappen bestimmen und die dazuge- hörigen key-pointer Elemente in die dazugehörigen Partitionen einfügen• Überlappt ein ein mbb mit Teilen von mehreren Partitionen, so wird sein key-pointer natürlich in allen Partitionen eingefügt

Page 20: Berechnung des Spatial Joins/Join Operation

Partition Based Spatial Merge Join

Spatial Join

• man erreicht eine bessere Verteilung der mbbs, woraus allerdings auch ein erhöhter Speicherverbrauch resultiert

• Aufteilung mit 3 Partitionen und 12 Teilen

Page 21: Berechnung des Spatial Joins/Join Operation

Partition Based Spatial Merge Join

Spatial Join

• Refinement Step:

• Einlesen der Ergebnismenge des Filter Steps• Ergebnis: Relation, deren Tupel die Form <OIDR,OIDS> haben, sodass die mbbs aller Paare sich überlappen • Sortierung der OID Paare

• OIDR als Primärschlüssel• OIDS als Sekundärschlüssel

• Während der Sortierung werden auch die Duplikate eliminiert• Es werden so viele R Tupel zusammen mit dem dazuge- hörigen Array von <OIDR,OIDS> Paaren von der Fest- platte gelesen, wie in den Speicher passen

Page 22: Berechnung des Spatial Joins/Join Operation

Partition Based Spatial Merge Join

Spatial Join

• Refinement Step:• Danach leitet man die Pointer um, damit sie auf die eigentlichen Tupel zeigen und macht dann dasselbe mit den dazugehörigen Tupeln aus S und vergleicht dann die eigentlichen Tupel auf Überschneidung

Page 23: Berechnung des Spatial Joins/Join Operation

Scalable Sweeping Based Spatial Join

Spatial Join

• Algorithmus, welcher auf dem PBSM basiert• auch hier wird die Eingabe in einzelne Partitionen aufgeteilt; der Partitionierungsschritt wird allerdings nur ausgeführt, wenn er wirklich benötigt wird• Partitionen werden nur entlang einer Achse ausgerichtet• benötigt wird lediglich die Sweep-Struktur, nicht die Daten im Hauptspeicher • bei einer Datengröße von N beträgt die Sweep Struktur nur noch N)O(

Page 24: Berechnung des Spatial Joins/Join Operation

Scalable Sweeping Based Spatial Join

Spatial Join

• das bietet gute Overall-Performance und dennoch Worst-Case Effizienz• der eigentliche Algorithmus wird in zwei Schritten ausgeführt:

• Eindimensionaler Fall: Finde alle Überschneidungen zwischen zwei Sätzen

von Intervallen; die Daten

werden anhand einer Achse vejoint• Zweidimensionaler Fall: ausgehend vom Ergebnis des

eindimensionalen Falles werden

die Daten anhand der zweiten

Achse überprüft

Page 25: Berechnung des Spatial Joins/Join Operation

Scalable Sweeping Based Spatial Join

Spatial Join

• Eindimensionaler Fall: Intervall Join

X-Achse

• jedes Intervall oder ist definiert durch untere Schranke pmin und obere Schranke pmax

• Problem: alle Überschneidungen zwischen einem Intervall in R und und einem in S zu finden

Rp Sp

Page 26: Berechnung des Spatial Joins/Join Operation

Scalable Sweeping Based Spatial Join

Spatial Join

• Eindimensionaler Fall: Intervall Join

• Annahme: Intervalle p aus R und S sortiert nach ihren unteren Schranken in einer Liste L• dazu sind O(n logm n) Schritte erforderlich • O(n+t) I/O Operationen für den restlichen Algorithmus

Page 27: Berechnung des Spatial Joins/Join Operation

Scalable Sweeping Based Spatial Join

Spatial Join

• Algorithmus Intervall Join:

1) Durchsuche die Liste anhand der aufsteigenden unteren Schranken und erhalte dabei zwei, Anfangs leere, Listen LR und LS mit „aktiven“ Intervallen aus R und S. Um es genauer zu sagen, mache mit jedem Intervall p in L folgendes:

a) Wenn p R, dann füge p zu LR hinzu und suche durch die ganze Liste LS

Wenn ein Intervall s in LS sich mit p überschneidet, dann gib die Überschneidung aus und behalte s in LS, sonst lösche s aus LS

b) Wenn p S, dann füge p zu LS hinzu und suche durch die ganze Liste LR

Wenn ein Intervall r in LR sich mit p überschneidet, dann gib die Überschneidung aus und behalte r in LR, sonst lösche r aus LR

Page 28: Berechnung des Spatial Joins/Join Operation

Scalable Sweeping Based Spatial Join

Spatial Join

• Zweidimensionaler Fall: Rechteck-Join • jedes Rechteck wird durch eine untere Schranke auf der

x-Achse und auf der y-Achse definiert, sowie durch eine obere Schranke sowohl auf der x, als auch auf der y-Achse• Rechtecke anhand ihrer unteren Schranken in Liste L sortiert

Page 29: Berechnung des Spatial Joins/Join Operation

Scalable Sweeping Based Spatial Join

Spatial Join

• Algorithmus Rechteck Join: 1) Partitioniere den zweidimensionalen Raum in k vertikale Streifen, so dass

in jedem Streifen max. 2N/k Rechtecke anfangen oder aufhören, für ein noch zu bestimmendes k2) Ein Rechteck wird als klein bezeichnet, wenn es komplett in einem einzigen Streifen enthalten ist. Sonst wird es als groß bezeichnet. Teile jedes große Rechteck in exakt 3 Teile, zwei Endstücke im ersten und letzten Streifen der Überschneidung und ein Mittelstück dazwischen. Dieses Mittelstück wird an die Anzahl der Streifen angepaßt, also bei allen eingefügt. Das Problem wird in zwei Schritten gelöst:

a) Zuerst berechne alle Überschneidungen zwischen einem Mittelstück aus R und einem Mittelstück aus S und alle Überschneidungen zwischen einem Mittelstück aus R und einem kleinen Rechteck aus S oder einem Mittelstück aus S und einem kleinen Stück aus R

Page 30: Berechnung des Spatial Joins/Join Operation

Scalable Sweeping Based Spatial Join

Spatial Join

2a) Durchsuche die Liste L in aufsteigender Reihenfolge nach unteren

Schranken. Für jedes Intervall p in L tue folgendes:

1. Wenn p P und p ist komplett enthalten in einem Streifen i, dann füge p in Lr

i,i ein. Durchsuche jede Liste LS h,j mit h<i<j, berechne

die Überschneidungen und lösche jedes Element der Liste, das nicht mit p überlappt. Schreibe p auf die Festplatte um sie später in den rekursiven Suchproblemen benutzen zu können

2. Wenn p R und p ist groß und die Mittelstücke bestehen aus den den Streifen i, i+1,...j dann füge p in Lr

i-1,j+1 ein. Durchsuche dann die ganzen Listen LS

i´,j,´ mit i<j´ und j>i´, berechne die Überschnei- dungen und lösche jedes Element einer Liste, das nicht mit p überlappt. Speichere die Endstücke von p auf der Festplatte um sie später in den entsprechenden Subproblemen einsetzen zu können

Page 31: Berechnung des Spatial Joins/Join Operation

Scalable Sweeping Based Spatial Join

Spatial Join

2a) Durchsuche die Liste L in aufsteigender Reihenfolge nach unteren

Schranken. Für jedes Intervall p in L tue folgendes:

3. Wenn p R und p ist klein, dann führe 1. aus und vertausche die Rollen von R und S4. Wenn p R und p ist groß, dann führe 2. aus und vertausche die Rollen von R und S

2b) In jedem Streifen berechne rekursiv alle Überschneidungen zwischen einem Endstück oder kleinem Rechteck aus R und einem Endstück oder kleinen Rechteck aus S

Page 32: Berechnung des Spatial Joins/Join Operation

Scalable Sweeping Based Spatial Join

Spatial Join

• man geht anhand der unteren Schranken vor und berechnet rekursiv die Überschneidungen; für Mittelstücke geht dies besonders einfach, da sie den kompletten Streifen abdecken

• daß sich in diesem Streifen alle Rechtecke, ob klein oder groß, mit dem obersten Über- schneiden, ist offensichtlich

Page 33: Berechnung des Spatial Joins/Join Operation

Scalable Sweeping Based Spatial Join

Spatial Join

• daß sich in diesem Streifen alle Rechtecke, ob klein oder groß, mit dem obersten Über- schneiden, ist offensichtlich

• kompliziert wird es für Endstücke oder kleine Rechtecke; diese könne sich überschneiden, müssen es aber nicht

Page 34: Berechnung des Spatial Joins/Join Operation

Spatial Join/Algorithmen

Spatial Join

• Partition Based Spatial-Merge Join

• Scalable Sweeping-Based Spatial Join

Page 35: Berechnung des Spatial Joins/Join Operation

Sweep Algorithmen

Spatial Join

• Ablauf:

• mbbs gemäß ihrer minimalen Koordinaten bezüglich einer Dimension sortieren• Lauflinie wird über den Datenraum bewegt, die senkrecht auf der Achse steht, bezüglich der sortiert wurde

• Plane-Sweep-Technik verbreitetes Verfahren um den Schnitt zwischen Objekten zu bestimmen

Page 36: Berechnung des Spatial Joins/Join Operation

Join Operation

Spatial Join

• Algorithmus:

• Sweeplinie läuft durch den relevanten Teilraum von R2

• trifft Sweeplinie auf untere Kante eines Rechteckes r (OE r P) merkt man sich das r• aktive Rechtecke aus Q, deren obere Kanten bereits überschritten sind werden gelöscht• Vergleich der Intervalle der verbliebenen Rechtecke aus Q mit dem Intervall von r• das betreffende Rechteck aus Q schneidet sich mit r wenn es zu einem nicht leeren Schnitt kommt

Page 37: Berechnung des Spatial Joins/Join Operation

Join Operation

Spatial Join

• Algorithmus:

• Datenstruktur muß folgende Methoden unterstützen:

• Insert(D,r) Rechteck r in D speichern• Delete(D,y) Alle Rechtecke r aus D löschen, für die gilt ry

max < y• Query(D,r) gebe alle die Rechtecke aus D zurück, deren Intervalle mit dem von r einen nicht leeren Schnitt haben

Page 38: Berechnung des Spatial Joins/Join Operation

Partition Based Spatial Merge Join

Spatial Join

• Refinement Step:

Part. 1 Part. 2

Page 39: Berechnung des Spatial Joins/Join Operation

Scalable Sweeping Based Spatial Join

Spatial Join

• Man bestimmt also die Kandidaten, die man später noch genauer betrachten müßte, da sie für eine Überlappung in Frage kommen

Page 40: Berechnung des Spatial Joins/Join Operation

Plane-Sweep und das Gesetz der Quadratwurzel

Spatial Join

• Großer Einfluß von Plane-Sweep Algorithmus auf die Effizienz von Spatial Join Operationen• benötigter Speicher bestimmt durch die maximale Anzahl Rechtecke, die von einer einzelnen, horizontalen Linie geschnitten werden• diese Anzahl = maximale Überlappung• i.d.R ist maximale Überlappung << als die Summe der Rechtecke• bei einer Datengröße von N ist die Datengröße der maximal überlappenden Rechtecke von irgendeiner Linie gleich• Der SSSJ besteht aus einer Kombination von dem theoretisch optimalen Rechteck Join mit einer effizienten Plane.Sweep Technik

N)O(

Page 41: Berechnung des Spatial Joins/Join Operation

Plane-Sweep und das Gesetz der Quadratwurzel

Spatial Join

• SSSJ führt eine anfängliche Sortierung durch und versucht dann direkt den Plane-Sweep durchzuführen• der vertikale Partitionierungsschritt wird nur benutzt, wenn die Sweep Struktur nicht in den Speicher passt. • Arten von Plane-Sweep Algorithmen:

• Tree_Sweep• List_Sweep• Striped_Sweep und PBSM-Algorithmus• Forward_Sweep

Page 42: Berechnung des Spatial Joins/Join Operation
Page 43: Berechnung des Spatial Joins/Join Operation

Spatial

Join

GIS-Seminar Wintersemester 01/02

Vortrag: Carsten Breuer

Page 44: Berechnung des Spatial Joins/Join Operation

Spatial Join

Spatial Join

• paarweise Verknüpfung zweier Mengen von geometrischen Objekten deren räumliche Merkmale eine räumliche Aussage erfüllen

• verschiedenen Typen räumlicher Aussagen

• wichtigste Join- Operation in einem GIS

• bedeutendste Varianten:

• Intersection Join• Overlap Join

Page 45: Berechnung des Spatial Joins/Join Operation

Spatial Join

Spatial Join

• Einsatzmöglichkeiten: alle Arten von Anfragen und Operationen, die geometrische Daten miteinander in Verbindung setzen

• Grundlage für die effiziente Ausführung des Map Overlays

• kann dazu dienen, aus mehreren Geo- Objekten ein neues Ob- jekt zu generieren oder um räumliche Abhängigkeiten zwischen Geo- Objekten festzustellen

• das Join- Prädikat und die betroffenen Attribute sind geometri- schen Typs (Bsp. für Attributstypen: Streckenzüge, Flüsse,..)

Page 46: Berechnung des Spatial Joins/Join Operation

Spatial Join/ Beispiel 1

Spatial Join

• gegeben: Relationen Städte und Wälder

• die Anfrage „finde alle Wälder, die in einer Stadt liegen“ ist ein möglicher Spatial Join auf den Relationen Wälder und Städte mit dem Prädikat „liegt in“

• liegt ein Wald „w“ in einer Stadt „s“, so wäre das Paar (w,s) in der Ergebnismenge des Spatial Joins

Page 47: Berechnung des Spatial Joins/Join Operation

Spatial Join/ Beispiel 2

Spatial Join

• Kombination zweier Karten mit verschiedenen Typen von Ob- jekten

• Kombination einer Nutzungskarte mit einer Niederschlagskarte

• Anfrage „finde alle Waldgebiete mit mindestens 20 Litern durchschnittlichem Regenfall pro Monat“

Page 48: Berechnung des Spatial Joins/Join Operation

Berechnung des Spatial Joins

Spatial Join

zwei Schritte:

• Filter Step• Refinement Step

Filter Step: • Minimum Bounding Box (mbb)

• Plane Sweep Algorithmus • Ergebnis: Kandidatenmenge

Refinement Step:

• Entfernung der mbbs und Vergleich der eigentlichen Objekte

Page 49: Berechnung des Spatial Joins/Join Operation

Strategien und Algorithmen für Spatial Joins

Spatial Join

• Lineare Strukturen jede Beziehung mit einer linearen Struktur indiziert

z-geordnete Bäume• R-Bäume

synchronisiertes Durchgehen beider Bäume

• Einzel-Index

indizierte Nested Loop Methode

• Kein Index

vereinfachte Hash-Join Methode

Page 50: Berechnung des Spatial Joins/Join Operation

z-geordneter Spatial Join

Spatial Join

Voraussetzung: beide Beziehungen sind z-geordnet z-geordneter Baum als Index

Blätter von jedem Baum: Liste L von Einträgen der Form [z,oid] die Zellen von einer Zerlegung müssen nicht unbedingt minimal sein

die Beziehungen teilen sich den gleichen Raum

Zelle mit dem key z ist in einer mit dem key z´ enthalten (oder ist gleich), wenn z´ ein Präfix von z ist und wenn z´ z

Page 51: Berechnung des Spatial Joins/Join Operation

z-geordneter Spatial Join

Spatial Join

Algorithmus

• Verbinden der Listen L1/L2 der Eingaben die sich auf die beiden Relationen beziehen

• Paar von Eingaben von den beiden Listen sind Kandidaten für den Verfeinerungsschritt, wenn ein key ein Präfix des anderen ist

• Vor dem Verfeinerungsschritt: Kandidatengruppen von Objekt ids müssen sortiert werden um Duplikate zu entfernen

Page 52: Berechnung des Spatial Joins/Join Operation

z-geordneter Spatial Join

Spatial Join

Algorithmus

Beispiel

Wenn z = 30 dann ist z´= 3033333 (angenommene Tiefe von 7 für Zerlegung)

Kandidatengruppen: (A,D), (A,E), (A,F), (B,E), (B,F), (C,H) und (C,I)

zwei Stacks erforderlich

C

F H ID

A

B

E G

zA ssc(zA) z axis

z´= scc(z)

Page 53: Berechnung des Spatial Joins/Join Operation

z-geordneter Spatial Join

Spatial Join

Algorithmus scannen der beiden Listen

zwei mögliche Ereignisse:

• Eingabe Ereignisse

• Ausgabe Ereignisse

Sweeping einer vertikalen Linie entlang der z-Achse

Page 54: Berechnung des Spatial Joins/Join Operation

z-geordneter Spatial Join

Spatial Join

Beispiel:

Schritt 1:

• Eingabe von A• current1 = B• S1 = {A}• current2 = D• S2 = {}

C

F H ID

A

B

E G

zA ssc(zA) z axis

C

F H ID

A

B

E G

zA ssc(zA) z axis

Page 55: Berechnung des Spatial Joins/Join Operation

z-geordneter Spatial Join

Spatial Join

Schritt 2:

• Eingabe von D• current1 = B• S1 = {A}• current2 = E• S2 = {D}

Schritt 3:

• Ausgabe von D• current1 = B• S1 = {A}• current2 = E• S2 = {}

C

F H ID

A

B

E G

zA ssc(zA) z axis

C

F H ID

A

B

E G

zA ssc(zA) z axis

Page 56: Berechnung des Spatial Joins/Join Operation

z-geordneter Spatial Join

Spatial Join

Schritt 4:

• Eingabe von B• current1 = C• S1 = {B,A}• current2 = E• S2 = {}

Schritt 5:

• Eingabe von E• current1 = C• S1 = {B,A}• current2 = F• S2 = {E}

C

F H ID

A

B

E G

zA ssc(zA) z axis

C

F H ID

A

B

E G

zA ssc(zA) z axis

Page 57: Berechnung des Spatial Joins/Join Operation

z-geordneter Spatial Join

Spatial Join

Schritt 6:

• Eingabe von F• current1 = C• S1 = {B,A}• current2 = G• S2 = {F,E}

Schritt 7:

• Ausgabe von B• current1 = C• S1 = {A}• current2 = G• S2 = {F,E}

C

F H ID

A

B

E G

zA ssc(zA) z axis

C

F H ID

A

B

E G

zA ssc(zA) z axis

Page 58: Berechnung des Spatial Joins/Join Operation

z-geordneter Spatial Join

Spatial Join

Schritt 8:

• Ausgabe von A• current1 = C• S1 = {}• current2 = G• S2 = {F,E}

Weitere Schritte analog

C

F H ID

A

B

E G

zA ssc(zA) z axis

Page 59: Berechnung des Spatial Joins/Join Operation

z-geordneter Spatial Join

Spatial Join

Algorithmus Zordering Join

• es werden der Reihe nach die Ereignisse verarbeitet, die sich aus den Listen L1/L2 bzw. von den Säulen S1 und S2 ergeben

begin result: Set of pairs of ids, initially empty while not (eof(L1) and empty (S1) and eof(L2) and empty (S2)) begin event = MIN (CURRENT(L1), SCC(top(S1)),

CURRENT(L2), SCC(top(S2))) if (event = CURRENT(L1))then //left bound of a rectangle Entry (L1,S1) else if (event = SCC(top(S1)))then //right bound of a rectangle result += EXIT (S1,S2) else if (event = CURRENT(L2))then //left bound of a rectangle ENTRY (L2, S2) else if (event = SCC(top(S2)))then //right bound of a rectangle result += EXIT (S2,S1); end while sort result; remove duplicates; return resultend

Page 60: Berechnung des Spatial Joins/Join Operation

z-geordneter Spatial Join

Spatial Join

• jedes z-geordnete Blatt eines Baumes nur einmal gelesen

• Zahl der I/O´s: n1 + n2 +k

• Voraussetzung: jeder Stack wird im Hauptspeicher gehalten

• Worst Case: Algorithmus-Komplexität quadratisch zur Eingabegröße

• In allen Fällen ist eine Eliminierung der Duplikate erforderlich

Page 61: Berechnung des Spatial Joins/Join Operation

Verbinden zweier R-Bäume

Spatial Join

• Algorithmus, bei dem beide Relationen entweder mit einem R-Baum, einem R* Baum oder jeder anderen Variante indiziert sind

• Minimierung der I/O und CPU-Kosten

• drei Varianten des Algorithmus

Page 62: Berechnung des Spatial Joins/Join Operation

Verbinden zweier R-Bäume

Spatial Join

Algorithmen

• der einfachste benutzt eine Tiefensuche

• Anfang an den beiden Wurzeln

• bei jedem Schritt wird ein Knoten N1 eines Baumes mit einem Knoten N2 des anderen Baumes verglichen

• Berechnung der Gruppen von überlappenden Eingaben (e1,e2)

• wenn das Blatt-Level erreicht ist, sind die Paare von Objekt ids gefunden

Page 63: Berechnung des Spatial Joins/Join Operation

Verbinden zweier R-Bäume

Spatial Join

Algorithmus

begin result: set of pairs of ids, initially empty for all e1 in N1 do for all e2 in N2 such that e1.mbb e2.mbb 0 do if (the leaf level is reached) then result += {(e1,e2)} else N´1 = READPAGE (e1.pageID); N´2 = READPAGE (e2.pageID); result += STT (N´1,N´2) end if end for end for return result end

Page 64: Berechnung des Spatial Joins/Join Operation

Verbinden zweier R-Bäume

Spatial Join

• hohe CPU Kosten

• CPU Kosten abhängig von

der Hardware

von der Seitengröße

• Schwächen des Algorithmus:

Nested Loop über den Eingaben von den Knoten

Blindtest jeder Kandidatengruppe

Page 65: Berechnung des Spatial Joins/Join Operation

Verbinden zweier R-Bäume

Spatial Join

1. Optimierung:

• Beschränken des Suchraumes

• Beobachtung: die mbbs der Knoten N1 und N2 decken nicht den gleichen Raum ab

Page 66: Berechnung des Spatial Joins/Join Operation

Verbinden zweier R-Bäume

Spatial Join

I

N1

N2

I = N1.mbb N2.mbb

Ausschluß aller Eingaben außerhalb von I

Page 67: Berechnung des Spatial Joins/Join Operation

Verbinden zweier R-Bäume

Spatial Join

I

N1

N2

1. Schritt: Scannen der Knoten

Markierung der Kandidateneingaben

2. Schritt: Verarbeiten der Kandidateneingaben durch Nested Loop Algorithmus

Page 68: Berechnung des Spatial Joins/Join Operation

Verbinden zweier R-Bäume

Spatial Join

2. Optimierung:

• Plane-Sweep Technik

Page 69: Berechnung des Spatial Joins/Join Operation

Verbinden zweier R-Bäume

Spatial Join

l1 l2

r

b2 b4

b3b1

Beispiel eines simplen plane-sweep für einen Rechteck-Schnitt

Page 70: Berechnung des Spatial Joins/Join Operation

Verbinden zweier R-Bäume

Spatial Join

l1 l2

rb2

b4

b3b1

Beispiel eines simplen plane-sweep für einen Rechteck-Schnitt

• Gegeben: zwei Sätze von Rechtecken

• Gesucht: Schnitt zwischen einem roten und blauen Rechteck

Page 71: Berechnung des Spatial Joins/Join Operation

Verbinden zweier R-Bäume

Spatial Join

l1 l2

r

b2 b4

b3b1

Beispiel eines simplen plane-sweep für einen Rechteck-Schnitt

Page 72: Berechnung des Spatial Joins/Join Operation

Verbinden zweier R-Bäume

Spatial Join

Algorithmus

begin result: set of pairs of ids, initially empty pos1 = 1, pos2 = 1// current positions in N1 and N2

Sort the entries e in N1 and N2 on e.mbb.xmin

while (pos1 |N1| and pos2 |N2|) do begin if (N1[pos1].mbb.xmin < N2[pos2].mbb.xmin) then e = N1[pos1]; p´ = pos2; e´ = N2[p´]

while (e´.mbb.xmin e.mbb.xmax) do begin if (e.mbb e´.mbb 0) then result += {(e.oid, e´.oid)} p´ = p´ + 1; e´ = N2[p´]end dopos1 = pos1 + 1// next entry in N1

else Do as before, permuting the roles of entries of N1 and N2

end if end while return resultend

Page 73: Berechnung des Spatial Joins/Join Operation

Verbinden zweier R-Bäume

Spatial Join

• Mischung von Plane-Sweep und Nested Loop Techniken

• Im Gegensatz zum Nested Loop Algorithmus begrenzt die Sweep-Linie die Anzahl von Rechtecken, die gegeneinander getestet werden müssen

• Algorithmus ist sowohl einfach als auch effizient

• erheblicher Leistungsgewinn

Page 74: Berechnung des Spatial Joins/Join Operation

Räumlicher Hash Verbund

Spatial Join

• Alternative zum externen Plane-Sweep Algorithmus

• Anwendung des Hash-Join-Algorithmus für räumliche Daten

• wenn kein räumlicher Index für die zusammenzuführenden Beziehungen existiert

• Hauptziel: ausgewogene Verteilung der Daten zwischen Buckets am Ende des Prozesses

Page 75: Berechnung des Spatial Joins/Join Operation

Räumlicher Hash Verbund

Spatial Join

O

A

B

C

DBeispiel 1:

• Hash-Funktion teilt den Suchraum in vier Buckets auf

Bucket Ausdehnung

• Rechteck r allen Buckets zugewiesen, deren Ausdehnung r schneiden

• jeder Bucket wird als Rechteck dargestellt

Page 76: Berechnung des Spatial Joins/Join Operation

Räumlicher Hash Verbund

Spatial Join

Beispiel 2:

• jedes Rechteck wird genau einem Bucket zugewiesen

A

B

C

D

O

• Ausdehnung ist so, daß alle zugewiesenen Rechtecke eingeschlossen werden

Page 77: Berechnung des Spatial Joins/Join Operation

Räumlicher Hash Verbund

Spatial Join

Algorithmus für den Overlap Spatial Join

Schritt 1: anfängliches Teilen von R

Anforderungen an die Teilung

A

B

C

D

OZiel:

jedes Rechteck einem Bucket zuteilen

Ausdehnung eines Buckets = mbb all seiner Rechtecke

ungefähr gleiche Anzahl Rechtecke in jedem Bucketjeder Bucket sollte in den Hauptspeicher passenÜberlappen von Bucket Ausdehnungen minimal

Page 78: Berechnung des Spatial Joins/Join Operation

Räumlicher Hash Verbund

Spatial Join

Algorithmus für den Overlap Spatial Join

Schritt 2: zweites Teilen

O

A

B

C

D

• jedes Rechteck aus S einem Bucket der R-Teilung zuteilen dessen Ausdehnung es überlappt

• dieser Schritt führt zu einzelnen überflüssigen Zuteilungen

• Verteilung von S ganz sich ganz anders darstellen als die von R

• Anzahl von Rechtecken aus S in einem Bucket variablel

Page 79: Berechnung des Spatial Joins/Join Operation

Räumlicher Hash Verbund

Spatial Join

Algorithmus für den Overlap Spatial Join

Schritt 3: Verbundphase

• Gegeben: zwei Gruppen von Buckets

• Ziel: jeder Bucket BR muß mit einem Bucket BS zusammengelegt werden

• Ein Bucket muß in den Hauptspeicher passen

• Ergebnisse enthalten keine Duplikate

Page 80: Berechnung des Spatial Joins/Join Operation

Räumlicher Hash Verbund

Spatial Join

Beispiel:

• Teilung der Datengruppe

A

B

C

D

Vier Buckets mit überlappenden Ausdehnungen

11 512

13

8914

10

A

B

C

D

1

2

3

467Inhalt der Buckets:

A = {1, 14, 10}B = {2, 4, 7, 11}C = {3, 8, 9}D = {5, 6, 12, 13}

Page 81: Berechnung des Spatial Joins/Join Operation

Räumlicher Hash Verbund

Spatial Join

Beispiel:

• Teilung der zweiten Datengruppe

Mit den Bucket Ausdehnungendes ersten Datensatzes:

h

e

b

fc gd

a

A

B

C

D

h

e

b

fc gd

a

A´ = {c, d }

B´ = {a, b, d, g }

C´ = {e, g, h }

D´ = {a, e }

Page 82: Berechnung des Spatial Joins/Join Operation

Räumlicher Hash Verbund

Spatial Join

Beispiel:

• zu verbindende Gruppen von Buckets:

Suche nach Gruppen von überlappenden Rechtecken

• [A, A´], [B, B´], [C, C´], [D, D´]

• Verbund von einem Paar von Buckets: