vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

60
Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi Vedúci práce : RNDr. Peter Gurský, PhD.

Upload: minya

Post on 12-Jan-2016

23 views

Category:

Documents


1 download

DESCRIPTION

Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi. Vedúci práce : RNDr. Peter Gurský, PhD. . Ciele Práce. Popísať známe vyhľadávacie algoritmy pre vyhľadávanie najbližších a najlepších objektov nad lokálnymi aj distribuovanými viacrozmernými indexmi  - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Vyhľadávanie najbližších a najlepších objektov nad

paralelnými viacrozmernými indexmi

Vedúci práce : RNDr. Peter Gurský, PhD. 

Page 2: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Ciele Práce

• Popísať známe vyhľadávacie algoritmy pre vyhľadávanie najbližších a �najlepších objektov nad lokálnymi aj distribuovanými viacrozmernými indexmi 

• Analyzovať vhodnosť použitia jednotlivých viacrozmerných indexov pre � �tento typ vyhľadávaní

• Navrhnúť vlastný algoritmus vyhľadávania najlepších objektov nad vybranými typmi viacrozmerných indexov

• Implementovať vybrané indexy a algoritmy vyhľadávania�

• Porovnať rýchlosť vyhľadávania najbližších a najlepších objekov nad naimplementovanými indexmi.

Page 3: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Obsah

• R Strom

• MC R Strom

• Knn Dopyty

• Top k Dopyty

• Záver

Page 4: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

R Strom

je stromová štruktúra na indexovanie viacrozmerných dát na základe ich priestorovej pozície. Pod k-rozmerným dátovým súborom si môžeme predstaviť ľubovoľný objekt z k-rozmerného priestoru s atribútmi. My však budeme pracovať len s obdĺžnikmi a ich viacrozmernými variantmi.

Page 5: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

R Strom

Page 6: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

MC R strom

Page 7: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

MC R strom

„Master“ Strom – Obsahuje nelistové uzly globálneho R stromu, indexuje objekty <MBR, IdServeru>

„Storage“ Strom – Obsahuje časť listových uzlov globálneho R stromu, spolu s príslušnými objektami indexovanými v týchto uzloch.

Page 8: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

MC R Strom, STR algoritmus

Majme k-dimenziálnu postupnosť n (hyper) obdĺžnikov. Nech M je kapacita listu. Túto postupnosť utriedime podľa prvej súradnice ich stredu. Nech P = n/M , zaokrúhlené nahor. Postupnosť rozdelíme na S = P1/k úsekov. Rekurzívne usporiadame každý z úsekov podľa zvyšných k-1 súradníc.

Pozn. delenie postupnosti je len ilustračné

Page 9: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

MC R Strom, STR algoritmus

Majme k-dimenziálnu postupnosť n (hyper) obdĺžnikov. Nech M je kapacita listu. Túto postupnosť utriedime podľa prvej súradnice ich stredu. Nech P = n/M , zaokrúhlené nahor. Postupnosť rozdelíme na S = P1/k úsekov. Rekurzívne usporiadame každý z úsekov podľa zvyšných k-1 súradníc.

Pozn. delenie postupnosti je len ilustračné

Page 10: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

MC R Strom, STR algoritmus

Majme k-dimenziálnu postupnosť n (hyper) obdĺžnikov. Nech M je kapacita listu. Túto postupnosť utriedime podľa prvej súradnice ich stredu. Nech P = n/M , zaokrúhlené nahor. Postupnosť rozdelíme na S = P1/k úsekov. Rekurzívne usporiadame každý z úsekov podľa zvyšných k-1 súradníc.

Pozn. delenie postupnosti je len ilustračné

Delenie postupnosti na S úsekov

Page 11: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

MC R Strom, STR algoritmus

Majme k-dimenziálnu postupnosť n (hyper) obdĺžnikov. Nech M je kapacita listu. Túto postupnosť utriedime podľa prvej súradnice ich stredu. Nech P = n/M , zaokrúhlené nahor. Postupnosť rozdelíme na S = P1/k úsekov. Rekurzívne usporiadame každý z úsekov podľa zvyšných k-1 súradníc.

Pozn. delenie postupnosti je len ilustračné

Utriedenie podpostupností podľa ďalšej (druhej )súradnice

Page 12: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

MC R Strom, STR algoritmus

Majme k-dimenziálnu postupnosť n (hyper) obdĺžnikov. Nech M je kapacita listu. Túto postupnosť utriedime podľa prvej súradnice ich stredu. Nech P = n/M , zaokrúhlené nahor. Postupnosť rozdelíme na S = P1/k úsekov. Rekurzívne usporiadame každý z úsekov podľa zvyšných k-1 súradníc.

Pozn. delenie postupnosti je len ilustračné

Triedenie podľa druhej súradnice hotové, každá podpostupnosť sa opäť rozdelí a utriedi podľa tretej súradnice...

Page 13: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

MC R Strom, STR Packing algoritmus

Majme utriedenú postupnosť vstupných objektov. Túto postupnosť delíme na m úsekov dĺžky N kde N je kapacita listového uzlu. Pre každý úsek vytvárame nový uzol - rodiča, ktorého MBR ohraničuje obdĺžniky všetkých objektov úseku. Rekurzívne opakujeme nad zoznamom rodičov, kým dĺžka výsledného zoznamu nie je 1.

Page 14: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

MC R Strom, STR Packing algoritmus

Majme utriedenú postupnosť vstupných objektov. Túto postupnosť delíme na m úsekov dĺžky M kde M je kapacita listového uzlu. Pre každý úsek vytvárame nový uzol - rodiča, ktorého MBR ohraničuje obdĺžniky všetkých objektov úseku. Rekurzívne opakujeme nad zoznamom rodičov, kým dĺžka výsledného zoznamu nie je 1.

Page 15: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

MC R Strom, STR Packing algoritmus

Majme utriedenú postupnosť vstupných objektov. Túto postupnosť delíme na m úsekov dĺžky M kde M je kapacita listového uzlu. Pre každý úsek vytvárame nový uzol - rodiča, ktorého MBR ohraničuje obdĺžniky všetkých objektov úseku. Rekurzívne opakujeme nad zoznamom rodičov, kým dĺžka výsledného zoznamu nie je 1.

Page 16: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

MC R Strom, Proces Vytvorenia

1. Postupnosť vstupných objektov je utriedená pomocou STR

2. Utriedená postupnosť je rozdelená na m úsekov o dĺžke kapacity listu, pre každý úsek vytvorený ukazovateľ. Úseky rozdistribuované po sieti.

3. Na master serveri vytvárame lokálny strom pomocou STR packing, pričom začíname od najnižšej vrstvy, ktorou sú ukazovatele na jednotlivé stanice

4. Na úložných serveroch vytvárame lokálne stromy už priamo z pridelených dát cez STR packing

Page 17: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

MC R Strom ako množina rovnocenných serverov

Page 18: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Komunikačná Sieť, vytvorenie

Page 19: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Komunikačná Sieť, vytvorenie

S1 pošle Mastrovi žiadosť o pripojenie

Page 20: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Komunikačná Sieť, vytvorenie

Master pošle S1 parametre pre vytvorenie prázdneho stromu

Page 21: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Komunikačná Sieť, vytvorenie

S1 čaká, kým mu budú pridelené dáta

Page 22: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Komunikačná Sieť, vytvorenie

Page 23: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Komunikačná Sieť, vytvorenie

1. Koordinátor pošle čakajúcemu serveru I prislúchajúcu porciu objektov.

2. Koordinátor pošle čakajúcemu serveru I kópiu celého zoznamu ukazovateľov.

3. Koordinátor pošle čakajúcemu serveru I mapu <IdServer, IpAdresa:Port> všetkých serverov v sieti.

Page 24: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Komunikačná Sieť, vytvorenie

Vzájomné prepojenia medzi servermi sa vytvoria nasledovne :

Pre každé id zo (zoznamIdentifikátorov – {idKoordinátora}):

Ak id > mojeId, vytvor klientský soket a požiadaj o pripojenie ku korešpondujúcemu serveru správou INIT_RQS.

Ak id < mojeId, prijmi žiadosť o naviazanie komunikácie zo svojho server soketu. Táto správa nemusí nutne pochádzať od serveru s identifikátorom id.

Page 25: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

MC R Strom ako množina rovnocenných serverov

Page 26: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Knn dopyt

Vstupom je bod A, číslo k.

Výstupom je k najbližších objektov k tomuto bodu A.

Page 27: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Sekvenčný iNN algoritmusknn(Bod pt, PrioritnyRad queue, int k) {

foreach (p in potomok) {

queue.add(p);

}

Object o = queue.poll();

if (o je datovy objekt)

vysledok.add(o)

else o.knn(pt, queue);

if (vysledok.size() == k) return vysledok;

Page 28: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Sekvenčný iNN algoritmusknn(Bod pt, PrioritnyRad queue, int k) {

foreach (p in potomok) {

queue.add(p);

}

Object o = queue.poll();

if (o je datovy objekt)

vysledok.add(o)

else o.knn(pt, queue);

if (vysledok.size() == k) return vysledok;

Page 29: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Sekvenčný iNN algoritmusknn(Bod pt, PrioritnyRad queue, int k) {

foreach (p in potomok) {

queue.add(p);

}

Object o = queue.poll();

if (o je datovy objekt)

vysledok.add(o)

else o.knn(pt, queue);

if (vysledok.size() == k) return vysledok;

Page 30: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Sekvenčný Inn algoritmusknn(Bod pt, PrioritnyRad queue, int k) {

foreach (p in potomok) {

queue.add(p);

}

Object o = queue.poll();

if (o je datovy objekt)

vysledok.add(o)

else o.knn(pt, queue);

if (vysledok.size() == k) return vysledok;

Page 31: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Sekvenčný Inn algoritmusknn(Bod pt, PrioritnyRad queue, int k) {

foreach (p in potomok) {

queue.add(p);

}

Object o = queue.poll();

if (o je datovy objekt)

vysledok.add(o)

else o.knn(pt, queue);

if (vysledok.size() == k) return vysledok;

Page 32: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Sekvenčný Inn algoritmusknn(Bod pt, PrioritnyRad queue, int k) {

foreach (p in potomok) {

queue.add(p);

}

Object o = queue.poll();

if (o je datovy objekt)

vysledok.add(o)

else o.knn(pt, queue);

if (vysledok.size() == k) return vysledok;

Page 33: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Sekvenčný Inn algoritmusknn(Bod pt, PrioritnyRad queue, int k) {

foreach (p in potomok) {

queue.add(p);

}

Object o = queue.poll();

if (o je datovy objekt)

vysledok.add(o)

else o.knn(pt, queue);

if (vysledok.size() == k) return vysledok;

Page 34: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Sekvenčný Inn algoritmusknn(Bod pt, PrioritnyRad queue, int k) {

foreach (p in potomok) {

queue.add(p);

}

Object o = queue.poll();

if (o je datovy objekt)

vysledok.add(o)

else o.knn(pt, queue);

if (vysledok.size() == k) return vysledok;

Page 35: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Top k dopyt

Vstupom je číslo k, kombinačná funkcia C a n preferenčných fuzzy funkcií fi

Výstupom je k najlepších objektov

Page 36: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Top k dopyt, fuzzy funkcia

Page 37: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Top k dopyt

Page 38: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Top k dopyt

Page 39: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Top k dopyt

Queue : RootVýsledok :

Page 40: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Top k dopyt

Queue : B, A, CVýsledok :

Page 41: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Top k dopyt

Queue : A, C, 2, 1Výsledok :

Page 42: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Top k dopyt

Queue : C, 6, 2, 1, 7Výsledok :

Page 43: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Top k dopyt

Queue : 3, 6, 2, 1, 7, 4, 5Výsledok :

Page 44: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Top k dopyt

Queue : 6, 2, 1, 7, 4, 5Výsledok : 3

Page 45: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Top k dopyt

Queue : 2, 1, 7, 4, 5Výsledok : 3, 6

Page 46: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Paralelný Inn algoritmus, variant 1

Page 47: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Paralelný Inn algoritmus, variant 1

Page 48: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Paralelný Inn algoritmus, variant 1

Page 49: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Paralelný Inn algoritmus, variant 1

Page 50: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Paralelný Inn algoritmus, variant 1

Page 51: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Paralelný Inn algoritmus, variant 2

Page 52: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Paralelný Inn algoritmus, variant 2

Page 53: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Paralelný Inn algoritmus, variant 2

Page 54: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Paralelný Inn algoritmus, variant 2

Page 55: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Paralelný Inn algoritmus, variant 2

Page 56: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Paralelný Inn algoritmus, variant 2

Page 57: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Paralelný Inn algoritmus, variant 2

Page 58: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Záver

• Čo mám hotové : Paralelný Index, naimplementované oba varianty odprezentovaných paralelných knn dopytov. (Top k varianty ešte nie)

Page 59: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Literatúra

1, Bin Liu, Wang-Chien Lee, Dik Lun Lee: Supporting Complex Multi-dimensional Queries in P2P Systems, Proceedings of the 25th IEEE International Conference on Distributed Computing Systems (ICSCS’05), 2005 2, A. Guttman, “R-Trees: A Dynamic Index Structure for Spatial Searching”,SIGMOD Conference 19843. N. Beckmann, H.P. Kriegel, R. Schneider, B. Seeger, “The R*-Tree: An Efficient and Robust Access Method for Points and Rectangles”, SIGMOD Conference 1990: 322-3314. Yong-Ju Lee, Chin-Wan Chung: The DR-tree: A Main Memory Data Structure for Complex Multi-dimensional Objects, Journal Geoinformatica, Volume 5 Issue 2, June 2001, ISSN: 1384-6175 5. Joaquín Keller, Raluca Diaconu, Mathieu Valero: Towards a Scalable Dynamic Spatial Database System, http://www.researchgate.net/, 9.11.2012 6. Chi Zhang, Feifei Li, Jeffrey Jestes: Efficient parallel knn joins for large data in mapreduce, 15. EDBT 2012: Berlin, Germany 7. H. Jagadish, B. C. Ooi, Q.H. Vu, R. Zhang, and A. Zhou. VBI-Tree: A Peer-to-Peer Framework for Supporting Multi-Dimensional Indexing Schemes. In Proc Intl. Conf. on Data Engineering (ICDE),2006 

Page 60: Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Ďakujem za pozornosť