1 / 82

Organizacija datotek in indeksiranje

Povzeto po [1] in [5]. Organizacija datotek in indeksiranje. Načini ureditve datotek Indeksi in njihov način delovanja ISAM, B+ drevo. Osnovni koncepti…. Podatkovna baza je na sekundarnem pomnilniku organizirana v eno ali več datotek ( file )

hisoki
Download Presentation

Organizacija datotek in indeksiranje

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Povzeto po [1] in [5] Organizacija datotek in indeksiranje • Načini ureditve datotek • Indeksi in njihov način delovanja • ISAM, B+ drevo - 1 -

  2. Osnovni koncepti… • Podatkovna baza je na sekundarnem pomnilniku organizirana v eno ali več datotek (file) • Vsaka datoteka zajema enega ali več zapisov (record). • Zapis sestavljajo polja (field). • Zapisi običajno označujejo entitete, polja pa njihove atribute. - 2 -

  3. Osnovni koncepti… • Uporabnik zahteva zapis “A10” od SUPB: • SUPB naredi preslikavo logičnega zapisa v fizični; • Poišče fizični zapis in ga prepiše v primarni pomnilnik oziroma v medpomnilnik; Logični pogled Fizični pogled entiteta/zapis Tabela datoteka atribut/polje - 3 -

  4. Osnovni koncepti… • Med fizičnim in logičnim zapisom ne velja vedno preslikava 1:1 • Fizični zapis je enota prenosa med diskom in primarnim pomnilnikom. • Lahko zajema tudi več logičnih zapisov. Podobno je lahko tudi večji logični zapis zapisan čez več fizičnih zapisov. • Fizični zapis ustreza konceptu, ki smo ga obravnavali kot stran. - 4 -

  5. Osnovni koncepti • Zapisi tabele Artikel razdeljeni na strani… ARTIKEL Stran 1 2 - 5 -

  6. Datotečna organizacija… • Datotečna organizacija pove, kako so podatki v datoteki fizično urejeni v zapise in strani na sekundarnem pomnilniku. • Osnovne vrste datotečnih organizacij: • Kopica ali neurejena datoteka: zapisi so na disku shranjeni v nedefiniranem vrstnem redu. • Zaporedno urejena datoteka: zapisi so urejeni po vrednosti določenega polja. • Razpršena datoteka: zapisi so razpršeni z uporabo hash funkcije. - 6 -

  7. Datotečna organizacija… • Za delo z zapisi v datotekah obstajajo različne tehnike ali metode dostopa (access methods). • Metode dostopa določajo korake, ki jih je potrebno izvesti za zapis ali iskanje nekega zapisa v datoteki. • Metode dostopa so odvisne od datotečne organizacije. - 7 -

  8. Neurejene datoteke… • Imenujemo tudi kopica (heap). • Najenostavnejša datotečna organizacija: • Zapisi so shranjeni v istem vrstnem redu, kot so bili dodani • Nov zapis dodan na zadnjo stran datoteke • Če ni dovolj prostora, se doda nova stran • Dobra lastnost: • Zelo učinkovito dodajanje zapisov • Uporabljamo za masovni vnos. • Ni potrebno računati, na katero stran bomo zapis vstavili. - 8 -

  9. Neurejene datoteke • Slabosti: • Neučinkovitost iskanja. Uporabiti moramo linearno iskanje (zapisi so neurejeni) • Neizkoriščenost prostora: pri brisanju zapisa moramo najti stran z zapisom, zbrisati zapis ter stran shrani nazaj na disk. Spraznjen prostor na strani ostane neizkoriščen. Neurejene datoteke je potrebno občasno reorganizirati! - 9 -

  10. Urejene datoteke… • Zapisi v datotekah so lahko urejeni po enem ali več poljih  urejena ali zaporedna datoteka. • Za iskanje po poljih, po katerih je datoteka urejena, uporabimo binarno iskanje. • Primer: SELECT * FROM artikel WHERE sifra = 14 1 2 3 4 5 6 7 8 9 10 11 12 13 10 12 14 18 23 34 35 65 72 78 89 90 99 - 10 -

  11. Urejene datoteke… • Prednosti: • Učinkovitost iskanja • Problem • Dodajanje in brisanje zapisov  potrebno vzdrževati vrstni red • Če želimo nek zapis dodati, moramo poiskati stran, kamor bi zapis sodil glede na vrstni red. Če stran vsebuje dovolj praznega prostora, jo preuredimo in zapišemo nazaj na disk, sicer moramo nekaj zapisov premakniti na naslednjo stran itd. - 11 -

  12. Urejene datoteke • Dodajanje zapisa na začetek velike datoteke posebej problematično. • Možna rešitev: uporaba dodatne neurejene datoteke (overflowali transaction file): • Nov zapis je dodan v neurejeno datoteko • Neurejena datoteka se periodično prepiše v urejeno • Pri iskanju zapisa se najprej pogleda urejena datoteka. Če zapisa ne najdemo, se linearno pregleda še neurejena. Urejene datoteke se redko uporabljajo za shranjevanje podatkov, razen v kombinaciji s primarnim indeksom. - 12 -

  13. Razpršene datoteke… • V razpršenih ali hash datotekah so zapisi razpršeni v skladu s hash funkcijo. • Hash funkcija za vsak zapis izračuna naslov strani (naslov bloka na disku), kamor zapis sodi glede na vrednost določenega polja (hash polje). fhash(P) = naslov strani; P = vrednost hash polja. • Iskanje zapisa na strani se izvede v primarnem pomnilniku. Za večino zapisov moramo prebrati le eno stran. - 13 -

  14. Razpršene datoteke… • Za hash funkcijo izberemo operacijo, ki zagotavlja enakomerno porazdeljenost zapisov po datoteki. • Najpopularnejša hash funkcija je ostanek pri deljenju (MOD) z določenim številom (n) • Primer: • Vrednost polja, ki nastopa kot argument hash funkcije je 132 • n = 24 • 132/24 = 5, ostanek je 12  zapis se zapiše na 12 stran. - 14 -

  15. Razpršene datoteke… • Problem razpršenih datotek: • Zaloga vrednosti hash polja navadno večja od števila naslovov, ki jih lahko vrne hash funkcija. • Vsak naslov ustreza določeni strani (bucket), ki ima mesta za več zapisov. • Znotraj strani so zapisi urejeni po vrsti, kot so bili vstavljeni. • Ko hash funkcija za nek zapis vrne naslov strani, ki je polna, pride do kolizije. - 15 -

  16. Razpršene datoteke… • Za reševanje problemov z istim naslovnim prostorom so na voljo različne tehnike • Odprto naslavljanje (open addressing) • Nepovezane dodatne strani (unchained overflow) • Povezane dodatne strani (chained overflow) • Večkratno razprševanje (multiple hashing) - 16 -

  17. Razpršene datoteke… • Odprto naslavljanje • Zapisovanje: če pride do kolizije, poiščemo prvo stran, ki ima še kakšno prosto mesto. Ko pridemo do zadnje strani, gremo na začetek. • Iskanje: enako kot pri zapisovanju. S to razliko, da če naletimo na prazno mesto preden na iskani zapis, privzamemo, da zapisa ni v datoteki. - 17 -

  18. Staff SA9 zapis Staff SL21 zapis Staff SG37 zapis Staff SG5 zapis Staff SG14 zapis Staff SG5 zapis Staff SG14 zapis Staff SA9 zapis Staff SL21 zapis Staff SG37 zapis Staff SL41 zapis Razpršene datoteke… • Primer: • dodajamo zapis SL41 • Hash funkcija MOD 3 • SL41 je razvrščen za stran 2 • Ker stran 2 nimam praznih mest, iščemo prvo stran s še prosim mestom. Rezultat: stran 1. Stanje prej Stran Stanje potem Stran 0 0 1 1 2 2 - 18 -

  19. Staff SA9 zapis Staff SL21 zapis Staff SG37 zapis Staff SG5 zapis Staff SG14 zapis Staff SL41 zapis Razpršene datoteke… • Nepovezane dodatne strani: • Namesto iskanja prostega mesta za primere kolizije vzdržujemo seznam dodatnih strani • Rešitev na videz ne ponuja bistvenih izboljšav • V resnici daje boljše rezultate  število kolizij je manjše (z odprtim naslavljanjem rešimo le trenutno kolizijo. Obenem odpremo možnosti za nove kolizije.) Stran Dodatni prostor Stran 0 3 1 4 2 - 19 -

  20. Staff SG5 zapis Staff SG14 zapis Staff SA9 zapis Staff SL21 zapis Staff SG37 zapis Staff SL41 zapis Razpršene datoteke… • Povezane dodatne strani: • Podobno kot nepovezane dodatne strani, le da so v tem primeru dodatne strani povezane z osnovnimi • Vsaka stran ima dodatno polje, ki pove, ali je prišlo pri tej strani do kolizije ali ne. V polju je naslov dodatnega polja, kamor so razvrščeni zapisi, pri katerih pride do kolizije. Vrednost 0 pomeni, da kolizije ni bilo. Stran Dodatni prostor Stran 0 0 0 3 synonym pointer 1 4 0 0 3 2 - 20 -

  21. Razpršene datoteke… • Večkratna razpršitev: • Eden od načinov reševanja kolizij je večkratno razprševanje. • Če pride do kolizije, se uporabi drugačna hash funkcija, ki vrača drugačen naslov. • Dodatna hash funkcija je navadno takšna, da razvršča v dodati prostor. • Razprševanje v splošnem • Prinaša dobre rezultate pri iskanju (ob uporabi ene izmed tehnik reševanja kolizij). • Spreminjanje zapisov je tudi enostavno, razen v primerih, ko spremenimo hash polje. - 21 -

  22. Dinamične razpršene datoteke… • Obravnavane hash tehnike so vse statične: • ko zapisu določimo naslov, se ta ne spremeni, če se ne spremeni vrednost hash polja . • Problem: • Datoteka postane premajhna in zato vzamemo večjo. Določiti moramo novo hash funkcijo in vse zapise iz stare datoteke premestiti (z uporabo novega razprševanja) v novo datoteko. • Alternativa: • Uporaba dinamičnih razpršenih datotek: datoteko dinamično spreminjamo (večamo) po potrebi. • Obstajajo številne tehnike realizacije dinamičnih razpršenih datotek. - 22 -

  23. Dinamične razpršene datoteke… • Razširljivo razprševanje (extendible hashing) • Strani kreiramo po potrebi. V začetku gredo zapisi v prvo stran. • Ko je stran polna, jo razdelimo glede na prvih i bitov, kjer velja 0 ≤ i < b • Izbranih i bitov določa naslov oziroma ofset v naslovni tabeli strani oziroma imeniku (BAT - Bucket Address Table). Vrednost i se spreminja z velikostjo datoteke • V glavi imenika je zapisana trenutna vrednost i (globina) skupaj z 2i kazalci. • Vsaka stran ima tudi lokalno globino, ki pove, pri katerem i dobimo naslov te strani. - 23 -

  24. Imenik lokalna globina 0 globina 0 Izgled dinamično razpršenedatoteke po vpisu zapisovSL21 in SL37. 0 0 1 1 0 Izgled dinamično razpršenedatoteke po vpisu zapisa SG14 0 1 1 1 Staff SA9 zapis Staff SG14 zapis Staff SG37 zapis Staff SG37 zapis Staff SL21 zapis Staff SG37 zapis Staff SL21 zapis Staff SG14 zapis Staff SL21 zapis 2 2 00 0 01 2 Izgled dinamično razpršenedatoteke po vpisu zapisaSA9. 10 2 11 1 1 Dinamične razpršene datoteke… - 24 -

  25. Omejitve tehnike razprševanja • Učinkovitost razpršenih datotek za iskanje odvisna od hash polja. • Uporaba razpršenih datotek ni primerna za: • Iskanje po vzorcu • Iskanje po nizu vrednosti • Iskanje po polju, ki ni hash polje - 25 -

  26. Indeksi in indeksiranje… • Indeks je podatkovna struktura, ki SUPB-ju omogoča hitrejše lociranje zapisov v datoteki. • Analogija z indeksom knjige • Indeks knjige vsebuje ključne besede (urejene po abecedi) ter za vsako pove, na kateri strani ali straneh se ključna beseda pojavlja. • Indeks omogoča, da nam ni potrebno prelistati cele knjige, ko želimo najti določeno vsebino. - 26 -

  27. SG14 David Ford 18000 B003 Indeksi in indeksiranje… • Terminologija: • Podatkovna datoteka: datoteka s podatki (imenujemo tudi osnovna datoteka) • Indeksna datoteka: datoteka z indeksom. Indeks sestavlja iskalni ključ ter kazalec na zapis v podatkovni datoteki. • Iskalni ključ: sestavljen iz vrednosti polj, po katerih je datoteka indeksirana. Imenujemo tudi indeksno polje. Zapis Iskalni ključ B003, 18000 B003, 18000 Indeksna datoteka Podatkovna datoteka - 27 -

  28. Indeksi in indeksiranje… • Indeksi gruče (clustered index) • Z indeksom gruče označujemo indekse, ki temeljijo na poljih, po katerih je obenem urejena tudi podatkovna datoteka. ......... Indeksna datoteka Podatkovna datoteka ......... Indeksna datoteka Podatkovna datoteka - 28 -

  29. Indeksi in indeksiranje… • Primarni in sekundarni indeksi • Primarni indeks (Primary index): indeks po poljih, ki vsebujejo primarni ključ. Vsak iskalni ključ kaže natanko na en zapis v podatkovni datoteki. Datoteka je po ključu urejena. • Sekundarni indeks (Secondary key): vsak indeks, ki ne temelji na poljih, ki bi vsebovala primarni ključ. • Vsaka datoteka ima lahko: • primarni indeks ali indeks gruče ter • več sekundarnih indeksov! - 29 -

  30. Indeksi in indeksiranje… • Redki in gosti indeksi: • Redki indeks (sparse index): indeksna datoteka vsebuje kazalce, ki kažejo le na določene zapise v podatkovni datoteki. Navadno vsebuje po en zapis za vsako stran v podatkovni datoteki; • Gosti indeks (dense index): indeksna datoteka vsebuje kazalce na vse zapise v podatkovni datoteki. - 30 -

  31. 22000 Mike SG14 David Ford 18100 B003 SG37 Ann SO37 Beech Abby B003 Carol White 32000 B002 SF01 Abby Ford 18000 12000 32000 SF21 B002 David 22000 B001 SX21 John Smith 9000 B001 SL09 Mike Tires Jeana Fraser B001 12500 Trex SM01 Moar 18100 18000 19000 12000 9000 B003 19000 12500 Indeksi in indeksiranje… fName salary Redki indekspo polju name gosti indekspo polju salary PODATKOVNA DATOTEKA - 31 -

  32. Indeksi in indeksiranje… • Indeksi s sestavljenim iskalnim ključem (composite key ali concatenated key): • Indeksi po več kot enem polju • Uporabljamo za kombinacije polj, po katerih pogosto iščemo - 32 -

  33. B003, 12000 18000 9000, B005 12000, B003 18000, B003 30000, B005 12000 30000 9000 B003, 18000 B005, 9000 B005, 30000 B003 B003 B005 B005 Indeksi in indeksiranje… (salary, branchNo) (salary) (branchNo) (branchNo, salary) - 33 -

  34. Drevesno indeksiranje… • Drevesno indeksiranje učinkovito pri: • intervalnem iskanju ter • dodajanju in brisanju (za razliko od urejenih datotek). • Iskanje po enakosti boljše pri hash indeksiranju. • Pogledali bomo dve indeksni strukturi, ki temeljita na drevesni organizaciji: • ISAM (Indexed Sequential Access Method): • B+ drevesna struktura - 34 -

  35. Drevesno indeksiranje… • ISAM: • statičen indeks, • učinkovit v primerih, ko se podatkovna datoteka ne spreminja pogosto, • ni učinkovit pri datotekah, ki se hitro povečujejo ali krčijo. • B+ drevo: • dinamična struktura; se zelo dobro prilagaja spremembam v podatkovni datoteki, • najbolj uporabljana vrsta indeksa; omogoča hitro iskanje zapisov, intervalno iskanje in se učinkovito prilagaja spremembam v podatkovni datoteki. - 35 -

  36. ISAM… • Primer: • Imamo datoteko oseb, urejeno po polju “starost”. • Če želimo najti vse osebe starejše od 30 let, moramo najprej najti prvo (s pomočjo binarnega iskanja), ki je starejša od 30 in od te naprej prebrati preostale zapise datoteke. • Možnost za pohitritev iskanja: • Izdelamo dodatno datoteko, s po enim zapisom za vsako stran v podatkovni datoteki in jo uredili po polju “starost”. • Vsak zapis v dodatni datoteki vsebuje par <ključ prvega zapisa na strani, kazalec na zapis> - 36 -

  37. ISAM… • Primer (nadaljevanje): • Vsak ključ v indeksni datoteki predstavlja mejnik vsebine, na katero kažeta levi in desni kazalec  vsaka stran v indeksu vsebuje en kazalec več, kot je ključev. • Binarno iskanje se izvede nad indeksno datoteko, ki je manjša od osnovne datoteke => hitrejše iskanje. - 37 -

  38. ISAM… • Velikost indeksne datoteke poraja idejo o ISAM indeksu: • Zakaj ne bi ponovili koraka in zgradili še eno dodatno datoteko, ki bi imela za vsako indeksno stran en zapis, tako da bi velikost končnega indeksa znašala samo eno stran? - 38 -

  39. ISAM… • ISAM indeks sestavljajo dve vrsti strani: • listi: strani s podatki (in dodatne strani - overflow) in • vozlišča: nepodatkovne strani. • Nekatere ISAM strukture temeljijo na skrbno oblikovanih straneh, ki ustrezajo fizični organizaciji datotek na sekundarnem mediju (IBM). • ISAM je v celoti statična struktura (z izjemo dodatnih strani) - 39 -

  40. ISAM… • Gradnja ISAM indeksa: • Ko se indeksna datoteka kreira, so vse strani v listih urejene zaporedno in po iskalnem ključu. • Vstavljanje novih podatkov lahko zahteva kreiranje dodatnih strani (če je stran, kamor podatek sodi, polna). • ISAM podpira operacije iskanje, brisanje in vstavljanje. - 40 -

  41. Iščemo zapis z vrednostjoiskalnega ključa 27 ISAM… • Iskanje: • Začnemo v korenu • Če vrednost, ki jo iščemo manjša ali enaka ključu korena, sledimo levemu kazalcu, sicer desnemu. • Ponavljamo, dokler ne pridemo do listov drevesa. Če podatke, ki ga iščemo, ni v listu, iščemo v dodatnih straneh. - 41 -

  42. Dodamo zapis z vrednostjoiskalnega ključa 23, 48, 41, 42 Podatki v primarnih straneh listov so urejeni ISAM… • Dodajanje • Stran v listih, kamor zapis sodi, poiščemo enako kot pri iskanju • Zapis dodamo na prvo prosto mesto - 42 -

  43. Brisanje zapisov z vrednostjoiskalnega ključa 42, 51 in 97. ISAM… • Brisanje: • Zapis, ki ga brišemo, poiščemo enako kot pri iskanju • Če je zapis na dodatni strani in gre za zadnji zapis na strani, stran zbrišemo. • Če je zapis na primarni strani in gre za zadnji zapis na strani, pustimo stran prazno. Služi kot mesto za kasnejšo rabo. • Lahko se zgodi, da se iskalni ključ, ki nastopa v indeksnem delu, ne pojavi v listih. - 43 -

  44. ISAM… • Primer izračuna stroškov iskanja zapisa v ISAM strukturi: • Število I/O operacij = logFN, kjer je N število primarnih strani listov, F število otrok vsake indeksne strani. • Število I/O operacij pri binarnem iskanju po urejeni datoteki je log2N. Pri iskanju po eno-nivojskem indeksu: log2(N/F) • Primer: datoteka z 1.000.000 zapisi, 10 zapisov na stran v listih in 100 zapisov v indeksnih straneh • Strošek branja cele datoteke: 100.000 • Strošek binarnega iskanja po urejeni datoteki: 17 • Strošek binarnega iskanja po eno-nivojskem indeksu: 10 • Strošek binarnega iskanja po ISAM strukturi: 3 (brez dodatnih strani) - 44 -

  45. ISAM • Problem ISAM strukture se pokaže, ko naraste število dodatnih strani • Podatki v dodatnih straneh so načeloma lahko urejene, običajno pa niso (zaradi učinkovitosti dodajanja zapisov) • Problem omilimo tako, da v začetku, ko izgradimo indeks, pustimo nekaj praznega prostora v straneh listov. - 45 -

  46. B+ drevesa… • B+ indeks je dinamičen  njegova struktura se dinamično prilagaja spremembam v podatkovni datoteki. • Odpravlja težave, ki so značilne za ISAM indeks • npr. s povečevanjem števila dodatnih strani pada učinkovitost... • B+ drevo predstavlja iskalno strukturo • B+ je uravnoteženo drevo, katerega vozlišča usmerjajo iskanje, listi pa vsebujejo podatke (ključe). - 46 -

  47. B+ drevesa… • B+ drevo se dinamično spreminja, zato strani v listih ni možno alocirati zaporedno. Uporabimo kazalce. • Liste B+ drevesa uredimo z dvosmernim seznamom. Indeksni del Indeksna datoteka Podatkovni del - 47 -

  48. B+ drevesa… • Lastnosti B+ dreves: • Operacije dodajanja in brisanja ohranjajo drevo uravnoteženo; • Vozlišča (razen korena) so vsaj 50% zasedena, če uporabimo ustrezen algoritem brisanja; • Iskanje določene vrednosti zahteva le pot od korena do ustreznega lista. • Poti do vseh vozlišč so zaradi uravnoteženosti enake in določajo višino drevesa. • Zaradi velikega razvejanja (velik F) je višina običajnih B+ dreves majhna (redko več kot 3 ali 4). - 48 -

  49. B+ drevesa… • Primer B+ drevesa. Kakšna je višina in kakšna razvejanost F? • d je parameter B+ drevesa imenovan red drevesa; • 2*d predstavlja kapaciteto vozlišča. Edina izjema je korensko vozlišče, za katerega velja 1=<m=<2d. • Vsako vozlišče B+ drevesa vsebuje m vpisov, pri čemer velja d ≤ m≤ 2*d. - 49 -

  50. B+ drevesa… • Uporaba B+ dreves se splača v primerih, ko se podatki velikokrat spreminjajo, obenem pa potrebujemo zaporedno iskanje. • Prednosti pred uporabo urejenih datotek: • Za ceno dodatnega prostora, ki ga porabimo z indeksno datoteko, pridobimo vse prednosti urejene datoteke, obenem pa ne izgubimo na učinkovitosti dodajanja in brisanja. • Prednosti pred uporabo ISAM-a: • Zaradi dodajanja ni potrebno ustvarjati dodatnih oziroma presežnih strani. - 50 -

More Related