160 likes | 322 Views
Zaporedna datoteka. Lastnosti zap. datoteke. zapisi logične datoteke se preslikajo v zapise fizične datoteke tako, da so urejeni (naraščajoče /padajoče) po vrednosti KLJUČA ključ je lahko tudi sestavljen iz več podatkovnih elementov
E N D
Lastnosti zap. datoteke • zapisi logične datoteke se preslikajo v zapise fizične datoteke tako, da so urejeni (naraščajoče /padajoče)po vrednosti KLJUČA • ključ je lahko tudi sestavljen iz več podatkovnih elementov Logična urejenost zapisov je v fizični datoteki predstavljena: s fizičnim zaporedjem zapisov z uporabo kazalcev: • urejenost fizičnih blokov s kazalci • urejenost zapisov s kazalci s faktorizacijo
1.Urejenost s fizičnim zaporedjem • struktura fiz. zapisov == struktura log. zapisov • ureditev zapisov je predstavljena z njihovim fizičnim zaporedjem v datoteki problem = ažuriranje • GOSTA DATOTEKA • dodajanje/brisanje zapisovprepisovanje stare datoteke v novo (zamudno) • primerna le za branje zapisov in spreminjanje podatkov, ki NISO v ključu • REDKA DATOTEKA • omogoča hitrejše dodajanje/brisanje zapisov • ob kreiranju novega bloka / začetnem vpisu ohrani nekaj prostih polj
Reorganizacija redke datoteke • Kdaj? - ko se kakšen blok povsem napolni / preventivno • Kako? - kreiraj novo fizično datoteko, ki vsebuje vse zapise stare datoteke, pri tem pa so v fizičnih blokih spet predvidena prazna polja za dodajanje novih zapisov • Čas? - razmeroma dolgotrajen postopek izvedi takrat, ko podatkovna baza ni aktivna • Kako zagotoviti pravočasnost reorganizacije? tekoči nadzor zasedenosti blokov • Primernost fizičnega zaporedja zapisov le za nevezane zapise
2.1. Urejenost fizičnih blokov s kazalci • Kako ? - vsakemu bloku dodaj kazalec, ki kaže na logično naslednji blok • V zaporedje (verigo) blokov lahko na poljubnem mestu vključimo nov prazen blok odpade potreba po reorganizaciji. • dodajanje zapisa v popolnoma zaseden blok: • v ‘verigo’ dodaj nov blok • zapisezasedenega bloka in dodani zapis enakomerno razporediš v oba bloka • uporabi pravilo: naj bo zasedena vsaj polovica poljvsakega bloka preprečiš slabo izkoriščenost prostora • Primerno: redke datoteke / nevezani zapisi
2.2. Urejenost zapisov s kazalci Kdaj? – ko so zapisi zaporedne fizične datoteke vezani na polje Kako?zaporedje zapisov znotraj bloka uredi (poveži) s kazalci primer – logičnemu zapisu tip Oseba = (Maticna_stevilka : desetiški(6), Ime : znakovni(20), Naslov : znakovni(30)) Ključ = (Maticna_stevilka) : razločevalni se priredi tip fizičnega zapisa: tip Oseba = (Maticna_stevilka : desetiški(6), Ime : znakovni(20), Naslov : znakovni(30), Kazalec : kazalčni)) Ključ = (Maticna_stevilka) : razločevalni
Urejenost zapisov s kazalci (nad.) • kazalec v posameznem zapisu = naslov polja, v katerem se nahaja logično naslednji zapis • v bloku se nahaja veriga zapisov • veriga se prične s kazalcem, ki je sestavni del metapodatkov bloka • ta kazalec kaže na logično prvi zapis • veriga se konča z zapisom, ki vsebuje slepi kazalec (NULL) • DODAJANJE ZAPISA • ciljni blok ima še kakšno prosto polje - enostavno izvedljivo • ciljni blok je zaseden dodani zapis se shrani v prosto polje, ki se nahaja na posebnem področju imenovanem prelivno področje. • Uporabljata se dve vrsti prelivnih področij: lokalna prelivna področjain globalno prelivno področje
Prelivna področja Lokalna prelivna področja rezervirani deli blokov fizične datoteke, ki se ob inicializaciji datoteke ne izkoristijo za shranjevanje zapisov (zlata rezerva ) Globalno prelivno področje blok ali skupina blokov ležečih na koncu fizične datoteke (lahko pa tudi v posebni prelivni datoteki - v tem primeru je logična datoteka shranjena v osnovni (zaporedni) datoteki in v prelivni (neurejeni) datoteki)
Primerjava: globalna lokalna prelivna področja • slabost lokalnih prelivnih področij: • slaba izkoriščenost pomnilnega prostora po inicializaciji datoteke • omejena kapaciteta • prednost lokalnih prelivnih področij: • hitrost dostopa do zapisov - zapis najdemo vedno v prebranem ciljnem bloku • slabost globalnih prelivnih področij: • Potrebno branje dodatnega bloka (ali celo iskanje druge datoteke po datotečnem seznamu) • prednost globalnih prelivnih področij: • po velikosti (skoraj) ni omejeno (po potrebi se lahko razširi z novimi bloki)
3. Faktorizacija • preslikava zapisov logične datoteke v dva dela: • na fizične zapise, ki vsebujejo ključe logičnih zapisov in kazalce, • na fizične zapise, ki vsebujejo preostale dele logičnih zapisov • fizične zapise shranimo v dveh fizičnih datotekah, ki ju poimenujemo datoteka Ključ in datoteka Ostali-podatki. • datoteka ključ je zaporedna datoteka • datoteka Ostali-podatki pa neurejena datoteka
Primer faktorizacije Tipu logičnega zapisa: tip Oseba = (MaticnaStevilka:desetiški(6), Ime:znakovni(20), Naslov : znakovni(30)) Ključ = (Maticna_stevilka) : razločevalni se priredita tipa fizičnih zapisov: tip KljučOseba = (MaticnaStevilka:desetiški(6), Kazalec : kazalčni)) Ključ = (Maticna_stevilka) : razločevalni tip PodatkioOsebi = ( Ime : znakovni(20), Naslov : znakovni(30)) Uporaba faktorizacije je smiselna, če je ključ veliko krajši kot preostali del logičnega zapisa.
Prednosti / slabosti faktorizacije • Prednost: če je ključ kratek, je datoteka Ključ je veliko krajša: posamezni fizični blok ima veliko več zapisov, kot pri nefaktorizirani datoteki pospešijo se vsi postopki ažuriranja • slabost faktorizacije: • ko najdemo iskani zapis datoteke Ključ, je potrebno prebrati še en blok datoteke Ostali_podatki, da pridemo do vseh podatkovnih elementov logičnega zapisa • težave, če se pogosto spreminja vrednost ključa (počasnost) DODAJANJE ZAPISOV • shranimo zapis tipa ostali_podatki v neurejeno datoteko Ostali_podatki • dodamo zapis tipa ključ s kazalcem v zaporedno datoteko Ključ, pri čemer kaže kazalec na shranjeni zapis 'ostali podatki' BRISANJE ZAPISA • zadošča, da izbrišemo le ustrezni zapis iz datoteke Ključ ( 'ostali podatki postanejo nedostopni). • če želimo optimalno izkoristiti datoteko Ostali_podatki, je potrebno ustrezno polje, označiti kot prosto polje
Iskanje zapisov zaporedne datoteke(algoritmi) • zaporedno iskanje O(n) • dvojiško iskanje O(log2n) • statistično iskanje • neposredno iskanje • uporabno za iskanje po ključu; • pri razločevalnem ključu se iskanje konča, ko najdemo prvi ustrezni zapis • ključ ni razločevalenpoišči še preostale zapise z enako vrednostjo ključa
Statistično iskanjepogoj: poznavanje razporeditve vrednosti ključev zapisov Postopek: • domeno ključev razdelimo na n intervalov • za vsak interval ugotovimo % pripadajočih zapisov • porazdelitev zapisov prikaži s porazdelitveno tabelo • s pomočjo porazdelitvene tabele določi ciljni blok • ciljni blok = osnova za nadaljnje iskanje zapisa • glede na vrednost ključev prvega in zadnjega zapisa v bloku nadaljuj z iskanjem: • znotraj bloka • z zaporednim iskanjem po naslednjih blokih ali • z vzvratnim zaporednim iskanjem po predhodnih blokih
Neposredno iskanjepogoj: pričakovano število zapisov v datoteki število možnih vrednosti razločevalnega ključa Kako?- za vsak zapis predvidi eno polje v datoteki lega zapisa v datoteki je neposredno odvisna od vrednosti ključa zapisa; določena je s funkcijo: naslov_polja = f(vrednost_ključa) Funkcija f je bijektivna! Postopek • s pomočjo funkcije izračunaj naslov polja (št. fizičnega bloka, odmik) • preberi fizični blok • preveri, ali je polje z izračunanim naslovom zasedeno ali ne