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

Preview:

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

Citation preview

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 

• 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.

Obsah

• R Strom

• MC R Strom

• Knn Dopyty

• Top k Dopyty

• Záver

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.

R Strom

MC R strom

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.

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é

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é

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

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

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...

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.

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.

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.

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

MC R Strom ako množina rovnocenných serverov

Komunikačná Sieť, vytvorenie

Komunikačná Sieť, vytvorenie

S1 pošle Mastrovi žiadosť o pripojenie

Komunikačná Sieť, vytvorenie

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

Komunikačná Sieť, vytvorenie

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

Komunikačná Sieť, vytvorenie

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.

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.

MC R Strom ako množina rovnocenných serverov

Knn dopyt

Vstupom je bod A, číslo k.

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

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;

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;

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;

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;

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;

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;

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;

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;

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

Top k dopyt, fuzzy funkcia

Top k dopyt

Top k dopyt

Top k dopyt

Queue : RootVýsledok :

Top k dopyt

Queue : B, A, CVýsledok :

Top k dopyt

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

Top k dopyt

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

Top k dopyt

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

Top k dopyt

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

Top k dopyt

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

Paralelný Inn algoritmus, variant 1

Paralelný Inn algoritmus, variant 1

Paralelný Inn algoritmus, variant 1

Paralelný Inn algoritmus, variant 1

Paralelný Inn algoritmus, variant 1

Paralelný Inn algoritmus, variant 2

Paralelný Inn algoritmus, variant 2

Paralelný Inn algoritmus, variant 2

Paralelný Inn algoritmus, variant 2

Paralelný Inn algoritmus, variant 2

Paralelný Inn algoritmus, variant 2

Paralelný Inn algoritmus, variant 2

Záver

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

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 

Ďakujem za pozornosť

Recommended