380 likes | 483 Views
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
E N D
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.
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.
MC R strom Na Master-Client R-strom sa môžeme pozerať ako na dvoj-úrovňový R-strom. Na Master Servri sa vytvorí lokálny strom, ktorý uchováva všetky vnútorné uzly globálneho stromu. Listové uzly globálneho stromu sú na master servery identifikované dvojicou <MBR, siteId>, kde siteId je identifikátor stanice, na ktorej sa listový uzol nachádza. Tieto listy sú rozdistribuované po ostatných staniciach v sieti, na ktorých sú následne vytvorené lokálne R-stromy.
MC R Strom ako množina rovnocenných serverov • Použitie diskovo-rezidentného STR sortu • Použitie diskovo-rezidentného bulk-loadingu na vytváranie stromov indexujúcich dátové objekty • Master R strom je vytváraný pomocou pamäťovo rezidentného bulk-loadingu.
Knn dopyt Vstupom je bod A, číslo k. Výstupom je k najbližších objektov k tomuto bodu A.
Sekvenčný Inn algoritmus knn(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 algoritmus knn(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 algoritmus knn(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 algoritmus knn(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 algoritmus knn(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 algoritmus knn(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 algoritmus knn(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 algoritmus knn(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;
Variant 1 vs Variant 2 • Záplavový variant bude zrejme rýchlejší, avšak spôsobí väčšie zahltenie siete, keďže oslovuje všetky servre (pričom väčšina nemusí obsahovať relevantné dáta) • Selektívny variant bude pomalší, zrejme však bude rýchlejší pri vysokej záťaži. • Ukážu až testy
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
Stav práce • Čo mám hotové : Paralelný Index (Ide o modifikáciu indexu za Bc práce, pridal som diskovo rezidentné algoritmy na vytvorenie stromu a upravil som komunikačný protokol) • Naimplementované oba varianty odprezentovaných paralelných knn dopytov.
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