TECHNICKÁ UNIVERZITA V KOŠICIACH FAKULTA ELEKTOTECHNIKY A INFORMATIKY. Indexácia. Peter Nusios

Σχετικά έγγραφα
Matematika Funkcia viac premenných, Parciálne derivácie

1. Limita, spojitost a diferenciálny počet funkcie jednej premennej

7. FUNKCIE POJEM FUNKCIE

Start. Vstup r. O = 2*π*r S = π*r*r. Vystup O, S. Stop. Start. Vstup P, C V = P*C*1,19. Vystup V. Stop

Motivácia Denícia determinantu Výpo et determinantov Determinant sú inu matíc Vyuºitie determinantov. Determinanty. 14. decembra 2010.

Ekvačná a kvantifikačná logika

Obvod a obsah štvoruholníka

ARMA modely čast 2: moving average modely (MA)

1. Dátové štruktúry pre geometrické algoritmy

ARMA modely čast 2: moving average modely (MA)

6 Limita funkcie. 6.1 Myšlienka limity, interval bez bodu

Matematika 2. časť: Analytická geometria

Jednotkový koreň (unit root), diferencovanie časového radu, unit root testy

Cvičenie č. 4,5 Limita funkcie

Moderné vzdelávanie pre vedomostnú spoločnosť Projekt je spolufinancovaný zo zdrojov EÚ M A T E M A T I K A

Metódy vol nej optimalizácie

3. Striedavé prúdy. Sínusoida

Planárne a rovinné grafy

Goniometrické rovnice a nerovnice. Základné goniometrické rovnice

Matematika prednáška 4 Postupnosti a rady 4.5 Funkcionálne rady - mocninové rady - Taylorov rad, MacLaurinov rad

PRIEMER DROTU d = 0,4-6,3 mm

Kompilátory. Cvičenie 6: LLVM. Peter Kostolányi. 21. novembra 2017

,Zohrievanie vody indukčným varičom bez pokrievky,

Chí kvadrát test dobrej zhody. Metódy riešenia úloh z pravdepodobnosti a štatistiky

6 APLIKÁCIE FUNKCIE DVOCH PREMENNÝCH

M6: Model Hydraulický systém dvoch zásobníkov kvapaliny s interakciou

Komplexné čísla, Diskrétna Fourierova transformácia 1

Úvod do lineárnej algebry. Monika Molnárová Prednášky

Priamkové plochy. Ak každým bodom plochy Φ prechádza aspoň jedna priamka, ktorá (celá) na nej leží potom plocha Φ je priamková. Santiago Calatrava

KATEDRA DOPRAVNEJ A MANIPULAČNEJ TECHNIKY Strojnícka fakulta, Žilinská Univerzita

Prechod z 2D do 3D. Martin Florek 3. marca 2009

Tomáš Madaras Prvočísla

Rozsah hodnotenia a spôsob výpočtu energetickej účinnosti rozvodu tepla

Jednotkový koreň (unit root), diferencovanie časového radu, unit root testy

HASLIM112V, HASLIM123V, HASLIM136V HASLIM112Z, HASLIM123Z, HASLIM136Z HASLIM112S, HASLIM123S, HASLIM136S

C. Kontaktný fasádny zatepľovací systém

Motivácia pojmu derivácia

7 Derivácia funkcie. 7.1 Motivácia k derivácii

x x x2 n

1 Prevod miestneho stredného slnečného času LMT 1 na iný miestny stredný slnečný čas LMT 2

1. písomná práca z matematiky Skupina A

Spojité rozdelenia pravdepodobnosti. Pomôcka k predmetu PaŠ. RNDr. Aleš Kozubík, PhD. 26. marca Domovská stránka. Titulná strana.

Funkcie - základné pojmy

Metódy vol nej optimalizácie

Návrh vzduchotesnosti pre detaily napojení

AerobTec Altis Micro

Pevné ložiská. Voľné ložiská

Matematika 2. časť: Funkcia viac premenných Letný semester 2013/2014

Teória grafov III stromy ako modely, vlastnosti stromov, binárne prehľadávanie, prefixové kódy, stromy algebraických výrazov, hry

Podnikateľ 90 Mobilný telefón Cena 95 % 50 % 25 %

Lineárna algebra I - pole skalárov, lineárny priestor, lineárna závislosť, dimenzia, podpriestor, suma podpriestorov, izomorfizmus

Gramatická indukcia a jej využitie

Βάσεις Δεδομένων Ι SQL Μέρος 3 ο. (Constraints & Joins) Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

Vektorový priestor V : Množina prvkov (vektory), na ktorej je definované ich sčítanie a ich

Príklady na precvičovanie Fourierove rady

LR(0) syntaktické analyzátory. doc. RNDr. Ľubomír Dedera

Analýza údajov. W bozóny.

Reálna funkcia reálnej premennej

Definícia parciálna derivácia funkcie podľa premennej x. Definícia parciálna derivácia funkcie podľa premennej y. Ak existuje limita.

Základy matematickej štatistiky

2. prednáška. Teória množín I. množina operácie nad množinami množinová algebra mohutnosť a enumerácia karteziánsky súčin

Numerické metódy matematiky I

Algoritmy teórie grafov

u R Pasívne prvky R, L, C v obvode striedavého prúdu Činný odpor R Napätie zdroja sa rovná úbytku napätia na činnom odpore.

PREHĽAD ZÁKLADNÝCH VZORCOV A VZŤAHOV ZO STREDOŠKOLSKEJ MATEMATIKY. Pomôcka pre prípravný kurz

Παρασκευή 1 Νοεμβρίου 2013 Ασκηση 1. Λύση. Παρατήρηση. Ασκηση 2. Λύση.

Deliteľnosť a znaky deliteľnosti

Pilota600mmrez1. N Rd = N Rd = M Rd = V Ed = N Rd = M y M Rd = M y. M Rd = N 0.

REZISTORY. Rezistory (súčiastky) sú pasívne prvky. Používajú sa vo všetkých elektrických

Symbolická logika. Stanislav Krajči. Prírodovedecká fakulta

9. kapitola Boolove funkcie a logické obvody

vypilo_sa(k, A, S, I) navstivil(i, _, K), vypil(i, A, M), capuje(k, A, C), S is M * C. /* S = M * C */

Život vedca krajší od vysnívaného... s prírodou na hladine α R-P-R

Model redistribúcie krvi

Využitie EXCELU v matematike

Odporníky. 1. Príklad1. TESLA TR

4. Výrokové funkcie (formy), ich definičný obor a obor pravdivosti

difúzne otvorené drevovláknité izolačné dosky - ochrana nie len pred chladom...

Ευρετήρια και Κατακερματισμός

Úprava textu. Použitie schránky: Hlavička a Päta: Poznámka pod čiarou: Modul č.3 WORD pre pokročilých

Technická univerzita v Košiciach Fakulta elektrotechniky a informatiky MATEMATIKA II. Zbierka riešených a neriešených úloh

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 3) Ουρανία Σμυρνάκη

24. Základné spôsoby zobrazovania priestoru do roviny

Goniometrické funkcie

PROMO AKCIA. Platí do konca roka 2017 APKW 0602-HF APKT PDTR APKT 0602-HF

Numerické metódy Učebný text pre bakalárske štúdium

Obsah. 1.1 Reálne čísla a ich základné vlastnosti Komplexné čísla... 8

Demonstrační aplikace vyhodnocování dotazu v relačnej algebre

Integrovanie racionálnych funkcií

18. kapitola. Ako navariť z vody

RIEŠENIE WHEATSONOVHO MOSTÍKA

Funkcie a grafy v programe Excel

Modelovanie dynamickej podmienenej korelácie kurzov V4

Συστήματα Διαχείρισης Βάσεων Δεδομένων

Obyčajné diferenciálne rovnice

PostgreSQL. Oracle. Εαρινό Εξάμηνο

Zadaci sa prethodnih prijemnih ispita iz matematike na Beogradskom univerzitetu

DOMÁCE ZADANIE 1 - PRÍKLAD č. 2

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

KATALÓG KRUHOVÉ POTRUBIE

Transcript:

TECHNICKÁ UNIVERZITA V KOŠICIACH FAKULTA ELEKTOTECHNIKY A INFORMATIKY Indexácia Vypracovali: Róbert Vaško Peter Nusios

1. Úvod do Indexov Indexácia je mechanizmus na efektívne vyhľadávanie riadkov bez prehľadávania celej tabuľky. Je založený na vyhľadavacom kľúči : postupnosť atribútov. Riadok, ktorý má čiastočné hodnoty pre kľúč, môže byť rýchlo nájdený. Viacej riadkov môže mať rovnaké hodnoty pre vyhľadávací kľúč. 2. Formát Indexu. 2.1 Štruktúra Indexu. Index obsahuje: 1. Indexové položky: 1.1. Môže byť samotný riadok tabuľky. 1.2. Hodnota kľúča a smerník na riadok, ktorý má túto hodnotu 2. Vyhľadávací mechanizmus: 2.1. Algoritmus a dátová štruktúra na vyhľadávanie položky s určitou hodnotou vyhľadávacieho kľúča. 2.2 Dátová štruktúra Pod dátovou štruktúrou budeme rozumieť štruktúru súboru obsahujúcu samotnú tabuľku. Môže byť tvorená, týmito abstraktnými štruktúrami : Heap (neobsahujúca indexovú štruktúru) Zotriedený súbor (neobsahujúci indexovú štruktúru) Integrovaný súbor obsahujúci indexovú štruktúru a riadky (položka indexu obsahuje riadok v týchto prípadoch). V tomto prípade sa jedná o tieto údajové štruktúry :! ISAM (Indexed Sequencial Access Method)! B + strom.! Hash tabuľka. Obr.1. : Integrovaná dátová štruktúra.

Obr. 2. : Indexový súbor s oddelenou dátovou štruktúrou. 2.3 Klastrovaný / Neklastrovaný Index Klastrovany (hlavný) index : Indexové položky a riadky sú usporiadané rovnakým spôsobom.! Integrovaná dátová štruktúra je vždy klastrovaná.! V tabuľke môže byt len jeden klastrovaný index.! Je výhodný na intervalové hľadanie.! Využíva vyhľadávací mechanizmus na nájdenie indexovej položky na začiatku intervalu. Teda vyhľadáva prvý dátový záznam.! Ak index je klastrovaný nasledujúce dátové záznamy sú susedné (teda súvisia medzi sebou).! Minimalizuje stránkový prenos a maximalizuje pravdepodobnosť nájdenia stránky v cache pamäti. Neklastrovaný (vedľajší) index : Indexové položky a riadky nie sú nie sú usporiadané podľa rovnakého kľúča.! Indexový súbor môže byť klastrovaný alebo neklastrovaný s ohľadom na dátovú štruktúru na, ktorú sa odkazuje.! V tabuľke môže byt viac neklastrovaných indexov. Obr. 3. : Klastrovaný a neklastrovaný index.

Príklad na vyhľadanie intervalu : Máme dátový súbor (typu heap), ktorý má 10000 stránok. (100 riadkov v intervale).stránkový prenos je 20 riadkov na stránku. Aká je cena C (teda počet prehľadávaní tabuľky)??? log 2 10000 (vyhľadanie začiatku) + 5 (dátových položiek) 19 Neklastrovaný index : 100 (záleží na usporiadaní) Klastrovaný index : 5. 2.4 Husté a Riedke Indexy Hustý (Dense) index : indexová položka pre každý dátový záznam (Neklastrovaný index musí byť vždy hustý). Riedky (Sparse) index : jeden index pre každú stránku dátového súboru.! Ak je vyhľadavací kľúč príbuzný kľúč dátového súboru, potom sú dáta nájdené.! Ináč sú požadované ďalšie kritéria: začiatok vyhľadávania na predchadzjúcej stránke. ID Name Dept Riedky, klastrovaný index zoradený podľa ID. Dátový súbor zoradený podľa ID. Obr. 4. : Dense vs. Sparse Index. Hustý, neklastrovaný index zoradený podľa Name.

3. Viacúrovňové indexy 3.1 Dvojúrovňový index Obr. 5.: Dvojúrovňový index Prvá úroveň je riedky index nad stránkami indexový položiek. Druhá úroveň obsahuje samotné indexové položky. Indexové položky môžu obsahovať riadky (integrovaná dátová štruktúra) alebo smerníky na oddelenú dátovú štruktúru. V tomto prípade môže byť index neklastrovaný. Cena v prvej úrovni << cena v druhej úrovni, pretože prvá úroveň sa skladá z riedkych indexov Cena (Q stránky druhej úrovne, 100 položiek na stránku) = log 2 (Q / 100) + 1. 3.2 Viacúrovňový index Obr. 6. : Viacúrovňový index. Cena = počet úrovní v strome. Ak Φ je počet vetiev koreňovej stránky, potom cena je log Φ Q + 1.

4. Primárne organizácie indexov. 2.2 ISAM: Indexed Sequential Access Method ISAM je statický viacúrovňový index. Vytvára sa pri vytváraní tabuľky (CREATE TABLE) a potom sa už nemení. Nie je vhodný pre dynamické vkladanie a mazanie. Vkladanie sa vykonáva pomocou prepísania stránok (overflow pages). 2.3 B Stromy B strom je špeciálnym prípadom vyváženého n-árneho orientovaného koreňového stromu- Je zovšeobecnením 2-3 stromov. Každý nelistový vrchol (okrem koreňa) má počet synov v intervale <n/2, n>. Koreň B stromu je buď koreňom alebo má aspoň 2 synov Všetky listy majú rovnakú hľbku. Vlastnosti B stromov :! B stromy možno považovať za hierarchický index.! Koreň B stromu je index prvej úrovne.! Každý nelistový vrchol má tvar (p 0 k 1 p 0 k 1 k n p n ), kde pi je smerník na i-té dieťa a ki je kľúč.! Kľúče sú usporiadané.! Kľúče v podstrome referencovanom p i majú vlastnosť : kde p i majú vlastnosť : k i k < k i+1.! B stromy podporujú tieto operácie :! Vkladanie (INSERT): nájsť listový uzol, do ktorého má byť nová položka zaradená ak uzol nie je plný, zaradiť a koniec ak uzol je plný, rozdeliť ho na dva uzly, vykonať redistribúciu položiek a vložiť novú položku o úroveň vyššie (môže dôjsť k zmenám až do úrovne koreňového uzla)! Odobratie (DELETE): nájsť uzol, v ktorom sa nachádza položka ak je počet položiek väčší ako minimálny, potom vyradiť, ak je počet položiek rovný minimálnemu zlúčiť dva vedľajšie uzly, čo vyvolá vyradenie jednej položky z nadradeného uzla možná zmena až do úrovne koreňového uzla.! Vyhľadanie (SEARCH) pre kľúč X: 1. nastav PTR sa na koreňový uzol 2. prečítaj uzol PTR 3. nájdi takú maximálnu položku K i v uzle, aby X K i resp. urči, či X > K q-1 4. ak X = K i, čítaj blok (záznam) Pr i choď na bod 7 5. ak X < K i, PTR = P i a pokračuj bodom 2 6. ak X > K q, PTR = P q a pokračuj bodom 2 7. KONIEC 4.2 B + stromy Sú to B stromy, u ktorých odkazy na záznamy sú uložené len na úrovni listových položiek. Listové položky sú zvyčajne zreťazené, aby poskytovali sekvenčný prístup (P next, niekedy aj P previous ) Štruktúra interných uzlov: 1. Každý interný uzol B + -stromu má formu <P 1,K 1,P 2,K 2,...,P q-1,k q-1,p q > kde q p a P i je odkaz na ďalší uzol B + -stromu (B + -podstrom). 2. V každom internom uzle platí K 1 < K 2 <... < K q-1 3. Pre všetky hodnoty kľúča X v podstrome, na ktorý odkazuje P i, platí K i-1 < X K i, pre 1<i <q, X K i pre i = 1, a K i-1 < X pre i = q 4. Každý interný uzol má najviac p odkazov na podstromy 5. Každý interný uzol (okrem koreňového) má najmenej (p/2) odkazov na podstromy. Koreňový uzol má najmenej dva odkazy na podstromy, za predpokladu, že je interným uzlom. 6. Uzol s q odkazmi na podstromy (q p), obsahuje q-1 hodnôt kľúčov

Štruktúra listových uzlov 1. Každý listový uzol B + -stromu má formu < <K 1,Pr 1 >,<K 2,Pr 2 >,...,<K q-1,p q-1 >,P next > kde q p. Pr i je odkaz na zodpovedajúci záznam a P next odkazuje na ďalší listový uzol B + -stromu. 2. V každom listovom uzle platí K 1 < K 2 <... < K q-1, 3. Pr i odkazuje na záznam, hodnota kľúča ktorého je K i alebo na blok súboru, obsahujúci tento záznam. V prípade, že máme index nad nekľúčovou položkou, potom Pr i odkazuje na blok odkazov na záznamy s rovnakou hodnotou K i ) 4. Každý listový uzol má najmenej (p/2) hodnôt. 5. Všetky listové uzly sú na rovnakej úrovni stromu (strom je vždy vyvážený). Interné a listové uzly môžu mať rozličný blokovací faktor (p int pre interné uzly a p list pre listové uzly). B + -strom podporuje porovnávacie aj intervalové vyhľadávanie, vyhľadávanie na základe viacnásobných ale aj čiastočných kľúčov. Na rozdiel od ISAM, je vhodný na dynamické zmeny v tabuľkách. Maximálna cena vyhľadávania je rovná C = log Φ/2 Q + 1. Obr. 7. : Štruktúra B + -stromu 2.3.1 Operácie nad B + -stromom Algoritmus pre vkladanie a mazanie musí vždy brať ohľad na to aby bol strom vyvážení. Operácia INSERT: 1) Nájdi kľúč, ktorý sa bude vkladať. 2) Ak je priestor pre ďalší smerník v liste, vlož ho tam. 3) Ak nie je, rozdeľ list: 4) Rozdeľ list a pokračuj v bode 2) 5) Takto, rekurzívne rozdeľ všetky cesty v strome, pokiaľ je to možné. 6) Uprav všetky kľúče v strome, pokiaľ sa strom zmenil. Operácia DELETE: 1) Nájdi kľúč, ktorý sa má zmazať. 2) Ak sa našiel, zmaž ho. 3) Ak spodná hranica na obsadenom mieste je porušená 4) Najprv sa pozri v susednom liste, ktorý je nad spodnou hranicou; Ukradni smerník z tohoto listu. 5) Ak nič, potom musia byť dva listy v strome, ktoré je jeden v minime a druhý pod minimom V tom prípade spoj uzly. 6) Pokus sa zmazať spojené uzly. 7) Uprav všetky kľúče v strome, pokiaľ sa strom zmenil.

Pozn. Niekedy je v poriadku nechať list B + -stromu pod minimom, bez spájania listov. Operácia SEARCH: 1) Začni v hlavnom koreni B + -stromu. 2) Pokiaľ nedosiahneme list, nasleduj smerník, ktorý nás dovedie ku kľúču, ktorý hľadáme. 3) Nájdený list (alebo listy, ak sú možné duplikáty). 2.2 Hash Index Indexové položky sú rozdelené do oblastí (buckets) podľa hašovacej funkcie h(v), kde v je interval nad hodnotami vyhľadávacieho kľúča.! Každá oblasť je identifikovaná adresou a.! Oblasť nad adresou a obsahuje všetky indexové položky s vyhľadávacím kľúčom v.! Ak záznam s vyhľadávacím kľúčom v existuje, potom musí byť v oblasti h(v).! Každá oblasť je uložená v stránke.! Ak indexové položky obsahujú riadky, zoznam oblastí formulujú údajovú štruktúru Neklastrovaný indexový súbor.! Znižuje nám to prehľadávanie o hodnotu a.! Vykonáva sa len jedna I/O operácia, ak je len jeden blok na oblasť. Operácia SEARCH: Je dané v: 1. Vyhodnoť h(v). 2. Vyber oblasť v h(v). 3. Nájdi túto oblasť. 2.2.1 Operácie nad hash tabuľkou Cena = počtu stránok v oblastí (menšia než u B + stromov, za určitých podmienok). Obr. 8. : Operácia SEARCH nad hash table. Operácia INSERT: 1. Vlož oblasť h(v), ak sa vmestí do stránky, ináč vytvor vyplnenú stránku (overflow page), ktorá je súčasťou oblasti. Obr. 9. : Vloženie záznamu s kľúčom g. Operácia DELETE: 1. Vyhodnoť h(v). 2. Nájdi oblasť pre záznam s kľúčom v. 3. Zmaž záznam s kľúčom v. Jako vypočítať hodnotu pre h(v)? 2.2.2 Hash funkcia

Tak, aby obsadenie oblasti bolo približne rovnaké. Napríklad: h(v) = (a*v +b) * mod M.! M musí byť dostatočne veľké, aby minimalizovalo výskyt vyplňvacích stránok.! M nesie byť príliš veľké, aby nám zbytočne nezaplňoval miesto v dátovom alebo idexovom súbore. Efektivita algoritmu je najväčšia, ak počet záznamov < počet oblastí * počet záznamov na blok. 2.2.3 Nevýhody hash indexov Hash indexy nepodporujú intervalové vyhľadávanie. Hoci podporuje mnohonásobné kľúče, nepodporuje vyhľadávanie na základe čiastočných kľúčov. Dynamické vzrastanie veľkosti hash indexového súboru produkuje vyplňujúce stránky, ktoré znižujú efektivitu tohoto algoritmu. Ako to vyriešiť? Použijeme metódy dynamického hašovania. Ktoré sú: Rozšírené hašovanie: Zdvojnásobenie počtu oblastí, pokiaľ je to potrebné. Lineárne hašovanie : pridáme ďalšiu oblasť, ak je to vhodné. 2.2.4 Rozšírené hašovanie Interval hašovacej funkcie je rozšírený, aby vyhovoval prídavným oblastí. Teda: h k (v) = h(v) * mod 2 k (použi posledných k bitov z h(v)). V akomkoľvek danom čase mamé unikátnu hash funkciu, h k je použité v závislosti na tom koľkokrát sme danú oblasť rozdelili. Nevýhody: Extra priestor pre adresár. Ak adresár sa nevmiesti do pamäti, potom musíme preniesť ďalšiu stránku do pamäte. 2.2.5 Lineárne hašovanie Použi k bitov z pravého konca h(v). Oblasti očísluj [0 n-1], kde 2 k-1 < n < 2 k Nech posledných k bitov z h(v) bude m = (a 1 a 2 a n ). 1. Ak m < n, potom záznam patrí z oblastí m. 2. Ak n m < 2 k, potom záznam patrí z oblasti m 2 k-1. 2.3 Ďalšie stromy V Databázových systémov sa používaju aj ďalšie idexové štruktúry, ktoré si uz len pripomenieme. B* stromy je B + strom v ktorom sú uzly zaplnené na 2/3. Štvorcové stromy v, ktorom sa rozdeľujú naraz všetky rozdiely. R stromy : sú zovšeobecnením B stromov v viacrozmernom prípade. 3 Vybratie vhodnej indexovej štruktúry Index by mal podporovať dotaz aplikácie, ktorý ma najväčí dopad na výkonosť. Teda výber závisí od frekvencie dotazov, času vykonávania, potrebných uzamknutí a veľkosti tabuľky. Pr. 1: SELECT E.Id FROM Employee E WHERE E.Salary < :upper AND E.Salary > >lower Vyberieme B + strom s vyhľadavacím kľúčom = Salary. Pr. 2: SELECT T.CrsCode, T.Grade FROM Transcript T WHERE T.StudId = :Id AND T.Semester = F200 Vyberieme B + strom alebo hash s vyhľadávacím kľúčom StudId, pretože Semester nie je tak dobre selektívny ako StudId.

4 Použitá literatúra 1. Jeffové slajdy z DBMS. www-db.standford.edu/~ulllam 2. Jenyfferine slajdy z DBMS www-db.standford.edu/~ulllam 3. Liberios Vokorokos : Programovacie techniky v príkladoch. 4. Mysql-manual.pdf www.mysql.com 5. SQL98 Reference www.postgresql.org 6. PostgreSQL documentation www.postgresql.org 7. Nejake prednášky s DBMS stiahnuté z neznámeho FTP archívu. www.altavista.com