Archivi tradizionali e database
Poniamo l’attenzione su alcune caratteristiche fondamentali che differenziano gli archivi tradizionali dai database,
database
per poter evidenziare quali sono le implicazioni più importanti del loro utilizzo nei sistemi informativi.
informativi
Un archivio tradizionale e un database (in italiano base di dati) sono entrambi dei “contenitori
contenitori” appositamente
progettati per la memorizzazione persistente di dati. Questi contenitori in realtà sono dei files, quindi, risiedono su
una memoria di massa, e contengono collezioni di dati strutturati, ossia dati per i quali è definita un’opportuna
organizzazione logica. Ma in che cosa si differenziano e quali sono i vantaggi dell’uno e/o gli svantaggi dell’altro?
Ricordiamo il significato di alcuni termini:
archivio: oggetto (file) memorizzato in modo permanente, costituito da una sequenza di elementi dello stesso tipo
e dimensione (record), ognuno dei quali può essere composto da più campi, di tipo e dimensione diversi tra loro;
database: insieme di archivi integrati (ovvero, collegati) secondo un «modello logico» e nel rispetto di
determinate regole (ovvero, vincoli).
Sistemi basati sul File System
(Definizioni)
In un sistema informatico per archivio tradizionale s’intende un file di archivio in cui i dati vengono gestiti
direttamente dal software dell’applicazione utilizzatrice. Come viene mostrato nello schema a blocchi della figura
seguente, in generale, si ha che:
in un sistema tradizionale, per accedere ai dati di un archivio, l’applicazione si interfaccia
cia con esso direttamente,
passando solo attraverso il File System.
System
Per questo motivo un sistema informatico che utilizza archivi tradizionali viene anche detto essere un sistema
basato sul File System.
1
Il File System è quella parte (o modulo) del Sistema Operativo che si occupa di tutta la gestione fisica dei files
sulle memorie di massa e che fornisce alle applicazioni anche un servizio di accesso ai file.
file
Un’applicazione può richiedere al File System di eseguire operazioni di lettura e di scrittura su un file,
utilizzando opportune funzioni di libreria del linguaggio di programmazione che si interfacciano con il File
System richiamando alcune sue routine.
routine. Attraverso le funzioni di libreria, cioè, le applicazioni sono in grado di
effettuare le cosiddette chiamate di sistema (system call)) che, in generale, costituiscono il meccanismo con cui i
processi applicativi possono richiedere un servizio al Sistema Operativo. Gli effetti di questo meccanismo di
accesso ai dati sono rilevanti.
(Conseguenze)
Per cominciare, tutte le operazioni necessarie per la manipolazione dei dati dell’archivio (le cosiddette operazioni
logiche: inserimento, modifica/aggiornamento, cancellazione, ordinamento, ricerca ecc.) e, più in generale, tutta la
logica procedurale di gestione dell’archivio, è affidata all’applicazione e, quindi, dovrà farsene carico il
programmatore. Ciò sicuramente contribuisce a rendere più complesso lo sviluppo di un’applicazione, ponendo
anche problemi di efficienza ed efficacia del sistema di gestione
gest
dell’archivio.
In un sistema basato sul File System,, inoltre, l’organizzazione dell’archivio viene fissata con le definizioni delle
strutture dati inserite nel codice sorgente dell’applicazione utilizzatrice, con la conseguenza che affinché un
archivio sia utilizzabile da un’applicazione, è indispensabile che essa disponga della definizione dei dati.
L’applicazione, infatti, deve passare la definizione dei dati alle funzioni di libreria,
libreria affinché esse possano
interfacciarsi correttamente con il File System e in modo che quest’ultimo possa opportunamente operare a livello
fisico per collocare e/o recuperare i blocchi di dati sulle memorie di massa.
In un sistema basato sul File System la definizione dei dati (i cosiddetti metadati)) è separata dall’archivio
dall’arch
e si
trova nel codice sorgente dell’applicazione; ciò determina lo stabilirsi di una dipendenza molto stretta tra
l’archivio e l’applicazione e, più in generale, la piattaforma hardware/software utilizzata.
utilizzata
Tutto ciò rende difficile e/o limita la possibilità di condivisione di uno stesso archivio fra applicazioni diverse.
diverse
Si pensi, ad esempio, al caso banale di un’azienda che ad un certo punto introduca nel magazzino l’uso di
terminali a radiofrequenza, che sono dei dispositivi sicuramente molto diversi
diversi dal resto del sistema informatico da
un punto di vista sia hardware, sia software (sistema operativo e applicazioni) o al caso, altrettanto banale, in cui
2
ad un certo punto in un sistema informatico si debba sviluppare una nuova applicazione che richiede
rich
di apportare
una modifica all’organizzazione logica dei dati.
Un sistema basato sul File System è caratterizzato intrinsecamente da limitate possibilità di condivisione dei dati
fra applicazioni diverse e, inoltre, risente di una forte dipendenza logica e fisica dei dati, ossia la modifica della
struttura logica e/o fisica dei dati implica dover apportare delle modifiche alle applicazioni utilizzatrici.
utilizzatrici
In genere, pertanto, in un sistema informatico basato sul File System, molte applicazioni che lavorano
la
su stessi
contenuti informativi, si ritrovano a lavorare su archivi diversi (separati).
Ciò determina l’insorgenza di ridondanza (o duplicazione dei dati) dovuta alla presenza di copie multiple dello
stesso dato, con tutti gli effetti negativi che essa comporta, quali:
•
•
•
possibile inconsistenza dei dati,, ossia il rischio di presenza di copie multiple dello stesso dato, che assumono
valori diversi;
complessità delle operazioni necessarie per aggiornare tutti gli archivi in cui è presente un dato che cambia,
c
con
conseguente maggiore complessità dello sviluppo delle applicazioni che devono evitare di introdurre
inconsistenza;
inutile spreco di spazio sui supporti di memorizzazione e di risorse in termini di memoria, CPU e banda delle
linee della rete di comunicazione, per la generazione e memorizzazione dei dati duplicati.
Un sistema informatico basato sul File System,
System, dunque, presenta tutta questa serie di inconvenienti, che sono
maggiormente sentiti quando deve gestire grandi moli di dati in maniera condivisa. Di solito, infatti, i diversi
settori in cui si articola una grande organizzazione e, quindi, le diverse applicazioni che dovranno implementare le
diverse funzionalità, hanno in comune molti dati di interesse. Pertanto, una gestione non integrata
integrat e condivisa dei
dati, implica la necessità di propagare le modifiche fra gli archivi dei diversi settori, determinando tutti gli
inconvenienti prima elencati. Ad esempio, se in un’azienda il settore Ordini memorizza i propri dati in un file di
archivio non
on condiviso con gli altri settori aziendali, ogni volta che arriva un ordine, affinché l’ordine possa essere
evaso, i dati relativi devono essere trasmessi al settore Spedizioni, e a spedizione eseguita, devono essere
ritrasmessi al settore Ordini.
3
Un altro grosso limite di questo tipo di sistemi, inoltre, è che i meccanismi di condivisione e sicurezza sono
limitati ai servizi offerti dal File System che permette di gestirli solo a livello di file. In particolare, essendo il
livello di granularità quelloo del file, per esempio due applicazioni non possono modificare contemporaneamente
parti diverse di uno stesso file, così come non è possibile fissare privilegi di accesso diversi per porzioni diverse di
uno stesso file.
Sistemi basati su un DBMS
Da quanto detto finora, è facile osservare che la maggior parte degli svantaggi e degli inconvenienti che possono
derivare dalla gestione tradizionale degli archivi, possono essere superati solo con una gestione integrata degli
archivi, ossia:
1. raccogliendo tutti i dati in un unico grande contenitore, detto database o base di dati;
2. progettando il database in modo che i dati possano essere condivisi in maniera semplice da applicazioni diverse
e su piattaforme diverse.
Tutto ciò è stato reso possibile con l’introduzione
l’in
dei DBMS. Come viene mostrato nello schema a blocchi della
figura seguente, in generale, si ha che:
un’applicazione per accedere ai dati memorizzati in un database,, s’interfaccia con esso passando attraverso
un DBMS.
4
Un DBMS (DataBase Management System)
System) è un sistema software specializzato nell’archiviazione e nella
gestione efficiente ed efficace di grandi moli di dati organizzati in database (o basi di dati), che fornisce dei
meccanismi avanzati per garantire l’affidabilità dei dati (fault
(
tolerance),
), il controllo degli accessi e il controllo
della concorrenza.
Più in particolare, un DBMS è costituito da un insieme di moduli software specifici, progettati per consentire
la creazione, la manipolazione, l’interrogazione e la sicurezza dei database. Un DBMS, inoltre, gestisce i database
svolgendo anche la funzione d’interfaccia tra le applicazioni (o anche direttamente gli utenti) e il
database, controllando gli accessi e l’integrità dei dati. Esempi di DBMS sono: PostgreSQL, MySQL, Oracle,
Informix, MS Access, HSQLDB, ecc..
Un database (o base di dati) è una raccolta di dati ben organizzata e strutturata per rispondere a determinate
esigenze o scopi e progettata per essere gestita da un DBMS. Un database oltre a contenere i dati veri e propri,
incorpora in sé anche i metadati.
I metadati presenti in un database, oltre a comprendere la definizione dei dati,, possono comprendere anche
le regole di integrità dei dati (vincoli
vincoli), ossia le regole che i dati devono soddisfare per garantire la loro
lo validità e
le operazioni che possono essere eseguite sui dati, che non compromettono la validità dei dati stessi.
Affinché tutto ciò sia possibile, un DBMS mette a disposizione di applicazioni ed utenti un linguaggio di
definizione, interrogazione, manipolazione
polazione e di controllo del database, che è specifico dei database e, quindi, è
indipendente dal tipo di applicazione, dal suo linguaggio di programmazione e dalla piattaforma
hardware/software su cui essa è eseguita. Questo linguaggio, inoltre, ha la caratteristica
car
di essere di
tipo dichiarativo (non è procedurale),
), per cui le applicazioni e gli utenti possono chiedere al DBMS di operare
sui dati di un database, ignorando completamente quali sono le procedure da eseguire e che invece vengono
interamente gestite dal DBMS.
Contrariamente ad un archivio di un sistema basato su File System, un database viene completamente gestito da
un DBMS, a cui gli utenti e le applicazioni possono chiedere di utilizzare i dati in maniera molto semplice,
adoperando un linguaggio standard.
Tutto ciò concorre a rendere possibile e anche molto semplice la condivisione di uno stesso database fra molte
applicazioni e utenti diversi e a raggiungere nel sistema l’indipendenza
l’
logica e fisica del database.
5
Per indipendenza logica s’intende la possibilità di apportare delle modifiche alla definizione dei dati, lo schema
logico, come ad esempio nel caso dell’aggiunta di un campo ad una struttura dati, senza che le applicazione ne
risentano;
per indipendenza fisica, la possibilità di modificare la struttura fisica del database, lo schema fisico, come ad
esempio nel caso di modifiche dell’allocazione fisica dei file sulle memorie di massa, senza che ciò influisca
sullo schema logico del database e le applicazioni che utilizzano tali dati.
Si precisa che il concetto di integrazione dei dati in un unico grande contenitore, che è implicito nella definizione
di database, va tuttavia considerato solo da un punto di vista logico. Da un punto di vista fisico, infatti, un
database potrebbe anche non essere composto da un unico file residente su un computer, ma al contrario potrebbe
essere costituito da più files, allocati su più computer diversi e facenti parte di una rete i cui nodi si trovano
fisicamente lontani. In questo caso si parla di database distribuiti.
Conclusioni
I vantaggi apportati dai sistemi basati su un DBMS, abbiamo visto, sono molteplici e riguardano diversi aspetti:
•
•
•
•
integrità dei dati;
sicurezza;
semplificazione dello sviluppo delle applicazioni;
indipendenza dalla piattaforma hardware/software.
Tuttavia, però, questo non deve indurci a pensare che per lo sviluppo di un’applicazione, l’approccio tradizionale
non meriti di essere considerato e sia da scartare a priori. Si fa osservare, infatti, che la gestione mediante il File
System può risultare più efficiente (performante) rispetto ad un DBMS, proprio per la maggiore semplicità del
primo tipo di sistema. Per cui ci sono delle situazioni in cui l’utilizzo degli archivi tradizionali risulta essere
ancora una buona scelta, in particolare in quei casi in cui:
•
•
•
•
l’applicazione dovrà gestire una piccola quantità di dati;
di sicuro ai dati non avranno accesso altre applicazioni;
le richieste da soddisfare sono semplici;
non è previsto il porting dell’applicazione su altre piattaforme.
6