2 fisiere v5

21
Cap 1. Sistemul de fişiere 1 Cap. 1. Organizarea sistemului de fişiere Sisteme de fişiere Păstrarea datelor în calculator se rezolvă cu ajutorul blocului de memorie a calculatorului. Singurul dezavantaj este acela că atunci când închidem programul toate informaţiile se vor pierde. Alternativa ar fi păstrarea lor pe un suport extern (hard-disk), în fişiere. Pentru a putea folosi fişiere, trebuie să avem posibilitatea să efectuăm câteva funcţii esenţiale: citire din fişier, scriere în fişier, regăsire informaţii. Din punct de vedere istoric primele colecţii de date pe calculator au fost create şi exploatate sub forma unor fişiere sau sisteme de fişiere gestionate direct prin sistemul de operare. Deşi acest mod de lucru este astăzi practic depăşit, o analiză a sistemelor de fişiere şi a sistemelor de gestiune a fişierelor se justifică cel puţin din următoarele motive: înţelegerea limitărilor specifice sistemelor de fişiere permite o mai bună înţelegere a necesităţii utilizării bazelor de date; un număr de probleme specifice sistemelor de fişiere pot să apară şi în cazul utilizării bazelor de date dacă nu se înţelege 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 fişiere sunt: 1) Proiectantul trebuie să posede cunoştinţe avansate de programare, sisteme de operare şi utilizarea suporturilor pentru păstrarea informaţiei. 2) Aplicaţiile sunt puternic dependente de structura datelor. 3) Pentru implementarea fişierelor sunt utilizate limbaje procedurale care pun la dispoziţie doar comenzi şi funcţii elementare specifice operaţiilor cu fişiere. 4) Fiecare fişier trebuie să dispună de propriul program de gestiune care să permită: crearea structurii fişierului; inserarea de noi date; eliminarea datelor;

Upload: eancrimicri

Post on 09-Nov-2015

225 views

Category:

Documents


0 download

DESCRIPTION

baze date

TRANSCRIPT

  • 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