Upload
eancrimicri
View
224
Download
0
Embed Size (px)
DESCRIPTION
baze date
Citation preview
Cap1.Sistemuldefiiere
1
Cap.1.Organizareasistemuluidefiiere
Sisteme de fiiere Pstrarea datelor n calculator se rezolv cu ajutorul blocului de memorie a calculatorului.
Singurul dezavantaj este acela c atunci cnd nchidem programul toate informaiile se vor
pierde. Alternativa ar fi pstrarea lor pe un suport extern (hard-disk), n fiiere.
Pentru a putea folosi fiiere, trebuie s avem posibilitatea s efectum cteva funcii
eseniale: citire din fiier, scriere n fiier, regsire informaii.
Din punct de vedere istoric primele colecii de date pe calculator au fost create i
exploatate sub forma unor fiiere sau sisteme de fiiere gestionate direct prin sistemul de
operare. Dei acest mod de lucru este astzi practic depit, o analiz a sistemelor de fiiere i
a sistemelor de gestiune a fiierelor se justific cel puin din urmtoarele motive:
nelegerea limitrilor specifice sistemelor de fiiere permite o mai bun nelegere a necesitii utilizrii bazelor de date;
un numr de probleme specifice sistemelor de fiiere pot s apar i n cazul utilizrii bazelor de date dac nu se nelege deosebirea fundamental de abordare n cele dou
cazuri;
sunt puse mai bine n eviden avantajele noilor mijloace de gestiune a datelor.
Principalele dezavantaje n utilizarea sistemelor de fiiere sunt:
1) Proiectantul trebuie s posede cunotine avansate de programare, sisteme de operare
i utilizarea suporturilor pentru pstrarea informaiei.
2) Aplicaiile sunt puternic dependente de structura datelor.
3) Pentru implementarea fiierelor sunt utilizate limbaje procedurale care pun la
dispoziie doar comenzi i funcii elementare specifice operaiilor cu fiiere.
4) Fiecare fiier trebuie s dispun de propriul program de gestiune care s permit:
crearea structurii fiierului; inserarea de noi date; eliminarea datelor;
Cap1.Sistemuldefiiere
2
modificarea datelor; vizualizarea datelor.
Pentru aceste operaii, chiar i ntr-un sistem de dimensiuni mici era necesar scrierea a
cteva sute de programe.
Exemplu:
Se estimeaz c ntr-un sistem simplu cu 20 de fiiere de date erau necesare 20 programe
pentru crearea fiierelor, 320=60 programe pentru actualizarea datelor (adugare,
modificare, eliminare) i cel puin 1020=200 programe pentru realizarea rapoartelor. La
acestea trebuie adugate programele de testare, validare, tratarea unor situaii speciale, deci n
total peste 300 de programe. Scrierea, testarea i ntreinerea acestor programe era deosebit de
costisitoare i dificil.
5) Protecia datelor n sistemele de fiiere este destul de dificil, mai ales n sistemele
multiutilizator. Din aceast cauz a proliferat idea sistemelor cu proprietar unic.
Avantajele unei astfel de abordri sunt:
creterea securitii datelor; posibilitatea adoptrii structurii optime pentru rezolvarea problemelor
specifice.
Principalele dezavantaje ale ideii proprietarului unic sunt:
imposibilitatea dezvoltrii unor aplicaii globale, intersectoriale; redundana mare a datelor datorat reprezentrii acelorai date n fiiere
diferite specifice fiecrei aplicaii.
6) Redundana datelor presupune utilizarea acelorai date n forme identice sau
asemntoare n mai multe sisteme de fiiere ale intreprinderii (duplicarea datelor).
Duplicarea necontrolat a datelor poate avea mai multe efecte negative i anume:
utilizarea neraional a resurselor sistemului informatic; utilizarea neraional a forei de munc care realizeaz operaii deja
rezolvate n alte sectoare;
inconsistena logic a datelor care n esen nseamn c date cu aceeai semnificaie pot avea valori diferite n fiiere diferite.
7) Inconsistena logic a datelor poate s apar din mai multe motive:
decalaje n actualizarea datelor;
Cap1.Sistemuldefiiere
3
precizie diferit de reprezentare a datelor numerice; utilizarea unor convenii diferite n reprezentarea datelor (de exemplu
utilizarea truncherii sau rotunjirii pentru anumite date numerice, utilizarea
alfabetului englez sau romn la scrierea numelor, modul de reprezentare al
datei calendaristice etc).
8) Dificulti enorme la reorganizarea sistemului informaional prin necesitatea
modificrii nu numai a structurii datelor dar i a programelor de gestiune i aplicative.
Toate aceste probleme impuneau utilizarea unor specialiti cu calificare superioar n
proiectarea i utilizarea sistemelor de fiiere ns cu cunotine limitate n domeniul pentru
care era creat sistemul. Majoritatea timpului de lucru al proiectanilor era dedicat programrii
i nu rezolvrii unor probleme specifice sectorului de activitate. Complexitatea problemelor
software fcea aproape imposibil dialogul cu beneficiarul care de obicei are cunotine
informatice de nivel sczut. Din aceast cauz a fost necesar introducerea altor forme de
organizare a datelor, care s elimine pe ct posibil toate problemele menionate anterior.
Aceast nou form de organizare a datelor o reprezint baza de date. Trebuie ns neles c
trecerea la organizarea datelor sub form de baz de date nu elimin automat toate
neajunsurile semnalate la sistemul de fiiere. Astfel, o proiectare sectorial a bazelor de date
poate menine n continuare redundana datelor i implicit pericolul inconsistenei datelor.
Trecerea de la sisteme de fiiere la baze de date creaz doar premisele nlturrii acestor
deficiene.
Memorarea inregistrrilor i organizarea fiierelor primare
Structura general ierarhica a memoriei unui calculator este prezentat n figura 1.
Memoria Primar este o memorie volatil, iar memoriile secundar i teriar sunt
memorii persistente (nevolatile).
Datele dintr-o baz de date sunt prin natura lor date persistente deci vor fi pstrate n
memoria secundar, asigurmd pstrarea acestora i n lipsa alimentrii cu energie.
Suporturile folosite sunt discurile magnetice, benzile magnetice, CD, DVD, etc.
Structura de date specific pstrrii datelor n memoria teriar este fiierul. Acesta
poate fi privit ca o colecie de nregistrri, iar fiecare nregistrare ca o colecie de cmpuri.
Sistemul de fiiere trebuie s ne ofere operaii de: creare i distrugere a fiierelor,
denumire a fiierelor (de fiecare dat cnd ai de-a face cu mai multe obiecte de acelai fel se
Cap1.Sistemuldefiiere
4
pune problema de a le distinge prin nume diferite), de modificare i inspectare a coninutului
fiierelor.
Modurile n care se pot realiza aceste operaii sunt nenumrate, influenate fiind de
feluritele proprieti pe care le dorim. De exemplu sistemul de operare CP/M are un singur
director (folder) n care se afl toate fiierele. Din cauza aceasta oricare dou fiiere sunt
distinse numai prin numele lor, deci nu putem avea pe acelai disc dou fiiere cu nume
identice.
Fig. 1.1 Structura unui sistem de calcul
MS-DOS folosete o ierarhie (un arbore) de directoare, fiecare avnd un nume la
rndul lui. Fiecare fiier se afl ntr-un director, n directoare diferite putnd exista fiiere cu
acelai nume. Identificarea unui fiier se face att prin numele lui, ct i prin calea care
trebuie parcurs pentru a ajunge la el.
Operaiile care se pot executa asupra fiierelor se mpart n dou categorii:
- Operaii de regsire : nu modific datele din fiier, ci doar localizeaz una sau
mai multe nregistrri pe baze unui criteriu
- Operaii de actualizare : datele din fiier sunt modificate prin inserarea sau
adugarea de nregistrri
innd cont de numrul de nregistrri asupra crora acioneaz o operaie, se pot pune
n eviden dou categorii de operaii:
Procesor
Memorieprimar
MemoriaCache Memoriaprincipal
Memoriesecundar
BazededateS.O.
Aplicatii
Memorieteriar
Cap1.Sistemuldefiiere
5
- Operaii la nivel de nregistrare
Pot include operaii de regsire nregistrare, citire nregistrare, gsire
nregistrare urmtoare, tergere nregistrare, modificare , inserare.
- Operaii peste seturi de nregistrri
Includ operaiile executate peste seturi de nregistrri: gsete toate
nregistrrile care ndeplinesc un anumit criteriu, gsete toate nregistrrile ntr-o
anumit ordine, reorganizare
Optimizarea accesului la disc
Discul poate fi analizat din punct de vedere fizic (construcie, pri componente, mod de
funcionare) i logic (structura logic a informaiei, modalitile de accesare a informaiei
stocate, factorii care afecteaz performanele discului).
Parametrii ce caracterizeaz discul sunt:
- cantitatea de informaii ce poate fi memorat [Kb, Mb, Gb];
- timpul de acces la informaie [ms];
-viteza de transfer a informaiei din i spre memoria RAM [Kb/s], baud.
Structura logic a discului reprezint organizarea discului, caracteristicile acestuia i
modul de utilizare. Ea este descris n tabela de adrese care specific:
- partea ocupat i partea liber a discului;
- partea neutilizabil datorit unor defeciuni (bad-uri) fizice.
Topologic, structura logic de nregistrare a informaiei pe disc presupune
dou zone disjuncte:
- zona sistem [system area] care conine tabela de adrese i alte informaii
necesare sistemului de operare pentru a accesa rapid i eficient informaia de pe disc;
- zona de date [data area] care conine datele propriu-zise structurate conform
sistemului de cutare i regsire a informaiei, specific sistemului de operare care a creat
zona sistem.
Discul fizic este material, poate fi accesat doar la nivel de BIOS pe baza tripletului:
- numrul suprafeei de nregistrare;
- numrul cilindrului;
- numrul sectorului.
Zona sistem a discului conine tabela de partiii i unul sau mai multe discuri logice.
Cap1.Sistemuldefiiere
6
Discul logic este un ansamblu de informaii organizate pentru a fi recunoscute i
accesate de sistemul de operare MS-DOS cu ajutorul identificatorului.
Discurile logice recunoscute de sistemul de operare MS-DOS sunt:
- floppy disk, FDD, create pe discuri flexibile;
- HDD create pe discuri fixe;
- non-disc, discuri RAM create n memoria intern sau pe benzi, cu ajutorul
unor programe care emuleaz mecanismul standard de disc;
- asignate, create pe diferii supori fizici prin comanda ASSIGN;
- substituite, create pe diferii supori fizici, prin comanda SUBST;
- fantom, create pe diferii supori fizici;
- de reea, create i accesate de programele de reea (Network Support
Software);
Timpul de acces la un fiier este influenat de cteva componente temporale:
o timpul de cutare (ts) timpul necesar pentru poziionarea capului de citire/scriere pe pista cosrespunztoare
o ntrzierea de rotire (trd) reprezint timpul necesar ca blocul vizat s ajung sub capul de citire/scriere
o timpul de transfer (tu) timpul necesar pentru citirea/scrierea unui bloc Lund n calcul cele trei componente, timpul de acces (tA) se calculeaza ca fiind:
tA = tu + trd + ts
Pentru a mbuntti timpul de acces, datele contectate logic ar trebui s se afle n blocuri
ct mai apropiate, adic situate n blocuri consecutive n ordinea corect pe aceeai pist sau
pe piste alturare.
Discurile pot reprezenta punctul slab al performanelor unui sistem i al fiabilitii
acestora deoarece performanele lor, dei sunt mbunttite continuu sunt mult mai slabe dect
al restului componentelor din sistem. Cderea unui disc duce automat la pierderea tuturor
datelor pstrate pe el. Din aceast cauz a fost necesar s se elaboreze strategii i tehnici
hardware pentru a mpiedica pierderea datelor si reducerea timpului de reconstruire a bazelor
de date.
Un pachet de discuri reprezint o structur realizat cu dublu scop:
- mbuntirea performanelor n utilizarea bazelor de date
- creterea siguranei n funcionare
Cap1.Sistemuldefiiere
7
Ideea de baz este aceea de a putea citi simultan ct mai multe haine. Pentru aceasta este
necesar ca discurile s fie astfel grupate nct din punctul de vedere al utilizatorului s existe
doar un singur disc.
n 1987, Patterson, Gibson i Katz de la Universitatea din Berkeley din California a
publicat o lucrare numit: Un caz de discuri redundante din discuri ieftine (RAID -
Redundant Arrays of Inexpensive Disks). Aceast lucrare descrie diferite tipuri de discuri,
referite prin acronimul RAID. Ideea de baz a fost s combine mai multe discuri ieftine ntr-
un set de discuri a cror performan s depeasc performana discurilor SLED (Single
Large Expensive Drive). n plus, calculatorul va vedea acest set de discuri ca un singur disc.
Berkeley a descris 5 tipuri de arhitecturi: Raid 1 Raid 5, fiecare oferind protectie la erori. In plus fa de acestea 5 mai este descris o arhitectur de discuri neredundante, cunoscut ca RAID 0.
Data stripping
Fundamental pentru RAID este stripping-ul, o metod de a concatena mai multe
discuri ntr-o singur unitate de stocare. Stripping-ul implic partiionarea informaiei pe
discuri diferite astfel. ntruct cantitatea de informaie care trebuie citit de pe fiecare disc este
mai mic (n cazul a dou discuri, la jumtate), iar operaiile de I/O se execut n paralel,
timpul de acces se mbuntete.
Un potenial punct slab al sistemelor RAID este faptul c ntruct operaiile se execut
n paralele, trebuie sincronizat rotaia discurilor pentru obinerea unei performane maxime.
Fr aceast sincronizare, fiecare disc din RAID s-ar afla pe alt poziie de rotaie. ntruct
operaia de I/O nu se poate completa dect atunci cnd ambele discuri au accesat partea lor de
informaie, timpul de acces ar fi dat de discul care indeplineste operaia cel mai lent.
RAID 0
Este un sistem neredundant. La acest nivel data este mprit pe mai multe discuri.
ntruct nu exist redundan, performana este foarte bun, dar dac la unul din discuri apare
o eroare, ntreaga informaie se pierde, neexistnd posibilitatea de recuperare a acesteia.
Acest nivel se mai numete stripping
RAID 1
Acest nivel implic redundaa informaiei, prin duplicarea acesteia pe dou sau mai
multe discuri. Performana unui astfel de sistem, comparat cu a unui sistem non-RAID este
Cap1.Sistemuldefiiere
8
mai bun la citire i mai slab la scriere. La citire timpul de acces este dat de discul cel mai
rapid, care furnizeaz primul informaia. La scriere, timpul de acces este dat de discul cel mai
lent, cel care termin ultimul operaia.
Fig.1.2 Organizarea tip RAID 0
n cazul cderii unuia dintre discuri, nu exist pierderi de informaie, ntruct informaia
este redundant. Intruct unul din discuri este folosit pentru duplicarea datelor, costul este mai
mare.
Acest nivel se mai numete i mirroring (oglindire).
Fig. 1.3 Organizarea tip RAID 1
RAID 2
Acest tip de sistem folosete codurile Hamming pentru detectarea i corectarea erorilor.
Este indicat pentru folosire la discurile care nu au deja implementat un sistem de detectare a
A0
A1
A2
A3
A0
A1
A2
A3
RAID1
DISC0 DISC1
A01
A11
A21
A31
A02
A12
A22
A32
RAID0
DISC0 DISC1
Cap1.Sistemuldefiiere
9
erorilor. n zilele noastre toate discurile SCSI au deja implementat aceast funcie, astfel
nct acest tip de Raid este puin folosit.
RAID 3
Sistemele Raid 3 mpart informaia la nivel de octet pe cteva discuri, iar biii de
paritate sunt reinui pe un disc separat. Este oarecum similar cu nivelul 4. Un astfel de sistem
necesit cel puin 3 discuri.
Pentru o eficien maxim este nevoie de suport hardware dedicat.
Fig. 1.4 Organizarea tip RAID 3
RAID 4
Sistemele RAID 4 mpart informaia la nivel de bloc pe mai multe discuri, avnd biii de
paritate pe un alt disc. Biii de paritate permit recuperarea informaiei n cazul cderii unuia
din discuri. Performana unui sistem de nivel 4 este foarte bun la citire (asemntoare cu
nivelul 0). La scriere este necesar ca paritatea s fie modificat de fiecare dat. Acest lucru
duce la timpi mari pentru scrierile random, dar scrierile secveniale sunt destul de rapide.
ntruct numai unul din discuri are informaie redundant, costul pe un megabyte stocat
este destul de sczut.
RAID 5
Sistemele RAID de nivel 5 sunt similare cu sitemele RAID 4, numai c biii de paritate
sunt distribuii pe mai multe discuri. Acest lucru mrete viteza la scriere ntruct discul de
paritate nu mai este cea mai lent marte a sistemului. Totui performana la citire este mai
A01
A11
A21
A31
A02
A12
A22
A32
RAID3
DISC0 DISC1 DISCDEPARITATE
A0parity
A1parity
A2parity
A3parity
Cap1.Sistemuldefiiere
10
sczut dect la sistemele de nivel 4, ntruct paritatea trebuie citit de pe mai multe discuri.
Costul pe megabyte este acelai ca la nivelul 4.
Fig. 1.5 Organizarea tip RAID 5
RAID 6
Este o structur ce conine cod corector de erori tip Reed-Solomon. Este similar cu
RAID 5, dar include un al doilea set de bii de paritate, care este distribuit pe diferite discuri,
oferind astfel o protecie foarte bun la erori i caderi de discuri.
RAID 7
A fost prezentat n anul 2004 i a fost oferit doar de un singur productor. Include
sistem de operare pe post de controler n timp real, o magistral de foarte mare vitez, precum
i alte caracteristici specifice unui calculator independent.
Sistemele RAID pot fi combinate, astfel rezultnd sisteme foarte solide:
RAID 10
Combin RAID 0 i RAID 1. Ofer performae ridicate fa de un sistem RAID 1 dar la
un cost mult mai ridicat.
Exist dou tipuri de sisteme RAID 10:
RAID 0+1 : datele sunt imprite pe mai multe discuri, iar apoi se aplic funcia
de duplicare.
RAID 1+0: datele sunt duplicate, iar apoi sunt mprite pe mai multe discuri.
A01
A11
A21
A3parity
A02
A12
A2parity
A31
RAID5
DISC0 DISC1 DISC3 DISC4
A0parity
A13
A22
A32
A03
A1parity
A23
A33
Cap1.Sistemuldefiiere
11
Fig. 1.6 Organizarea tip RAID 10
RAID 50
Un sistem de tip RAID 5 este mprit pe mai multe discuri pentru mbuntirea
performanelor, fr a pierde protecia datelor.
RAID 53
Acest sistem folosete mprirea pe mai multe discuri a discurilor virtuale oferite de
RAID 3.
Tehnici de organizare a fiierelor Un element cheie n organizarea intern a fiierelor este modul n care sunt organizate
nregistrarile n fiier, intruct aceasta afecteaz performanele sistemului pentru gsirea i
accesul la nregistrri. Prin organizare ne referim la aranjarea logic a nregistrrilor n fiier
(ordinea lor).
Alegerea organizrii este o decizie de design ntruct trebuie fcut lund n considerare
obinerea unei performane ct mai bune pentru operaiile care se vor efectua cu acest fiier.
Cele mai importante criterii sunt:
accesul rapid la o anumit nregistrare uurina n adugare, tergerea sau modificarea unui anumit articol eficiena ocuprii spaiului pe disc
RAID0RAID0
A01
A11
A21
A31
A02
A12
A22
A32
A01
A11
A21
A31
A02
A12
A22
A32
RAID0+1
DISC0 DISC1 DISC2 DISC3
DISCVIRTUAL1 DISCVIRTUAL2RAID1
Cap1.Sistemuldefiiere
12
redundana datelor (protecia la erori) Unele cerinte sunt n contradicie una cu alta. Este sarcina designer-ului de a gsi un
compromis ntre ele. De exemplu, accesul rapid la informaie presupune stocarea unor date
suplimentare, ceea ce este n contrast cu eficina ocuprii spaiului pe disc.
n acest curs vom considera 5 modele de organizare:
oarecare secveniale secveniale indexate indexate hash
Fiierele pot fi grupate n mai multe categorii:
fiiere neordonate: o nregistrrile sunt adugate la finalul fiierului. o inserarea necesit un timp constant o operaia de Select/Update/Delete necesit un timp de n/2 (n
numrul de nregistrri)
fiiere ordonate o nregistrrile sunt inserate n ordine n interiorul fiierului o inserarea necesit un timp de log2n pentru a reorganiza fiierul
fiiere indexate o nregistrrile sunt inserate la finalul fiierului o se creaz un index care specific unde se gsete nregistrarea n
interiorul fiierului
o inserarea necesit un timp constant, la care se adaug log2n pentru index
o operaiie de Select, Update sau Delete necesit un timp de log2n pentru gsirea nregistrrii n index i apoi un timp constant pentru
accesul acesteia n fiier
Fiiere oarecare Este cea mai simpl structur posibil. Datele sunt adugat e n fiier n ordinea sosirii
lor. Nu este necesar ca datele s aib acelai format n ntreg fiierul. Acest lucru implic
faptul c trebuie s se auto-descrie.
Cap1.Sistemuldefiiere
13
n ciuda simplittii adugrii i modificrii, cutarea ntr-un astfel de fiier presupune
parcurgerea i analizarea ntregului coninut. De obicei se folosesc numai ca i fiiere
temporare, urmnd ca la un pas ulterior datele s se structureze.
Fiiere secveniale (sortate) Este cea mai folosit structur de pentru fiierele de dimensiuni mari.
Toate nregistrrile au aceeai dimensiune i aceeai structur. nregistrrile sunt sortate
n fiier dup un cmp scalar numit cheie. Cheia trebuie s identifice n mod unic o anumit
nregistrare. Aceast tip de organizare este util pentru prelucrarea n numr mare a ntregului
fiier, fr inserri i tergeri, cutarea i accesul la o anumit nregistrare fiind uor de
realizat.
Adugarea unei nregistrri este un proces complicat ntruct trebuie pstrat structura
ordonat. Acest operaie presupune reorganizarea ntregului fiier.
Utilizarea unei cutri bazate pe o valoare din cheia de ordonare implic acces rapid
dac este utilizat, de exemplu tehnica cutrii binare, avantajoas fa de cutarea liniar. O
cutare binar acceseaz de obicei log2nregistrri, mult mai puin dect o cutare secvential,
care presupune n media b/2 blocuri dac nregistrarea exist, sau chiar b nregistrri dac
aceasta nu exist n fiier.
Ordonarea dup o cheie de ordonare nu ofer nici un avantaj n cazul cutrii dup
restul cmpurilor din nregistrare. n acest caz cse va face o cutare liniar.
Operaiile de inserare i tergere sunt foarte costisitoare din punctul de vedere al
timpului de execuie, ntruct fiierul trebuie s rmn sortat.
Inserarea unei noi nregistrri presupune civa pai distinci:
trebuie gsit poziia corect n fiier unde se va face inserarea (n funcie de cheia de sortare)
trebuie creat spaiu pe disc pentru inserare. Aceasta presupune mutarea nregistrrilor urmtoare , lucru ce consuma foarte mult timp, mai ales n cazul fiierelor de dimensiuni mari
Stergerea dintr-un fiier ordonat se poate face n dou moduri:
tergere logic. n acest caz nregistrarea nu va fi eliminat din fiier. Stergerea logic nu implic nici o
tergere fizic din fiier. De aceea este mult mai rapid. Ea implic introducerea unui
caracter special n nregistrarea scris (respectiv o nou variabil sters de tip boolean
care s aib valoarea true implicit sau false dac am ters nregistrarea) care s ne
Cap1.Sistemuldefiiere
14
semnaleze c nregistrarea respectiv este tears i va trebui ignorat de acum nainte
n toate operaiile din fiier.
Exemplu: avem variabila pret care are valoarea 500. Atunci cnd dorim s o
tergem, i vom modifica doar valoarea n fiier din 500 n -500 (am adugat semnul
minus). Prin convenie, am stabilit c nu exist nici un pre negativ. Prin introducerea
semnului minus, am semnalat c nregistrarea respectiv am ters-o i va trebui
ignorat pentru operaiile ulterioare de citire i scriere, dei ea exist n continuare n
fiier.
ntruct nu se terge nimic din fiier, dimensiunea acestuia se mrete continuu, chiar
dac acesta este gol (toate nregistrrile din el sunt terse logic). Acest lucru impune ca
periodic s se efectueze tergerea fizic.
Momentele de timp cnd se va realiza tergerea fizic trebuie astfel alese nct s nu
perturbe utilizarea bazei de date.
tergerea fizic tergerea fizic implic tergerea efectiv a informaiei din fiier. Pentru aceasta se face
urmtorul artificiu: se va crea un nou fiier cu un alt nume n care se vor copia toate
nregistrrile, mai puin cea care se dorete s se tearg, dup care fiierul original va fi
ters, iar cel nou creat se va redenumi cu numele celui ters.
O alt metod frecvent utilizat este crearea unui fiier de tranzacii temporar,
neordonat. Fiierul principal se numete fiier principal, sau master.
n momentul cnd se face o nou adugare n fiier, aceasta se va aduga n fiierul
neordonat, la finalul acestuia. Periodic fiierul de tranzacii este unificat cu fiierul master n
procesul de reorganizare. Inserarea devine mai eficient, dar se pierde timp la cutare ntruct
dac nregistrarea nu este gsit n fiierul master (sortat), ea va trebui cutat n fiierul
temporar. Deoarece acesta este nesortat, cutarea se va face secvenial.
Fiiere secveniale indexate Un index este compus din dou componente: o cheie i un pointer.
Cheia este de obicei o valoare cheie a relaiei i este folosit s identifice i s localizeze
nregistrrile cutate.
Pointer-ul este o adres de pe disc unde se poate gsi restul nregistrrii.
Un exemplu este cel utilizat uzual n cri. ntr-o carte gsim la sfrit termenii
importani (cheile de cutare) aranjai n ordine alfabetic. La fiecare termen din aceast list
Cap1.Sistemuldefiiere
15
este furnizat un numr de pagin (pointerul ctre locaie) n care apare i este explicat
termenul. Utiliznd aceast list se gsete imediat un termen cutat. Fr o astfel de list,
neexistnd o ordine de ghidare a cutrii, singura alternativ este explorarea complet a
ntregului material pentru a gsi termenul dorit.
Cele mai cunoscute tipuri de indecsri sunt: indexarea ordonat i indexarea hash
Pentru indexarea ordonat, nregistrrile sunt adugate n fiier n ordinea inserrii,
fcndu-se numai ordonarea indecilor.
Indexarea folosind hash-ingul presupune identificare unei funcii care primete ca intrare valoarea cheii dintr-o nregistrare, i returneaz la ieire adresa fizic de pe disc unde
se regsete nregistrarea. Timpul de selecie va fi totdeauna constant.
Un fiier secvenial indexat depete problema manionat anterior. De asemenea
operaia de cutare se realizeaz mult mai rapid. Cea mai simpl structur de indexare este cea
pe un singur nivel: exist un fiier separat n care se pstreaz perechi de date (cheie, pointer),
unde pointer-ul este poziia din fiier unde se regsete nregistrarea corespunztoare acelei
chei.
Acest schem se poate dezvolta ierarhic, astfel c indexul reprezint un alt fiier
secvenial care este de asemenea indexat (indexul de ordin 2).
Fiiereindexate
De ce s construim un singur index, pentru o anumit cheie din nregistrri? Indecii pot
fi construii pentru fiecare cmp care poate identifica n mod unic o nregistrare i al caror tip
permite sortarea. De aceea mai multi indeci vor da o flexibilitate mai bun pentru accesul la
date, prin posibilitatea de a cuta dup mai multe chei.
Indexarea multinivel permite o regsire a unei nregistrri cu valoare dat a cheii prin 3-
4 poziionri pe disc. Pentru un timp de acces disc care este n prezent sub 20 ms, aceasta
nseamn regsirea unei nregistrri dintr-o BD cu zeci de mii de articole n mai puin de 0,1
secunde. Avantajele indexrii fa de utilizarea hashingului constau n :
posibilitatea citirii ordonate a nregistrrilor, secvenial n ordinea cheii de indexare;
permite accesul direct la o nregistrare i parcurgerea n continuare a fiierului,
secvenial din acel punct, pentru a citi nregistrri care au egal o parte a cheii (studeni din
aceeai secie i an);
posibilitatea crerii mai multor fiiere index, pentru acelai fiier de date dup diferite
Cap1.Sistemuldefiiere
16
cmpuri care sunt chei secundare (exist mai multe nregistrri cu aceeai valoare a cmpului
index).
Pentru regsirea informaiilor n acces direct, performanele tuturor metodelor de
indexare sunt bune, dar indexarea are i dezavantaje care trebuie menionate:
utilizarea fiierelor index multinivel (cele mai des folosite), consum mult timp pentru
actualizarea fiierelor index la adugarea de noi nregistrri n BD mari, care limiteaz
utilizarea lor mai ales cnd exist mai multe fiiere index pentru un fiier de date;
spaiul disc consumat de fiierele index este de acelai ordin de mrime cu cel al
fiierelor de date i mult mai mare dect cel utilizat de directoarele de hashing.
Indecii se clasific dup tipul de cmp sau dup nivel i dup modul de organizare a
tabelei. O clasificare a acestora este urmtoarea:
1. Indexul primar este un index asociat unei tabele ordonate dup cmpul cheie al
tabelei, iar n structura de index se utilizeaz cmpul cheie.
2. Indexul secundar este un index construit tot pe baza unui cmp cheie, dar tabela nu
este ordonat dup cmpul cheie.
3. Indexul de grup (cluster) este un index construit dup cmpuri ce nu sunt cmpuri
cheie (criteriu de acces este diferit de cmpul cheie), iar tabela poate fi ordonat sau nu relativ
la criteriul de acces.
4. Indexul multinivel (se mai numesc i indeci de blocuri) se aplic oricror tabele.
Principiul de baz este de a construi niveluri de indexare pn cnd structura adiional de
date corespunde indexului de cel mai mare nivel poate fi memorat ntr-un singur bloc. Aceti
indeci se construiesc n dou forme: bazai pe arbori B i bazai pe arbori B
Un index primar este un fiier ordonat cu nregistrri de lungime fix avnd dou
cmpuri. Primul cmp al indexului este de acelai tip cu un cmp cheie ordonat al tabelei de
date, iar al doilea cmp este un pointer ctre un bloc (o adres a unui bloc).
Indecii secundari se aplic la tabele neordonate, indiferent dac valorile cmpului
dup care se face indexarea n tabela de date sunt sau nu distincte. Diferena fa de indexul
primar este faptul c acum nu mai este restricia s avem drept index un cmp cu valoare
unic (cheie). Indexul secundar este i el fiier ordonat cu dou cmpuri, n care primul cmp
este identic cu cel al tabelei de date, iar al doilea cmp este un pointer.
Cap1.Sistemuldefiiere
17
Fig. 1.7 Fiier indexat dup cmpul CNP
Indecii de grup sunt folosii cnd nregistrrile tabelei sunt indexate dup un cmp
care nu este cheie. n acest caz valorile cmpului folosit pentru indexare nu vor fi distincte.
Un astfel de cmp identific un grup de nregistrri (clustering field cmp de grupare).
n aceast situaie se poate crea un index ce faciliteaz gsirea nregistrrilor ce aparin
unui cmp.
Fig. 1.8 Indeci de grup
BAZA DE DATE CNP NUME
12333344 Elev 1
..........................
12333456 Elev 100
.........................
12445999 Elev 66
..........................
13445788 Elev 101
12345567
..........................
FISIERUL DE INDEX INDEX POINTER
12333344
12333456
12345567
13445788
12445999
............. ...................
BAZA DE DATE Nume Descriere
Alin Elev 1
Alin
......
Costel Elev 100
Costel Elev 66
.......
Ionel Elev 101
Gigel Elev 30
........................ .................................
FISIERUL DE INDEX INDEX POINTER
Alin
Costel
....................
....................
Ionel
Gigel
................... .....................
Cap1.Sistemuldefiiere
18
Ca i n cazul indexului primar, un index grupat este un fiier ordonat cu dou cmpuri.
Primul cmp va contine valori distincte ale cmpului dup care se face indexarea n fiier, iar
cel de-al doilea este un pointer ctre nceputul primului bloc care conine valoarea din cmpul
de grupare.
Fig. 1.9 Indeci multinivel
Un index multinivel, presupune ca fiierul de index s fie la rndul lui indexat,
construindu-se un nou index ctre el. Primul fiier index conine cte o valoare distinct
pentru fiecare cheie de indexare. Se poate crea un index primar pentru primul nivel, nivel
numit i nivel secund al indexului multinivel. Cum al doilea nivel este un index primar se
poate folosi metoda de ancorare a blocurilor, aa c al doilea nivel are cte o intrare pentru
fiecare bloc al primului nivel, ntruct este n esen un index primar.
TehniciHash
Un alt tip de organizare a fiierului este bazat pe tehnica hashing. Condiia de cutare
trebuie s fie de tipul egalitate pe un singur cmp numit cmp de hash. Se va utiliza o funcie
numit funcie hash care este aplicat acestui cmp cheie i furnizeaz adresa blocului de pe
BAZA DE DATE Nume Descriere
Ioana Elev 1
Alina
......
Ionel Elev 100
Cristi Elev 66
Alin
........ Elev 101
Claudiu
Cristian Elev 30
Marius
.................. ..........................
FISIERUL DE INDEX
INDEX POINTER
A
C
...............
...............
I
M
.............. ..................
FISIERUL DE INDEX
INDEX POINTER
Alin
Alina
...............
...............
Claudiu
Cristi
Cristian
.............. ..................
.............. ..................
Ionel
Ioana
................ ..........
Marius
................ .............
Cap1.Sistemuldefiiere
19
disc unde este memorat nregistrarea. O funcie uzual este (x) = x mod M, unde x este valoarea unui cmp hash de tip ntreg, ar M reprezint numrul maxim de valori.
Funcia se alege n funcie de natura cheilor. Dac ele sunt numerice, atunci (k)=k. n cazul cheilor alfanumerice, cea mai simpl funcie (k) este suma codurilor ASCII ale caracterelor din componena lor
Problema care poate apare cu cele mai multe funcii de hashing este aceea c nu
garanteaz totdeauna valori distincte. De exemplu daca M = 125 si x = 1255, vom avea
(1255) = 5. Dar aceeai valoare obinem si pentru x = 2505. O coliziune va apare atunci cnd valoarea cmpului hash pentru o nou nregistrare care trebuie inserat corespunde unei
adrese care conine deja o alt nregistrare. Trebuie ca noua nregistrare s fie inserat ntr-o
alt poziie. Aceast operaie se numete rezolvarea coliziunii.
Pe de alt parte este posibil ca distribuia valorilor obinute s fie profund neuniform,
n sensul c n timp ce pentru anumite sloturi vor exista coliziuni, multe sloturi vor rmne
neocupate.
Cerinele care trebuie ndeplinite de o funcie sigur sunt urmtoarele: 1. s poat fi aplicat unui bloc de orice lungime. 2. s produc un bloc de lungime fix 3. (x) este relativ uor de calculat pentru orice x, astfel nct implementarea s fie
simplu de realizat hardware si software.
4. Pentru orice cod h este practic imposibil de aflat x astfel nct (x) = - one-way function.
5. Pentru orice bloc x, este practic imposibil de gsit yx cu (y) = (x).
Coliziunile se pot rezolva prin mai multe metode:
adresare deschis Prin adresare deschis, toate elementele sunt memorate n tabela de hash. Pentru a
realiza operaiile cerute, verificm succesiv tabela de hash pn cnd fie gsim o
locaie liber (n cazul Inserrii), fie gsim elementul cutat (pentru Caut, Sterge).
Vom cuta n tabela de hash n ordinea 0,1,....,N-1.
Putem extinde funcia de hash astfel nct s conin i numrul de verificare ca
un al doilea parametru :U{0,1,....,N-1}{0,1,...,N-1}. Astfel, cnd vom insera un element, verificm mai nti locaia (k, 0), apoi (k, 1) etc. Cnd ajungem s verificm (k, N) putem s ne oprim pentru c tabela de hash este plin;
Cap1.Sistemuldefiiere
20
Pentru cutare aplicm aceeai metod; dac ajungem la (k, N) sau la o poziie goal nseamn c elementul nu exist. Stergerile se fac ns mai greu, pentru c nu se
poate terge pur i simplu un element deoarece ar strica tot hash-ul; n schimb, se
marcheaz locaia ce trebuie tearsa i se modific funcia Insereaz astfel nct s
vad locaiile marcate pentru tergere ca poziii goale (tergere logic).
hashing multiplu Se aplic o a doua funcie hashing dac prima a condus la coliziune i apoi, dac apare
din nou coliziune, adresarea deschis.
nlnuire Toate nregistrrile pentru care cheile intr n coliziune sunt inserate ntr-o list simplu
nlnuit. Vor exista astfel mai multe liste, fiecare coninnd nregistrri cu acelai cod de
dispersie. Pointerii spre primul element din fiecare list se pstreaz ntr-un tablou, la indexul
egal cu codul de dispersie:
Fig. 1.9 Rezolvarea coliziunilor prin nlnuire
Hashextern
n cazul fiierelor implementate pe disc tehnica de hashing se numete hasing extern. n
acest caz sloturile sunt nlocuite prin containere (bucket) care conin, grupuri de nregistrri.
Un bucket poate fi format dintr-un singur bloc sau un grup de blocuri contigue (cluster). n
figur se consider c fiecare container este format dintr-un singur bloc.
0
1
2
3
..
M1
0
0
0
0
Cap1.Sistemuldefiiere
21
Pentru a putea fi utilizat eficient, tabelul care conine adresa fizic a blocului trebuie s
fie ncrcat n memoria principal a sistemului. Problemele specifice ale hashingului intern
apar i la cel extern.
Coliziunea este o problem mal puin grav deoarece prin alegerea corespunztoare a
dimensiunii containerului i a funciei de hash, efectele acesteia pot fi diminuaate suficient de
mult dar nu excluse.
Fig. 1.9 Hashing extern
0
1
..
100
..
M1