180 likes | 296 Views
Grid index a vyhľadávanie nad ním. Autor: Martin Katu ščák Vedúci práce : Mgr. Martin Šumák. Prečo indexovať dáta?. indexovanie dát je aktuálnou problematikou už mnoho rokov. Indexovanie je nevyhnutnou podmienkou pre rýchle a efektívne vyhľadávanie.
E N D
Grid index a vyhľadávanie nad ním Autor: Martin Katuščák Vedúci práce:Mgr. Martin Šumák
Prečo indexovať dáta? • indexovanie dát je aktuálnou problematikou už mnoho rokov. Indexovanie je nevyhnutnou podmienkou pre rýchle a efektívne vyhľadávanie. • Snaha o vytvorenie novej štruktúry na indexovanie dát využitím hash funkcie mapovania do súboru.
Ciele práce: • Zostrojenie n - rozmerného indexu nad dátami. • Zápis indexovaných dát do súboru. • Implementácia vyhľadávacieho algoritmu nad indexom.
Cieľ 1:Zostrojenie n - rozmerného indexu nad dátami. Čo je grid index? • n - rozmerná štruktúra • V každom rozmere obsahuje hodnoty z intervalu minima a maxima spomedzi všetkých hodnôt objektov v danom rozmere. • Každý rozmer reprezentuje jednu z vlastnosti objektov.
Grid index: • Zostrojuje sa až nad konkrétnymi dátami, čo znamená, že najprv musíme poznať všetky dáta ktoré chceme indexovať • Umožňuje pridávať aj ďalšie objekty do indexu, ale po určitom čase sa z dôvodu efektivity musí prebudovať, keďže nejde o dynamickú štruktúru.
Reprezentácia dát: • Dáta budú reprezentované ako objekt so súradnicami, pričom súradnica v danom rozmere určuje vlastnosť objektu. • Všetky objekty musia byť rovnakého rozmeru, čo znamená, že indexujeme len úplné dátá. • Trieda dáta bude obsahovať okrem súradníc aj identifikačné číslo.
Implementácia grid indexu: • Myšlienkou je rozdelenie jedného intervalu pre každý rozmer na menšie pod intervaly, ktoré budú vytvárať okienka indexu. • Každý objekt ktorý budeme indexovať patrí práve do jedného takéhoto okienka na základe svojich súradníc. • Spôsob akým index rozdelíme určuje povahu a efektivitu indexu.
Implementácia grid indexu: • Pri implementácií sme s vedúcim zvolili rozdelenie na základe početnosti hodnôt. • To znamená, že v rozmere v ktorom je viac rôznych hodnôt bude aj pod intervalov viac a to práve o + 1. • Základom indexu je zoznam zoznamov, čiže pre každý rozmer práve jeden zoznam ktorý obsahuje deliace body intervalu.
Cieľ 2: Zápis indexovaných dát do súboru. • Na začiatku si inicializujeme súbor ktorý ma pripravených toľko stránok, koľko máme okienok indexu. • Na zápis objektov do súboru využívam triedu Cache ktorá pracuje s triedami ByteBuffer, RandomAcessFile a FileChanel. Pri zápise alebo čítaní zo súboru pracujeme s celou stránkou.
Cieľ 2: Zápis indexovaných dát do súboru. • Offset stránky v súbore získame vzorcom offset = page_size * index_okienka • Keďže vieme do ktorého okienka objekt patrí, dokážeme vypočítať index tohto okienka. • Prvá stránka obsahuje offsety všetkých pretečených stránok.
Ciel 3: Implementácia vyhľadávacieho algoritmu nad indexom. • Rozhodol som sa pre implementáciu Range Query, čiže rozsahový dopyt. • Vstupom tohto dopytu je ľavý dolný roh a dĺžky strán pre každý rozmer. • Rozmer dopytu musí zodpovedať rozmeru indexu.
Ciel 3: Implementácia vyhľadávacieho algoritmu nad indexom. • V prvom kroku zistíme krajné okienka ktoré nám dopyt preťal. • Následne potrebujeme generovať súradnice všetkých okienok vo vnútre dopytu a to na základe krajných súradníc. • Implementovaná je rekurzívna funkcia ktorá pripomína generovanie permutácií.
Ciel 3: Implementácia vyhľadávacieho algoritmu nad indexom. • Výsledné dostaneme indexy všetkých stránok v súbore ktoré musíme prečítať. • Následné už len stačí overiť všetky objekty z týchto stránok a vrátiť výsledok.
Stav práce: • Kompletné zimplementovaná tvorba indexu na základe náhodne generovaných alebo zo súboru prečítaných dát. • Zimplementovaný vyhľadávací algoritmus.
Plán práce do konca semestra • Urobiť porovnávacie testy s R – stromom nad rovnakými dátami. • Otestovať Range query vyhľadávanie podľa časových záznamov nad oboma indexami. • Napísať prácu.
Odporúčaná literatúra: • Pokorný, J. – Žemlička, M. – :Základy implementacesouboru a databázi,Secondedition, 2004, 212 s., ISBN 80-246-0837-5 • YannisManolopoulos, AlexandrosNanopoulos, Apostolos N. Papadopoulos, YannisTheodoridis: R-Trees: Theory and Applications, Springer-VerlagLondonLimited 2006 • RaghuRamakrishnan, JohannesGehrke: DatabaseManagementSystems, 2007
Záver: Ďakujem za pozornosť