Un
Database è un insieme organizzato di dati:
deve essere quindi visto come costituito da due entità
distinte, i dati e le regole di accesso.
Da un punto di vista puramente teorico i singoli record che
compongono i dati potrebbero avere una struttura libera, ma
nella pratica (bisogna poi riuscire a costruire il Motore
del Database, ovvero un'applicazione in grado di implementare
le Regole e fornire una interfaccia tra il Database e l'Utente)
la struttura dei record è o uguale per tutti o di alcuni
tipi fissati. In quest'ultimo caso avremo un certo numero
di sotto-insiemi di records con struttura omogenea, che potremmo
anche considerare come un certo numero di files distinti.
Le regole di accesso possono essere di qualsiasi tipo:
il loro scopo è quello di permettere l'inserimento
di informazioni ed il loro successivo reperimento.
Un semplice file sequenziale non può quindi essere
mai visto come un Database, poiché l'unica regola possibile
per ritrovare un record è leggerli tutti dal primo
fino a quello cercato (magari l'ultimo).
Un passo avanti è il file ad accesso diretto (Random):
in questo caso possiamo accedere direttamente al record x°
e quindi basterà avere un metodo per sapere che posizione
occupa il record cercato per averlo immediatamente disponibile.
Non converrà ovviamente complicarsi la vita con i Database
se abbiamo a che fare con numeri di records così piccoli
da rendere ininfluente per l'Applicazione il tempo necessario
per leggerli tutti.
Attenzione perché ininfluente è un concetto
relativo: 10 secondi sono ininfluenti se per ogni dato devo
eseguire una elaborazione complessissima della durata di qualche
minuto, ma 100ms sono una esagerazione se il dato mi serve
per una elaborazione in tempo reale.
I
Files ISAM (Indexed Sequential Access Method) |
Storicamente
è stato il primo Database ad essere realizzato sui
"Mainframes", ovvero i grandi (per l'epoca) elaboratori
che erano centrali perché erano anche gli unici che
esistevano nell'ambito commerciale, escludendo quindi gli
elaboratori per uso scientifico (dove esistevano anche macchine
più piccole) e quelli realizzati per un uso specifico
(controllo di macchine o impianti).
L'idea di base era: organizziamo i nostri dati ordinati
sequenzialmente secondo l'argomento della ricerca (la Chiave)
e poi creiamo degli insiemi di dati ausiliari contenenti soltanto
la chiave e la posizione (gli Indici).
Oltretutto non c'è bisogno di tanti records negli indici
quanti sono i records dei dati perché quando si legge
il disco si legge per forza un settore intero (così
era in quei tempi lontani) che contiene più records
(diciamo una ventina); quindi in poco tempo leggiamo l'Indice,
troviamo la chiave e la posizione del blocco di dati, lo leggiamo
e vediamo se il record con quella chiave c'è o non
c'è.
Qualcuno di voi potrebbe aggiungere "e poi, visto che
l'indice è piccolo, lo leggo una volta sola e lo metto
in memoria, così non perdo tempo tutte le volte"
ma bisogna sapere che una volta la memoria degli elaboratori
si misurava in Kb, non in Mb come siete abituati ora: un programma
che occupava 64Kb era considerato molto grosso!
Se i dati erano molti si ricorreva quindi ad una struttura
gerarchica degli Indici: i dati erano suddivisi in grossi
blocchi, ciascuno preceduto dal proprio indice, ed esisteva
un Master Index che puntava ai vari blocchi.
Questa struttura presentava inoltre un vantaggio: una certa
percentuale di ogni blocco veniva lasciata libera ed utilizzata
per l'inserimento di nuovi records con chiavi appartenenti
a quel blocco che erano sì senza ordinamento, ma in
modo abbastanza relativo; quando cominciavano ad essere troppi
bastava riorganizzare solo i blocchi interessati e non l'intero
database (operazione che richiedeva in genere alcune ore).
Esisteva anche un'area di overflow generale per l'inserimento
di records il cui blocco di destinazione si era già
riempito e la quantità di records in quest'area andava
tenuta sotto controllo (ovvio degrado delle prestazioni) per
decidere se era il momento di riorganizzare il Database.
L'evoluzione tecnologica (e quindi l'aumento della memoria)
permise via via miglioramenti dell'efficienza come il Master
Index in memoria e tempi minori per riorganizzare i blocchi,
facendo abbandonare quindi il file ISAM e la sua successiva
evoluzione (VSAM=Virtual Storage Access Method)
solo in tempi abbastanza recenti con l'introduzione dei Database
relazionali.
Le
prime applicazioni su Personal Computer (ambiente DOS) |
Nel
frattempo erano nati i primi Personal Computer; dopo pochi
anni di vita cominciarono ad avere l'Hard Disk e quindi la
possibilità di archiviare i dati e sviluppare applicazioni
gestionali.
Quasi a metà degli anni 80 nacque il primo prodotto
di Database per PC ad opera della Ashon-Tate, il dBase: agli
inizi girava solo in interprete (esisteva anche un prodotto
di run-time, ma ebbe scarsa rilevanza), ma a partire dalla
versione dBaseIII la Nantucket mise sul mercato un compilatore
per i programmi dBIII in grado di generare degli eseguibili
indipendenti: il Clipper.
Nello stesso periodo nacque anche il Database della Fox.
I linguaggi di programmazione e le caratteristiche dei due
prodotti erano abbastanza simili, tanto che il linguaggio
supportato dal compilatore Clipper (che era più
esteso) permetteva di gestire i Db di entrambe le case.
Il successo del prodotto fu notevole (versioni 1986 e 1987),
al punto che praticamente tutte le applicazioni di gestione
dati erano in compilato Clipper con database in dBIII (o il
successivo dBIV).
Inoltre essendo il Clipper scritto in C era anche possibile
implementare nuove funzioni scrivendole in C e creando con
esse una nuova Libreria da passare al programma di Link all'atto
della creazione del file .EXE.
Di particolare importanza furono le librerie prodotte da alcune
case per la gestione della Grafica in quanto Clipper usava
esclusivamente lo schermo in modalità Testo (25 righe
di 80 colonne), mentre con la nascita della prima VGA IBM
era possibile lavorare a 640x480 in 16 colori, rendendo così
possibile realizzare rappresentazioni grafiche (in genere
diagrammi) di qualità soddisfacente.
» "Database
Tutorial" di
Arthur Chaparyan
» "Tutorial:
Database controls" di Gary Beene
» Catalog
of free database systems
» "Introducing
the database" (.PDF)
|