01. Organizzazione degli archivi

Sui file archivio sono possibili operazioni di:

    • inserimento di un nuovo record;

    • cancellazione e modifica di un record esistente;

    • ricerca di uno o più record.

La modalità con cui queste operazioni vengono fatte dipende profondamente dall'organizzazione dei file archivio.

Organizzazione fisica degli archivi

I file archivio sono registrati su memorie di massa e quindi risentono dei metodi di accesso consentiti dai supporti fisici.

    • Supporti ad accesso sequenziale (nastri): i file archivio registrati su questi supporti sono tali per cui, per accedere ad un particolare record, è necessario scorrere tutto il file, record per record. La registrazione ed il reperimento di un record possono avvenire solo in modo consecutivo al record precedentemente registrato o esaminato.

    • Supporti ad accesso diretto (dischi): su questi supporti è possibile accedere ai record sia sequenzialmente sia in modo diretto. Per accedere ad un record diventa, pertanto, preminente l'organizzazione logica dell'archivio.

Organizzazione sequenziale

Un file archivio con organizzazione logica sequenziale è tale per cui i record sono registrati nel file in modo contiguo (cioè uno di seguito all'altro) dall'inizio del file.

Consideriamo, ad esempio, il seguente file archivio nel quale la virgola rappresenta un separatore tra i campi e il punto e virgola il separatore tra i record.


1,D'Esposito,Giuliana,15/1/2000,Sorrento;2,Lamberti,Nunzio,3/2/2000,Napoli;3,Amori,Marina,22/10/1999,Roma;4,Accardo,Felicia,7/3/2001,TorredelGreco;5,Pistilli,Antonio,5/7/1997,Formia;6,Pistilli,Marina,15/1/2000,Roma;

In questo file archivio sono registrati 6 record ciascuno dei quali è formato da 5 campi.

L'organizzazione del file archivio è sequenziale in quanto i record sono registrati in modo contiguo ed anche il metodo di accesso ai record è sequenziale in quanto per accedere ad un record, ad esempio il terzo, è necessario scorrere il file dall'inizio e "contare" i separatori di record per identificare dove inizia il record di interesse.

Consideriamo ora il seguente file archivio nel quale i campi sono di lunghezza prefissata (la sequenza numerica in rosso è una barra di riferimento che indica la lunghezza di un record e non fa parte del file):

12345678901234567890123456789012345678901234567890123456789012345

1 D'Esposito Giuliana 15/1/2000 Sorrento

2 Lamberti Nunzio 3/2/2000 Napoli

3 Amori Marina 22/10/1999 Roma

4 Accardo Felicia 7/3/2001 Torre del Greco

5 Pistilli Antonio 5/7/1997 Formia

6 Pistilli Marina 15/1/2000 Roma

In questo esempio ogni record occupa esattamente 65 byte.

Per posizionarsi sul record con matricola 3 occorre posizionarsi sul 131-mo byte (65+65+1).

In generale la posizione del record con matricola n sarà 65*(n-1)+1.

Se il file archivio è registrato su un supporto ad accesso diretto è possibile implementare l'accesso diretto ai record dell'archivio.

Generalizzando, un file archivio con organizzazione sequenziale si dice ad accesso diretto se è possibile posizionarsi direttamente sul record di interesse conoscendone la chiave.

Organizzazione sequenziale con indice

Un file archivio sequenziale può essere accoppiato con un ulteriore file, detto indice, che, per ogni record del file archivio, registra chiave e posizione del record nel file archivio.

In pratica, conoscendo la chiave del record di interesse, accedendo all'indice è possibile ricavare la posizione del record di interesse nel file archivio, in modo da potersi posizionare su tale record in modo diretto.

Di norma il file indice è ordinato sulla chiave in modo da velocizzare la ricerca al suo interno.

Organizzazione non sequenziale

Un esempio di organizzazione non sequenziale è la lista. In questi archivi l'indirizzo di un record è contenuto in un campo del record che logicamente lo precede.

In questo caso la registrazione dei record nel file archivio può avvenire in un ordine totalmente diverso da quello con cui saranno scanditi i record (ordinamento logico); ciò significa che due elementi logicamente contigui possono occupare nel file posizioni anche distanti tra loro.

Si costituisce così all'interno del file archivio una lista, definita come una successione di elementi che occupano posizioni qualsiasi, ma in cui ogni elemento è legato al successivo tramite un puntatore.

Questa struttura può rilevarsi particolarmente interessante nei casi in cui le operazioni di inserimento o estrazione siano piuttosto frequenti oppure quando occorra riorganizzare l'archivio secondo diversi ordini.

Negli archivi a lista, infatti, vengono privilegiate le operazioni di inserimento e cancellazione a scapito di quelle di ricerca.

Esistono numerose organizzazioni per i file non sequenziali che mirano a risolvere specifiche esigenze di ottimizzazione sia rispetto alle operazioni che all'occupazione.

Questi modelli sono complessi da analizzare e non sono trattati in queste pagine.

Formato CSV

CSV (Comma Separated Values = valori separati da virgola) è un formato molto usato per importare o esportare dati da programmi specializzati nel trattamento di grosse quantità di dati, come i fogli elettronici (ad esempio Excel) o RDBMS (ad esempio SQLite, MySQL).

Al suo interno, ogni riga rappresenta un record composto da campi separati da una virgola (o altro carattere). Ogni record è separato dal successivo dal carattere di fine riga (CR/LF).

Nel seguente esempio notare il particolare uso delle virgolette che consente di includere la virgola tra i dati di un campo.

OPERA,AUTORE,CASA EDITRICE

I Robot e l’Impero,Isaac Asimov,Mondadori

Mondo senza fine,Ken Follett,Mondadori

Java Step by Step 2° Edizione,"Gallo, Salerno",Scuola & Azienda

Paura della matematica,Peter Cameron,La Feltrinelli

Formato XML

Un file XML è un file di testo costituito da un insieme di tag. La sua struttura è ad albero: esiste, infatti, un solo tag principale che può contenerne altri, ciascuno dei quali ne può contenere altri ancora e così via.

Questo tipo di file è usato per memorizzare dati e scambiare informazioni tra applicazioni generiche.

Il seguente esempio mostra la struttura di un file XML. Da evidenziare che la struttura è definita tramite tag racchiusi in parentesi angolari, mentre i dati sono delimitati dai tag.

Normalmente un documento XML è indentato per migliorarne la leggibilità.

<?xml version=”1.0” encoding”=ISO-8859-1”?>

<AMICI>

<AMICO>

<COGNOME>Rossi</COGNOME>

<NOME>Maria</NOME>

<CAP>20134</CAP>

<CITTA>Milano</CITTA>

</AMICO>

<AMICO>

<COGNOME>Neri</COGNOME>

<NOME>Paolo</NOME>

<CAP>73100</CAP>

<CITTA>Lecce</CITTA>

</AMICO>

<AMICO>

<COGNOME>Verdi</COGNOME>

<NOME>Riccardo</NOME>

<CAP>70100</CAP>

<CITTA>Bari</CITTA>

</AMICO>

<AMICO>

<COGNOME>Gialli</COGNOME>

<NOME>Daniela</NOME>

<CAP>00195</CAP>

<CITTA>Roma</CITTA>

</AMICO>

</AMICI>