ARCHIVI   INFORMATICI

Ogni volta che un programma viene eseguito, di regola esso legge, aggiorna e/o scrive una serie di dati i quali in blocco vengono acquisiti e/o riposti all'esterno. Questo è lo schema del cosidetto input/output del programma.

 

Un programma raramente muove un dato per volta in input/output, di regola gestisce diversi dati insieme, dunque i dati vanno archiviati in blocchi, cioè un file è costitutito da blocchi o recordAd esempio il programma-paghe elabora la paga di un operaio e per lo scopo acquisisce tutti i suoi dati in blocco cioè nome, cognome, matricola, anzianità lavorativa ecc. Alla fine stampa quanto gli è dovuto e cioè la paga lorda, la paga netta, i contributi, ecc. Anche questi dati collezionati insieme costituiscono un preciso record.

Un file è un insieme di record, che vengono fisicamente disposti su un supporto fisico chiamato anche mezzo o medium il quale in pratica è il disco rigido, oppure un disco floppy, CD ROM, nastro ecc. I record vengono disposti secondo criteri diversi ed i tre principali tipi - file sequenziale, ad indice e random - nascono in sostanza dal modo con cui i record vengono organizzati sopra il supporto fisico.

 

File Sequenziale: I record sono fisicamente disposti uno dietro all'altro. Formano un rigido ordine lineare e sono necessariamente elaborati in sequenza.
Il file sequenziale appare piuttosto rudimentale ma permette elaborazioni sofisticate grazie ad un piccolo artificio. Si sceglie un attributo ed i record sono ordinati secondo i valori crescenti di tale attributo. Cioè di regola un file sequenziale viene ordinato o sortato. Ad esempio il file Dipendenti (sequenziale) con il seguente tracciato record è ordinato secondo la matricola dei dipendenti.

Figura - Tracciato record Dipendenti

 

File ad indice: I record sono disposti nelle aree disponibili secondo un criterio di convenienza logistica. Si riempiono cioè le aree in modo da non sprecare spazi specie dopo aggiornameti, copiature, e cancellazioni. Chiaramente i record non possono essere messi in linea e per assenare loro i posti si adopera un indice che funziona in questo modo.
Si definisce ufficialmente una chiave, che è un attributo capace di identificare univocamente ogni record. L'indice, che di fatto è una tabella, collega un valore della chiave alla collocazione fisica del record. Supponiamo che il file Dipendenti (ad indice) sia caricato su un disco (vedi 145) e Matricola sia la sua chiave, allora l'indice (in figura) indica che i dati del dipendente con matricola 010 stanno nel cilindro 1 e nella pista 3, i dati di 012 si trovano nel cilindro 2 e nella pista 4, il record di 014 sta nel cilindro 1 e pista 4 ecc.

Figura - Schema di indice

L'accesso ai record avviene dunque mediante l'indice.

 

File random: Rassomiglia al tipo precedente nel senso che i record sono collocati liberamente sul supporto e non sono in sequenza fisica. Per assegnare la posizione, si usa uno speciale algoritmo detto algoritmo di randomizzazione che fa le veci dell'indice sopra visto.
Chiamiamo h la collocazione del record e k la sua chiave, un algoritmo di randomizzazione, ad esempio, divide la chiave per mezzo di un numero M qualsiasi, prende il resto della divisione ed aggiunge uno

h = k mod M + 1

La funzione di randomizzazione dovrebbe occupare al meglio gli spazi ed evitare collisioni cioè che due record diversi siano assegnati allo stesso posto.

Tale algoritmo è molto più veloce da usare rispetto all'indice ma questo vantaggio ha come contropartita un grosso difetto: i record si piazzano in modo lasco lasciando ampi spazi vuoti e non riutilizzabili. Sebbene di algoritmi di randomizzazione ne sono stati inventati tanti per risolvere il problema, nessuno riesce ad ottimizzare l'uso degli spazi, e per tale motivo il file random è poco popolare.

 

In linea di principio un programma qualsiasi accede ai record in modo sequenziale oppure secondo un ordine qualsiasi (detto anche random access). Il file sequenziale permette accessi eslusivamente sequenziali, mentre gli altri due offrono amedue le possibilità di accesso.

  Accesso

File Sequenziale

Solo sequenziale

File ad Indice

Sequenziale e qualsiasi

File Random

Sequenziale e qualsiasi

 

 

 

 

 

 

 

  Indietro

 

anno 2007





=