Capitolo Primo
I Gestori di database in generale.
Capitolo primo
I gestori di data base in generale
1.1. Introduzione
Molte delle attività e delle risorse di un'organizzazione sono dedicate
all'acquisizione d'informazioni secondo procedure studiate per raggiungere
determinati obiettivi. Il compito di acquisire queste informazioni è
demandato al sistema informativo. Questo viene definito come un insieme
organizzato di procedure, risorse umane e materiali per la raccolta, l’archiviazione,
l’elaborazione e la comunicazione d'informazioni necessarie ad un'organizzazione per
gestire sia le attività operative, che quelle di governo1 .
Da questa definizione si può comprendere come il sistema informativo
prescinda dal fatto che sia stato o no automatizzato. Non bisogna, quindi,
confondere il sistema informativo con il sistema informatico che rappresenta
invece un modo per organizzare i sistemi informativi tramite una gestione
informatizzata dei flussi informativi interpretandolo come sottosistema del
sistema
informativo
dedicato
alla
gestione
automatica
delle
informazioni
rappresentata mediante dati digitali.
Il progetto di un sistema informativo è molto complesso e inizia con l’analisi
dei bisogni
informativi e delle procedure dell’organizzazione per
raccogliere, immagazzinare, trasmettere ed elaborare le informazioni.
Quest'attività in organizzazioni già operanti
può portare solamente alla
riorganizzazione delle procedure esistenti, oppure solo all'introduzione di
un calcolatore come mezzo per aumentare la produttività complessiva
2
Capitolo primo I gestori di data base in generale
cercando di individuare un'integrazione più idonea fra procedure manuali e
procedure automatizzate. Un errore frequente è stato quello di identificare la
progettazione di un sistema informativo con quello informatico, non
considerando effettivamente la struttura e la natura dell'organizzazione.
Questo, infatti, ha portato spesso alla meccanizzazione delle procedure
esistenti
trascurando
la
possibilità
di
rivedere
il
funzionamento
dell’organizzazione.
1.2. Il sistema informativo nell’organizzazione
Occorre
distinguere
i
bisogni
e
i
flussi
informativi
esistenti
in
un'organizzazione secondo due dimensioni. La prima è quella relativa
all'articolazione delle attività per aree funzionali ( settori aziendali) ; la
seconda deriva dal raggruppamento delle attività per livelli decisionali e
quindi si presenta trasversale rispetto alla prima.
Ad ogni area funzionale appartiene tutte quelle attività necessarie al
raggiungimento di un determinato obiettivo2.
Per operare correttamente ogni area funzionale fa uso di dati interni ad essa
sia di dati che ottiene da flussi informativi esistenti in altre aree funzionali.
Corso di informatica generale G. Callegaris CEDAM 1986
Albano in Basi di Dati porta alcuni esempi :
? Personale : tratta dati riguardanti le persone impiegate, il lavoro che svolgono, le ore di
presenza, i livelli retributivi. Fra le finalità ricordiamo : definire i criteri di valutazione,
formazione, assunzione ecc. ; assolvere a tutti gli adempimenti di legge ; tenere i
rapporti con i sindacati ecc.
? Amministrazione : tratta i dati sulla contabilità. L’obiettivo è svolgere tutte le attività di
carattere amministrativo e fiscale, assicurando tutti gli adempimenti contabili.
? Magazzino : tratta dati riguardanti le merci acquistate o prodotte. L’obiettivo è di
stabilire una politica di gestione.
? Mercato : tratta dati sull’ambiente in cui opera l’organizzazione per stabilire la politica
aziendale.
3
1
2
Capitolo primo
I gestori di data base in generale
L’altra dimensione dei bisogni informativi per livelli, si basa sulle diverse
esigenze esistenti ai vari livelli decisionali dell'organizzazione. Il numero dei
livelli “distinti” nell'organizzazione dipende dalla complessità, natura e
dimensione dell’organizzazione.
Si possono distinguere tre tipici livelli :
Operativo. Riguarda l’esecuzione, in maniera efficiente
e conforme alle
regole stabilite nell’azienda, d'operazioni routinarie (ad esempio le paghe e
le emissioni di fatture).
Gestionale.
Riguarda
l’emissione
d'informazioni
sullo
stato
dell'organizzazione, per controllare che le risorse, umane e materiali, siano
utilizzate adeguatamente ( ad esempio il controllo delle scorte di
magazzino).
Strategico. Riguarda le decisioni di pianificazione del tipo di prodotti e
servizi che vanno forniti dall'organizzazione, la scelta delle risorse globali
necessarie, la politica d'acquisizione, uso e mantenimento delle risorse.
Quindi, valutando qual è la situazione attuale e prevedendo una particolare
evoluzione dell’ambiente in cui si opera o si vorrebbe operare, si cerca di
stabilire come collocare l’azienda sul mercato.
Questa distinzione dei bisogni informativi per aree funzionali e livelli
decisionali serve per mostrare come le caratteristiche di un sistema
informatico possono variare rispetto alla natura dei dati da trattare e degli
scopi che ci si prefigge. Ad esempio, a livello strategico si ha la richiesta di
dati sintetici mentre a livello operativo si richiedono dati di carattere
4
Capitolo primo
I gestori di data base in generale
analitico. Inoltre, l’utilizzo dei dati a livello operativo viene effettuato in
modo regolare mentre negli altri livelli questa regolarità tende via via a
sfumare.
1.3. Progetto dei sistemi informatici.
Non esiste una metodologia di progettazione universalmente riconosciuta
ma tante metodologie. Si possono comunque raggruppare le attività in tre
fasi :
1. Raccolta delle richieste degli utenti
2. Progettazione concettuale
3. Realizzazione (o progettazione logica e fisica)
Queste fasi, però, vengono definite in maniera generica senza stabilire per
ognuna di esse dei contorni netti.
Ognuna di queste 3 fasi produce un risultato e cioè :
? La definizione dei requisiti.
? Il progetto concettuale
? Il progetto logico e fisico
Il processo di progettazione è ciclico poiché l’uso del sistema informatico e le
nuove esigenze che vengono col tempo a determinarsi nell'organizzazione
stimolano gli utenti ad organizzare nuove richieste.
Le metodologie più diffuse possono essere classificate in due grandi
categorie a seconda che
5
Capitolo primo
I gestori di data base in generale
? il progetto sia guidato dalle procedure richieste
nelle specifiche
applicazioni.
? il progetto sia guidato dalla struttura dei dati da conservare ( impiego di
metodologie basate sulla “modellazione” dei dati)
Nel primo caso si creano software efficienti ma difficilmente modificabili con
archivi di dati realizzati ad hoc. Nel secondo caso si cerca di realizzare una
base dei dati indipendente dalle specifiche applicazioni.
Bisogni degli
utenti
Progetto logico e
fisico
Realizzazione
Raccolta delle
richieste
Definizione dei
requisiti
Progettazione
concettuale
Progetto
concettuale
Figura 1.1. Ciclo di vita e fasi della progettazione di un sistema informatico
1.3.1. Raccolta delle richieste degli utenti
6
Capitolo primo
I gestori di data base in generale
Scopo di questa prima fase è quello di acquisire informazioni in modo tale
che il sistema informatico possa meglio “aderire” ai bisogni degli utenti.
Quindi si cerca di individuare quali saranno i requisiti del sistema che si
andrà a progettare. Dovrà essere redatta una documentazione accurata e coerente dei requisiti,
verificabile dagli utenti e sufficientemente adeguata per impostare le fasi
successive.
Solitamente si individuano queste attività :
? Studio preliminare sull'introduzione del sistema informatico nell'organizzazione.
Quest'attività ha come scopo quello di valutare la convenienza
dell'introduzione del sistema informatico in base al piano di sviluppo
aziendale e ai suoi obiettivi, di individuare i possibili settori aziendali
interessati all'introduzione delle nuove tecnologie valutando i possibili
riflessi sull'organizzazione del lavoro e sul sistema informatico preesistente.
? Analisi del sistema informatico esistente.
Si cerca di acquisire in questa fase il maggior numero possibile
d'informazioni sul sistema informatico preesistente in settori interessati
all’automazione. Si deve cercare di scoprire come il sistema informatico
soddisfi i bisogni dei vari utenti, quali sono le insoddisfazioni che questo
determina e quali sono i nuovi bisogni informatici degli utenti ai vari livelli
(impiegati, esperti, manager).
? Definizione dei requisiti del nuovo sistema
7
Capitolo primo
I gestori di data base in generale
L’attività svolta dall’analista produce una documentazione che comprende
una descrizione accurata relativa alle informazioni riguardanti :
A. la classificazione dei dati utilizzati (nomi, tipo, applicazioni)
B. vincoli d'integrità dei dati, cioè le condizioni da rispettare per essere
significativi.
C. volume iniziale e tasso di crescita dei dati.
D. descrizione delle procedure d'automazione.
E. grado di privatezza secondo gli utenti e il tipo d'uso dei dati.
1.3.2 Progettazione concettuale
Questa fase accoglie in ingresso i dati della fase precedente. Nell’ambito
della progettazione concettuale si cerca di organizzare tutti gli elementi per
arrivare alla definizione di un modello astratto del sistema informatico
( detto progetto concettuale) che diventerà un documento di riferimento per i
progettisti nella fase di realizzazione. Il progetto si dice concettuale perché
evita il più possibile di descrivere i dettagli realizzativi, cercando di dare
una certa struttura ai dati.
Se si esclude quest'idea generale non esiste un grande accordo su che cosa sia
un progetto concettuale. Verrà proposta, comunque, una metodologia
elaborata da Batini ed Altri (che si basa sul modello di progettazione
Entità/Relazioni di P. Chen) per arrivare alla realizzazione di uno Schema
Concettuale che verrà tradotto nella fase realizzativa nelle regole di un
particolare modello concettuale (sarà scelto il modello relazionale).
8
Capitolo primo
I gestori di data base in generale
1.3.3. Realizzazione (o progettazione logica e fisica)
In questa fase rientrano tutte le attività rivolte alla realizzazione, secondo i
risultati della fase precedente, di un ambiente per la memorizzazione e l’uso
dei dati. I vecchi sistemi informatici si basavano solo su linguaggi di
programmazione tradizionale per la realizzazione di archivi permanenti di
dati. L’accesso ai dati era gestito dal File Management System, cioè dal
sistema d'archiviazione del sistema operativo. Il primo linguaggio di questo
genere fu il COBOL. Il principale problema con quest'approccio è dato dalla
completa responsabilità da parte del progettista nell’organizzare e gestire i
dati. Le applicazioni, quindi, vengono a possedere propri archivi, realizzati
appositamente per loro, non collegati e con la presenza di notevoli problemi
di ridondanza.
Un altro approccio si basa invece sul concetto di base di dati, cioè un insieme
integrato di dati che consente la possibilità d'accesso contemporaneo da parte di più
utenti, coerenza e riservatezza delle informazioni3. Si realizza perciò un archivio
integrato al quale più programmi applicativi o utenti possono accedere
facendo si che la base dei dati costituisca un unico schema concettuale di
riferimento, mentre i DBMS (Data Base Managenent System) a loro volta si
occupano di gestire l’attività riguardante la base dei dati.
Nell’approccio DBMS si prevede che la fase di realizzazione sia distinta in
due parti :
3
I Sistemi informativi aziendali - M.G. Ceppatelli CEDAM
9
Capitolo primo
I gestori di data base in generale
1. Fase di progettazione logica. Consiste nella conversione (mapping) del
progetto concettuale in un progetto logico, cioè nella strutturazione dei
dati e nella stesura delle procedure applicative secondo le regole di un
modello concettuale .
2. Fase di progettazione fisica. Consiste nella descrizione dell'organizzazione
fisica degli archivi che realizzano la base dei dati del sistema informatico
(si stabiliscono, ad esempio, le dimensioni dei files, i metodo d'accesso
ecc.).
1.4.. Dal dato al gestore di database
La parola dato deriva dal latino datum che significa fatto ed è proprio lo
scopo che un dato ha in un sistema informativo, ovvero quello di codificare
un fatto ritenuto importante in una certa organizzazione. Comunque, il
concetto di dato deve essere tenuto distinto da quello d'informazione. Infatti
un dato costituisce un'informazione se comporta un reale aumento di
conoscenza.
Per questo si può dire che i dati non danno informazione fino a quando non
si fornisce una chiave d'interpretazione che consente di comprendere il loro
significato, cioè i fatti che essi codificano.
Di conseguenza il contenuto informativo dei dati, cioè la ricostruzione dei
fatti nasce dall'interpretazione dei dati stessi (significato intensionale o
schema dei dati) oltre che dai valori specifici dei dati (significato
estensionale dei dati).
10
Capitolo primo
I gestori di data base in generale
F114
Cod. Art.
50
28
PZ00
GH448
15
# Pezzi
Cod. Articolo #Pezzi
PZ00
28
F114
50
GH448 15
a)
b)
c)
Figura 1.2. Insieme dei dati (a) e possibile significato (b) come estensione o istanza dello
schema (c)
1.4.1. Modello dei dati
Un modello di dati è uno strumento concettuale che consente al progettista di
attribuire un certo significato ( o interpretazione) ai dati e di manipolare i dati stessi.
Si assegna una struttura ai dati attraverso appositi meccanismi di strutturazione
previsti dal modello4.
Come il dato non dà di per se informazioni se non gli si fornisce una chiave
d'interpretazione, così un modello di dati è uno strumento concettuale
tramite il quale si può acquisire conoscenza da un insieme di dati altrimenti
insignificante.
4
Corso di informatica generale - G. Callegaris CEDAM
11
Capitolo primo
I gestori di data base in generale
Fra i modelli più importanti abbiamo il gerarchico, che si basa su di un
meccanismo di strutturazione ad albero, il reticolare su di un meccanismo a
grafo etichettato e il relazionale sulla teoria insiemistica delle relazioni.
1.4..2. Schema :Struttura dei dati e vincoli d'integrità
Si può dire in generale che uno schema è una descrizione del significato
intensionale
(interpretativo)
dei
dati,
cioè
delle
proprietà
possedute
dall’insieme dei dati indipendentemente dalla sua evoluzione passata o
futura, ovvero è una rappresentazione statica di una base di dati. Uno
schema identifica in qualche modo :
1. Le categorie in cui sono suddivisi i dati.
2. Le proprietà (o attributi) di ciascuna categoria.
3. Le eventuali relazioni ( o associazioni) esistenti fra le varie categorie ed
eventualmente i loro rispettivi attributi.
4. I vincoli d'integrità cui sono soggetti i dati.
Per i primi tre punti si può parlare complessivamente di struttura dei dati.
Riguardo al quarto punto si osserverà che un vincolo d'integrità è un
presupposto che deve essere soddisfatto da ogni insieme di dati, e riflette un vincolo imposto dalla realtà che s'intende modellare ( ad esempio un
impiegato non può prendere più soldi del suo direttore). I vincoli d'integrità possono presentarsi in maniera implicita o esplicita.
Un’altra definizione è quella di Albano :”Un modello dei dati è un insieme di meccanismi
di strutturazione, o di astrazione, per modellare una base di dati, con certi operatori e
vincoli di integrità predefiniti”
12
Capitolo primo
I gestori di data base in generale
I vincoli impliciti sono quelli imposti dalla stessa struttura dei dati ( questo
discorso potrà essere meglio chiarito in seguito analizzando il modello
relazionale). Al contrario i vincoli espliciti sono quelli non implicati nella
struttura dei dati e che occorre in qualche modo specificare con apposite
dichiarazioni ( ad esempio se l’attributo VotazioneEsame deve essere
compreso fra 1 e 30 occorre dichiararlo esplicitamente). Per rispettare questi
vincoli espliciti si richiede al DBMS l’istituzione di meccanismi in grado di
rivelare (e impedire) un eventuale tentativo di violazione.
1.4.3. Base di dati
Un insieme di dati organizzati in accordo ad un certo schema S è detto
occorrenza di una base di dati ( o istanza, estensione o esemplare dello
schema S) e rappresenta una “fotografia” della realtà in un determinato
istante di tempo.
Lo schema, essendo una rappresentazione statica della realtà, non descrive
certo il modo in cui essa si evolve nel tempo. Non si capisce come, ad
esempio, si possa passare da un'istanza D ad una D’ di uno stesso schema
per
riflettere
una
variazione
intervenuta
nella
realtà
(inserimenti,
cancellazioni, modifiche d'elementi delle categorie o delle associazioni), per
cui è necessario definire le operazioni attraverso cui è possibile accedere o
modificare i dati di una base di dati.
In generale si dirà che un'operazione è una funzione che fa passare una base
di dati da uno stato all’altro. Tale funzione può essere parziale, nel senso che
13
Capitolo primo
I gestori di data base in generale
non tutte le transazioni sono permesse a causa della presenza di vincoli
d'integrità espliciti e dal fatto che le semplici operazioni di lettura non
modificano certo la base5.
1.4.4. Definizione del modello dei dati e classi di modelli.
Il modello dei dati è una coppia (G,O) dove :
? G è l’insieme delle regole per la generazione di schemi.
? O è l’insieme delle operazioni per la manipolazione della base dei dati.
L’insieme G fornisce i meccanismi d'astrazione del modello, cioè
gli
strumenti che permettono ai progettisti di modellare la realtà prescindendo
dai valori dei dati osservati. Esso corrisponde a ciò che viene solitamente
indicato come Linguaggio di descrizione dei dati (DDL). L’insieme G viene
suddiviso in due parti : l’insieme delle regole che generano la struttura dei
dati (compresi, quindi i vincoli impliciti) e l’insieme delle regole che
generano l’elenco dei vincoli espliciti.
L’insieme O definisce tutte le operazioni permesse per la creazione, l’accesso
e la modifica di una base di dati avente un dato schema S generato da G.
Esso corrisponde a quello che solitamente viene chiamato come linguaggio
di manipolazione dei dati (DML).
Al variare di G e di O si possono ottenere diversi modelli dei dati ciascuno
dei quali si può rivelare più adatto di altri a seconda della natura della
massa di dati che si deve trattare e del tipo d'utenza cui è destinato.
C’è, però, chi considera le operazioni di lettura modificatrici, in quanto incidono sugli
indicatori di posizione, ovvero puntatori che con le operazioni di accesso vengono a
5
14
Capitolo primo
I gestori di data base in generale
1.5. Basi di dati e sistemi di gestione di basi di dati (DBMS).
Definendo la base di dati come un'istanza di uno schema generato da in preciso
modello di dati6 non tiene conto di esigenze di carattere pratico. L’uso del
termine database dovrebbe essere ristretto ad una raccolta di dati che ha le
seguenti caratteristiche :
1. I Dati sono il risultato di un preciso schema generato da un modello di
dati logico e tramite questo viene quindi definito anche l’insieme degli
operatori con cui accedere e modificare i dati (cioè i dati non
appartengono
alle
singole
applicazioni
ma
sono
messi
a
loro
disposizione).
2. I dati sono utilizzabili per diverse applicazioni da utenti o gruppi d'utenti
diversi, interessati ciascuno a sottoinsiemi di dati presenti ( non
necessariamente disgiunti). Questo vuol dire che ogni applicazione o
utente può (o deve) avere una visione parziale della base dei dati, facendo
cioè riferimento solo alle categorie, alle proprietà e alle associazioni che lo
interessano attribuendo una particolare “vista” dei dati ristretta a ciò che
interessa.
3. I dati sono presenti con una ridondanza minima (integrazione dei dati). Si
cerca così di evitare un'incontrollata duplicazione delle informazioni con
conseguente inefficienza (in tempo e spazio) e pericolo d'inconsistenza.
modificarsi. Essi stessi sono parte integrante della base dei dati e con le operazioni vengono
ad essere modificati anche se si tratta solo di operazioni di lettura(M. Deen).
6 Corso di informatica generale - G. Callegaris CEDAM 1986
15
Capitolo primo
I gestori di data base in generale
Una certa ridondanza controllata può essere ammessa per accelerare i
processi di ricerca.
4. L’accesso ai dati avviene in modo protetto contro utenti non autorizzati (
sicurezza e privatezza), contro gli errori hardware e software (integrità e
ripristino dei dati), contro il pericolo di stati inconsistenti dovuto
all’accesso concorrente in lettura/scrittura. Quindi deve essere prevista
tutta una serie di meccanismi e di servizi per l’esercizio e la manutenzione
della base di dati.
Il rispetto di tutti questi requisiti pone problemi notevoli risolti da un
complesso di software noto appunto come Data Base Management System
(DBMS).
1.5.1. Indipendenza fisica e logica e i livelli di descrizione dei dati.
Un requisito irrinunciabile dei DBMS è che devono garantire le proprietà
d'indipendenza fisica e logica.
Per indipendenza ( delle applicazioni dall’organizzazione) fisica (dei dati), s'intende
la possibilità che i programmi applicativi non debbano essere modificati in seguito a
modifiche dell’organizzazione fisica dei dati7. Le ragioni principali delle
modifiche dell’organizzazione fisica dei dati possono essere :
? Un'evoluzione dell’uso dei dati può rendere necessario dover intervenire
sull'organizzazione fisica della base dei dati.
7
Albano, Orsini- Basi di dati Boringhieri 1985
16
Capitolo primo I gestori di data base in generale
? Cambiano i dispositivi fisici di memorizzazione, le tecniche di
compattamento o di trasmissione dati, il sistema operativo oppure il suo
sottosistema per la gestione degli archivi.
? Se la base di dati è distribuita su più nodi di una rete il DBMS può
cambiare la locazione dei dati memorizzati oppure il tipo di calcolatore su
cui sono memorizzati.
Per indipendenza ( delle applicazioni dall’organizzazione) logica (dei dati), s'intende
la possibilità che i programmi applicativi non devono essere modificati in seguito a
modifiche dello schema logico, per aggiunte di nuove definizioni oppure per modifiche
o eliminazione di definizioni già esistenti8.
Per soddisfare questi requisiti, è stato proposto che i DBMS offrano tre livelli
distinti di descrizione dei dati : Schema logico, interno ed esterno9.
8
9
Albano, Orsini- Basi di dati Boringhieri 1985
Questo approccio è stato proposto dal comitato ANSI/X3/SPARC (1985).
17
Capitolo primo
Livello esterno
(DDL esterno)
I gestori di data base in generale
Schema esterno
(es. produzione)
Schema esterno
(es. Amministr.)
Schema esterno
(es. personale)
................
Livello Logico
(DDL)
........
Schema logico
Livello fisico
Schema interno
Figura 1.3 Architettura a tre livelli di un DMBS
Lo schema logico descrive la struttura della base di dati non facendo nessun
riferimento alla sua organizzazione fisica o al modo in cui vengono
memorizzati i dati nelle memorie secondarie.
Lo schema interno è la descrizione di come sono organizzati fisicamente i
dati nelle memorie di massa, e di quali strutture dati ausiliarie sono previste
per facilitarne l’uso.
Lo schema esterno è una descrizione di come appare la struttura della base
di dati ad una certa applicazione. Questo schema definisce quelle che si
18
Capitolo primo
I gestori di data base in generale
chiamano le viste, ovvero quelle porzioni della base di dati cui l’utente
direttamente o tramite le applicazioni può accedere. In generale esistono più
schemi esterni, uno per ogni gruppo omogeneo d'utenti. Essi però non sono
indipendenti, poiché gli oggetti in comune hanno una rappresentazione
unica nella base di dati e quindi le modifiche si riflettono su tutti gli utenti
che ne fanno uso.
Fra questi livelli di descrizione dei dati devono esistere delle corrispondenze
che vengono utilizzate dai DBMS per convertire le operazioni sugli oggetti
virtuali accessibili da uno schema esterno in quelle sugli oggetti dello
schema logico e, quindi, sui dati realmente presenti nel sistema, memorizzati
secondo lo schema interno. Questi schemi sono gestiti dal DBMS e non dai
programmi applicativi i quali, per accedere alla base di dati, comunicano al
sistema con particolari accorgimenti a quale schema fanno riferimento.
Con questo sistema dei tre livelli di descrizione dei dati si garantisce sia
l’indipendenza fisica, perché i programmi applicativi fanno riferimento allo
schema esterno che non contiene informazioni sul modo in cui i dati sono
organizzati fisicamente, sia l’indipendenza logica, perché i programmi fanno
riferimento allo schema esterno e non allo schema logico.
19
Capitolo primo I gestori di data base in generale
1.5.2. Ambiente operativo di un DBMS
L’utilizzo di un DBMS presuppone l’utilizzo di alcune componenti
importanti :
A. Un sistema d'elaborazione. In questo caso s'intende un complesso hardware
con particolari caratteristiche.
B. Un sistema operativo. Il sistema operativo rappresenta un insieme di
software che governano il funzionamento dell’hardware e lo scambio di
dati fra le varie unità del sistema d'elaborazione. I DBMS non necessitano
per il loro funzionamento si sistemi operativi speciali ma si adattano a
quelli esistenti nel sistema informatico. I sistemi operativi speciali possono
risultare invece utili nella realizzazione delle cosiddette basi di dati
distribuite, caratterizzate dai seguenti elementi :
? Il sistema hardware è una rete in cui ciascun nodo può essere
localizzata della memoria di massa contenente una parte della base
di dati.
? Esiste un DBMS che gestisce queste basi di dati sparse sulla rete
presentandole all’utilizzatore come un tutt’uno.
C. Una o più base di dati. La base di dati costituisce l’insieme degli archivi
elettronici in cui sono memorizzate le informazioni elementari da
elaborare.
D. Un sistema di comunicazione. Per sistema di comunicazione s'intende un
sistema software che governa lo scambio di dati e messaggi nelle
elaborazioni interattive o conversazionali. Le elaborazioni interattive (on­
20
Capitolo primo
line)
I gestori di data base in generale
vengono eseguite attraverso una conversazione tra utente, il
terminale ed il sistema. La conversazione si articola su di un insieme di
richieste e di risposte. Se l’elaborazione non avviene
tramite
conversazione ma tramite programmi d'elaborazione (elaborazione bacth)
la presenza di un sistema di comunicazione non è necessaria.
E. Gli utenti. Sono coloro che tramite l’uso di applicazioni producono
elaborazioni. Si distinguono quattro classi d'utenti :
1. Utenti finali. Questi utenti utilizzano i programmi sviluppati dai
programmatori. Esaminano e/o modificano i campi presenti sul
video, selezionano le voci sul menu ecc.. Per manipolare i dati
questi utenti hanno solo i comandi previsti dal programmatore.
2. Utenti non esperti. Sono utenti privi di specifiche capacità di
programmazione che usano un linguaggio d'interrogazione di dati
che permette di accedere alle informazioni della base di dati e di
aggiornarle
senza
dover
ricorrere
alla
mediazione
del
programmatore.
3. Programmatori applicativi. Sono i programmatori d'applicazioni che
utilizzano
un
linguaggio
DML
per
soddisfare
specifiche
applicazioni. Spesso s'incorporano gli operatori del linguaggio
DML in un linguaggio di programmazione tradizionale (COBOL,
PASCAL ecc.) .
4. Amministratore della base di dati. Si tratta di una persona o di un
gruppo di persone che partecipano alla progettazione del sistema
21
Capitolo primo I gestori di data base in generale
informatico e svolgono un ruolo fondamentale nell’ambito del ciclo
di vita dello stesso. In particolare l’amministratore ha questi
compiti :
? partecipa alla creazione e manutenzione dello schema logico
della base dei dati tramite il DDL. Per manutenzione
s'intende quell'attività di modifica intesa ad estendere,
correggere o migliorare lo schema logico durante il ciclo di
vita del sistema informatico.
? Definizione e manutenzione dello schema interno, cioè della
descrizione
fisica
dei
dati.
Quindi
si
fa
carico
dell'ottimizzazione ed efficienza del sistema informatico.
? Definizione ed aggiornamento dei diritti d'accesso alla base
dei dati differenziati a seconda delle applicazioni e del tipo
d'utenza
(
dirigente,
impiegato,
operatore).
L’Amministratore si fa carico, quindi, della sicurezza dei
dati.
? Corretto ripristino della base dei dati in caso di mal
funzionamento di hardware e software, ad esempio con
periodici backup della base dei dati.
Spesso si parla dell’Amministratore dei dati o DA (Data
Administrator) che è una figura diversa rispetto al DBA in
quanto lavora ad un livello più alto, occupandosi dei dati come
patrimonio
del
sistema
informativo
aziendale,
22
Capitolo primo
I gestori di data base in generale
indipendentemente dalla loro localizzazione all’interno di un
DBMS.
Uno strumento indispensabile per tutti gli utenti (tranne quelli finali) è
costituito dal dizionario dei dati che costituisce una base dei dati della base dei
dati (viene detto anche Metadata). Esso descrive in modo completo e
strutturato tutte le informazioni relative alla base dei dati : elenco dei nomi,
delle categorie, delle associazioni, degli attributi, dei diritti d'accesso ecc..
1.6. Indirizzari
Le funzioni di un DBMS possono essere raggruppate in due classi e cioè
funzioni logiche (viste, relazioni ecc.) e funzioni fisiche ( registrazioni,
aggiornamento, ricerca ecc.). Come abbiamo visto queste funzioni possono
essere ricondotte ad un'architettura a tre livelli, quello dello schema esterno,
che definisce le “viste” dei dati cui possono accedere i vari utenti, quello
concettuale o schema logico, che definisce la struttura logica dell’intero
database e che si può chiamare anche “vista globale”, quello fisico o schema
interno dove ricadono tutte quelle informazioni che permettono di operare
“fisicamente” sulle informazioni registrate negli archivi. Come già detto
sopra fra questi livelli di descrizione dei dati devono esistere delle
corrispondenze che vengono utilizzate dai DBMS per convertire le
operazioni sugli oggetti virtuali accessibili da uno scema esterno in quelle
sugli oggetti dello schema logico e, quindi, sui dati realmente presenti nel
sistema, memorizzati secondo lo schema interno.
23
Capitolo primo
I gestori di data base in generale
Si può notare che esistono nelle architetture due tipi di riferimento che il
DBMS deve gestire :
uno fra il livello esterno ed il livello concettuale ed uno tra il livello
concettuale ed il livello fisico.
Questi riferimenti che il DBMS stesso deve mantenere costituiscono l’insieme
degli “indirizzari” attraverso i quali le informazioni possono essere ricercate
ed aggiornate. La gestione e il mantenimento di questi indirizzari viene
realizzata con particolari tecniche che ne permettono anche l’ottimizzazione.
1.6.1. Indirizzamento tramite indici
I gestori di database usano la tecnica degli indici per associare ad un dato
presente nell’archivio un puntatore o indice che indica dove il dato
fisicamente si trova. Lo scopo principale è quello di velocizzare l’accesso ai
dati dell’archivio e quindi di velocizzare anche un'interrogazione dei dati
(query) comportando però dei carichi aggiuntivi alla gestione dei dati.
Infatti, quando vengono inseriti nuovi record il DBMS dovrà aggiornare
anche gli archivi indice ad essi associati causando un incremento dei tempi
d'esecuzione. Per questo motivo l’Amministratore di database dovrà
valutare quanto incide l’operazione d'aggiornamento sulle applicazioni
rispetto a quella di interrogazione. In questi casi si può far riferimento a due
tipi di file : file dati e i file indice.
I file dati sono costituiti dalle informazioni della propria base di dati.
Tipicamente, un file dati ha l’aspetto di una serie di record di lunghezza
24
Capitolo primo
I gestori di data base in generale
fissa composti da campi. Alcuni campi all’interno del record sono unici per
quel record e specificano il percorso con il quale si accederà al record stesso,
cioè si tratta solitamente delle chiavi primarie. Questi campi identificativi
dei record vengono ripresi in un file separato denominato file indice.
All’interno di un file indice le chiavi sono disposte secondo una di più
strutture che permettono di accedere velocemente ai dati e di eseguire
rapidamente inserimenti, cancellazioni e recuperi. Quasi tutti i sistemi di
gestione delle basi di dati offrono più modi d'accesso fisico ai dati . I vari tipi
d'operazione che si vogliono svolgere e la natura dei dati determinano quale
modo o quali metodi diano le prestazioni migliori.
1.6.2. Metodo d'accesso sequenziale indicizzato (ISAM)
Praticamente quasi tutti i database relazionali consentono l’accesso
sequenziale mediante indice. Un sistema Isam permette di accedere ai record di
un file in modo indicizzato o sequenziale. L’accesso indicizzato è una forma d'accesso
casuale; si specifica un valore per un campo e il sistema preleva uno o più record che
soddisfano tale specifica. Accesso sequenziale significa che è possibile accedere ai
record in ordine ascendente o discendente in base al valore di un campo. In entrambi
i casi, i campi target sono campi chiave10
002
004
006
001 Bianchi
002 Verdi
003 Rossi
004 Marrone
005 Nero
.....
Figura 1.4. esempio d'accesso ISAM
Pagina 1
Pagina2
Pagina 3
25
Capitolo primo
I gestori di data base in generale
Isam viene spesso utilizzato per descrivere la struttura di qualunque
database che usi gli indici per la ricerca. L’intero spazio della memoria disco
è diviso in unità chiamate blocchi o pagine (record fisici) ed ogni pagina ha
un proprio numero di pagina unico fra tutte le pagine del disco ed ogni
pagina contiene parecchie linee della base di dati (record logici). Per
trasferire una qualunque linea dalla memoria secondaria alla memoria
principale, il sistema deve leggere l’intera pagina che contiene la linea
desiderata e, una volta che questa è in memoria centrale, viene ricercata la
linea e il campo desiderato. Quindi, la lettura viene fatta per record fisici o
pagine e non per record logici trasferendo nella memoria centrale ad opera
del File e Disk Manager del DBMS
blocchi interi di disco. Una volta
trasferita la pagina in memoria centrale la lettura avviene in maniera
sequenziale. Quindi, considerando che le operazioni di ricerca fatte su
memoria centrale sono di gran lunga più veloci delle operazioni di ricerca su
disco, l’archivio indice conterrà solo i puntamenti fisici che indicano l’inizio
di una pagina.
Si può distinguere nel file ISAM un file primario da un file indice.
Il file primario è organizzato in pagine o blocchi ciascuna delle quali
contiene un certo numero di registrazioni solitamente ordinate secondo la
chiave. La chiave più alta di ciascuna delle pagine del file primario è
riportata in un file indice i cui records sono del tipo :
(Ku, p)
10
“Librerie di database “di Rick Grenam Ben Smith e Jon Udell - Maggio 1992 -Bit
26
Capitolo primo
I gestori di data base in generale
dove p è il numero di pagina del file primario che ha Ku come chiave più
alta. Si richiede che il file indice sia mantenuto ordinato rispetto alla chiave.
La ricerca avviene in questo modo :
Si cerca nell’indice in maniera sequenziale la prima chiave Ku >= K, quindi
si accede alla pagina p associata a Ku e si cerca K nella pagina p. La
creazione di un archivio Isam è realizzata solitamente dal sistema con
programmi di utilità Data Management mentre l’utente deve solo fornire le
informazioni di controllo (chiave, formato del record, dimensione del file,
scelta dell’overflow, bloccaggio) e i dati.
Se questo tipo d'organizzazione facilita la ricerca, qualche problema può
invece crearlo nel caso d'inserimento e cancellazione dei record cosa che può
richiedere una riorganizzazione dei files. Per evitare ciò si adottano diverse
tecniche. Una di queste prevede di strutturare i records dell’indice in questo
modo :
(KU, p ; Kow, Pow)
dove i due nuovi elementi Kow e Pow rappresentano rispettivamente la
chiave più alta della lista di overflow ( o lista dei trabocchi) e il puntatore
d'accesso alla lista di overflow. Nelle operazioni d'inserimento, ricerca ecc.
di una chiave K la lista di overflow viene consultata solo se la pagina p è
piena e se la chiave K è compresa fra Ku e Kow. I vari metodi si
differenziano soprattutto per il diverso modo di organizzare l’area dei
trabocchi, cioè lo spazio su disco che ospiterà le liste di overflow.
27
Capitolo primo I gestori di data base in generale
L’inserimento di un record in una pagina deve rispettare l’ordinamento delle
chiavi, per cui i record successivi in ordine di chiave primaria devono essere
spostati tutti di una posizione. Si possono avere due casi :
1. Fra i record successivi a quello da inserire ce n’è qualcuno cancellato per
cui il nuovo record andrà al posto del record cancellato e quindi non si
creeranno problemi di overflow.
2. La pagina è piena per cui tutti i record inseriti vengono spostati avanti di
una posizione e quindi l’ultimo viene a trovarsi fuori pagina e prende
posto nell’area di overflow. Nello stesso tempo si aggiornerà il la chiave
Kow.
La cancellazione, invece, fa si che venga posto un carattere speciale all’inizio
del record che ne indica l’inesistenza. La cancellazione
potrebbe essere
troppo dispendiosa qualora si decidesse per un compattamento del record
aggiornando la lista di overflow e la lista indici per cui con il metodo
suddetto
il
recupero
dello
spazio
viene
rinviato
ad
un'eventuale
riorganizzazione del file primario.
Se il file indice è troppo grande può accadere che la ricerca per chiave
richieda un numero troppo elevato d'accessi, per cui si può organizzare lo
stesso file indice come un file sequenziale con indice dando luogo ad
un'organizzazione con due livelli d'indice.
Con questi due livelli d'indice, si accederà inizialmente all’indice di primo
livello per trovare la pagina dell’indice di secondo livello contenente la
chiave più alta di quella da ricercare. Il metodo sequenziale tramite indice
28
Capitolo primo
I gestori di data base in generale
può essere efficace per piccole tabelle, in cui tutte le righe (i record) sono
fisicamente accorpate, o in applicazioni che devono svolgere qualche azione
su tutti i record del database.
1.6.3. Metodo d'indicizzazione B-albero.
La maggior parte dei gestori di database usano un metodo d'indicizzazione
detto ad albero bilanciato . I B-alberi sono alberi ordinati (con radice, nodi e
foglie) secondo la chiave e perfettamente bilanciati, cioè le foglie sono tutte
allo stesso livello. In questa tecnica ad indici non si fa alcuna distinzione fra
area primaria ed area di overflow. Una grande proprietà di un B-albero è
quella di essere sempre bilanciato in altezza, per cui le operazioni
d'inserimento e cancellazione vengono condotte in modo da garantire
sempre
questa
proprietà
modificando
opportunamente
la
struttura
dell’albero. L’indice è suddiviso in numerose pagine di dimensione fissa,
concatenate gerarchicamente secondo l’ordine di una determinata chiave, e
ogni nuovo elemento della pagina deve essere inserito nella posizione
corretta11. In caso d'overflow viene aggiunta una nuova pagina alla quale
viene assegnata la metà inferiore o quella superiore degli elementi. Inoltre,
se gli inserimenti portano alla scissione delle pagine, le cancellazioni portano
alla soppressione delle pagine tramite fusione delle pagine stesse. Quando
“in un semplice albero binario ciascun nodo contiene delle informazioni, tra cui una
chiave, che determina la posizione logica del nodo all’interno dell’albero, e due puntatori
rispettivamente al disotto dell’albero sinistro e a quello destro . Per ricercare un dato si
parte dal nodo radice e si confronta la chiave ricercata con quella del nodo : se sono diverse
si continua la ricerca in uno dei due sotto alberi a seconda che la chiave in oggetto risulti
maggiore o minore di quella del nodo. Si prosegue così fino a quando non si trova la chiave
11
29
Capitolo primo
I gestori di data base in generale
poi una pagina si scinde, alla nuova pagina viene assegnata una metà delle
chiavi, incrementando così la possibilità d'inserimento di nuove chiavi sia
nella pagina preesistente che in quella nuova, senza necessità di ulteriori
scissioni. I B-alberi sono mediamente suddivisi in un numero di livelli che va
da due a quattro, secondo la dimensione della pagina, il numero delle chiavi
e la dimensione di ogni record.
Questo tipo di struttura migliora la velocità di ricerca, aumentando però
anche il tempo necessario per l’aggiunta di nuovi record. Il vantaggio degli
indici ad albero rispetto all’accesso sequenziale è che, anziché esaminare
migliaia di pagine di dati, il DBMS deve esaminare solo alcune pagine
d'indice (tre o quattro di norma) per trovare i record richiesti ; poi recupera
da database solo quelle pagine di dati in cui si trovano i record richiesti.
o si raggiunge una foglia” G.Casarano-M. Di Gaetano :B Alberi e B + Alberi
Mcmicrocomputer 12/1994
30
Capitolo primo
I gestori di data base in generale
Livello 3
Livello 1
Livello 2
021
025
037
|
|
|
055
063
089
096
|
|
|
|
110
113
125
130
145
|
|
|
|
|
219
225
237
243
248
|
|
|
|
|
265
273
277
|
|
|
301
321
329
341
348
|
|
|
|
|
359
361
368
|
|
|
P5
P6
20
50
100
P5
P6
P7
P2
0
200
P7
P2
P3
P1
P8
P9
200
250
300
350
P8
P9
P10
P11
P3
P10
P11
Figura 1.5 B-albero ad altezza 3. Se si aggiungono le chiavi 212 e 345, spezzeremo due
raggruppamenti inferiori e due superiori. Le pagine superiori contengono i numeri di pagina
relativi alle pagine inferiori
31
Capitolo primo
I gestori di data base in generale
Livello 3
Livello 1
Livello 2
021
025
037
|
|
|
055
063
089
096
|
|
|
|
110
113
125
130
145
|
|
|
|
|
212
219
225
|
|
|
P8
237
243
248
|
|
|
P4
265
273
277
|
|
|
P9
301
321
329
|
|
|
P10
341
345
348
|
|
|
P12
359
361
368
|
|
|
P11
P5
P6
20
50
100
P5
P6
P7
P2
0
200
300
P13
P7
200
230
250
P8
P4
P9
P3
300
340
350
P10
P12
P11
P13
P2
P3
P1
Figura1. 6. B-albero aggiornato.
32
Capitolo primo
I gestori di data base in generale
1.6.4. Metodo Hashing
Anziché costruire un indice, l’hashing utilizza una funzione matematica per
calcolare la pagina in cui il record di dati è memorizzato. Questo metodo si
usa solitamente quando :
? L’insieme delle chiavi ha un campo di variabilità molto più ampio degli
indirizzi fisici a disposizione.
? I valori delle chiavi coprono un campo discontinuo per cui vi sarebbero
delle aree di memoria non utilizzate.
? La chiave è formata da valori che non consentono la loro trasformazione
in indirizzo tramite l’algoritmo prescelto.
Tramite un algoritmo, quindi, si riduce il campo di variabilità delle chiavi a
quello degli indirizzi fisici, per cui è evidente che la scelta dello stesso
risulta essere fondamentale per realizzare una buona gestione degli
indirizzi permettendo anche in grosse basi di dati di recuperare il record
richiesto in una sola lettura. Altro problema fondamentale è quello della
gestione dell’overflow
quando il numero dei record assegnati
dall’algoritmo ad un'area supera la sua capacità. La tecnica offerta per la
gestione dei trabocchi sono molteplici.
Chiave
125
283
147
.
.
.
682
574
Indirizzo
algoritmo
Indirizzo
2
4
0
.
.
.
1
0
Figura 1.7 esempio di metodo hashing
33
Capitolo primo
I gestori di data base in generale
In questo modello il DBMS, quando deve inserire un nuovo record logico
nell’archivio, calcola con l’algoritmo ed il valore del campo prescelto
l’indirizzo fisico di dove il record va registrato e lo passa al File e Disk
Manager. Così nella operazione di ricerca, in funzione del valore del
campo contenuto nel record logico da recuperare, il DBMS calcola
l’indirizzo e chiede al file e Disk Manager l’operazione di lettura fisica.
1.6.5. Metodologia Bit Map
Questa metodologia viene impiegata per diminuire i tempi di risposta
relative a query complesse (soprattutto per applicazioni di Data
Warehouse) potendo essere eseguita all’interno degli indici senza dover
ricorrere ad un effettiva lettura dei dati.
La rivista d'informatica Zerouno propone un esempio per spiegare come
funzionano le mappe di bit. Abbiamo un database di registro autoveicoli,
con 10 milioni di vetture. Ciascuna riga della base di dati ha un
identificatore interno di sistema, univoco, chiamato codice riga ( Row-ID o
Rid, da non confondere con l'identificatore univoco dei dati, o chiave
primaria). Ogni singolo valore della colonna Rid avrà il proprio indice bit
map, costituito da 10 milioni di bit (uno per ciascun record del database).
Se un Bit è 1, nel record compare il valore corrispondente ; se è 0, nel
record il valore corrispondente non è presente. Le mappe di bit non
hanno bisogno di puntatori ai record di dati, perché i record sono
34
Capitolo primo
I gestori di data base in generale
identificati dalla posizione dei bit nella mappa : il primo bit rappresenta il
record 1, il secondo bit il record 2 e così via.
Ciascun
valore distinto di un
campo ha il suo indice a mappa di
bit, con un bit per ciascun record.
Se un bit è 1, il valore compare nel
record relativo. Per trovare i veicoli
di un particolare colore, il DBMS
esamina la mappa di bit opportuna,
quindi legge i record dal database.
Blu
Arancio
Verde
Rosso
0
1
I veicoli 1 e 6
sono Blu
1
0
0
0
0
0
1
0
0
0
0
0
Il veicolo 2 è
arancione
0
0
0
0
1
0
1
I veicoli 5 e 7
sono verdi
0
0
1
1
0
0
0
I veicoli 3 e 4
sono rossi
Figura1. 8. Un indice a bit map in funzione del colore (fonte : Zerouno)
Questo metodo genera però due problemi :
A. Il primo è dovuto alla cardinalità elevata. Ad esempio il numero di
matricola di un veicolo nel nostro database è univoco, perciò se si
usassero solo le mappe di bit ci sarebbero “solo” 10 milioni di mappe di
10 milioni di bit ciascuna, per un totale di 100 milioni di milioni di bit.
B. Il secondo problema è che l’aggiornamento di una mappa di bit in
funzione di modifiche apportate ai dati richiede molto più tempo
dell’aggiornamento di un semplice B-tree. Per modificare le mappe di
bit da cambiare da 0 in 1 o viceversa, quando al database vengono
aggiunti nuovi valori, bisogna aggiungere nuove mappe di bit.
Per questo insieme di fattori, oggi, i produttori di database sono orientati
verso metodologie che adottano indici complessi basati ad esempio su
combinazioni di B-tree e mappe di bit alle foglie.
35
Capitolo primo
I gestori di data base in generale
Quanti veicoli di colore rosso del 1995
costano L. 19.000.000 ?
Per risolvere questa interrogazione il database si
limita a effettuare la congiunzione logica
(AND) delle mappe di bit e trova che un solo
record soddisfa tutti i criteri. Non è necessario
andare a leggere i dati.
Colore
=
Rosso
Anno
=
1995
0
0
1
1
0
0
0
e
0
0
0
1
0
0
1
Prezzo
in
miliono
=
L.19
0
1
e 0
1
0
0
0
Risul
tato
e
0
0
0
1
0
0
0
Figura 1. 9. L'interrogazione a bit map (fonte:Zerouno)
1.7. La congruenza di stato
Si può pensare alla base di dati come ad un insieme di archivi e le
informazioni presenti su di esse devono essere congruenti con una serie di
regole stabilite al momento della definizione della base di dati. Questa base
dati deve garantire il rispetto continuo delle regole fissate. Tutto questo
insieme di regole definisce i possibili
assumere,
“stati” che la base di dati può
i quali devono essere coerenti con esse, cioè fissano tutti i
possibili valori delle informazioni ammesse per questi valori. Il tema della
congruenza di stato della base dei dati può essere ricondotto a quattro
argomenti principali :
? Recupero di situazioni d'errore
? Integrità
36
Capitolo primo
I gestori di data base in generale
? Sicurezza
? Concorrenza d'accesso (nel caso di multiutenza)
1.7.1. Recupero di una situazione d'errore (Recovery)
Un DBMS deve avere sempre un meccanismo che permette di superare ogni
situazione d'errore. Il Recovery
viene realizzato ritornando sempre
all’ultimo stato valido della base di dati. La base di dati evolve nel tempo
passando da uno stato all’altro, per effetto di una transazione. Una
transazione è una sequenza d'operazioni sulla base di dati considerata dal sistema
come un'unità di lavoro indivisibile12. Questo vuol affermare che la transazione
non può avere un effetto parziale : o tutte le operazioni vanno a buon fine
oppure, per quello che riguarda l’effetto che avranno sulla base di dati, è
come se la sequenza delle operazioni non fosse mai iniziata13.
Se la transazione termina con successo la base di dati passa ad un nuovo
stato (commit), se la transazione viene invece abortita per il sistema è come se
non fosse mai iniziata (abort).
Un errore (cioè una transazione terminata prematuramente) può essere
causato da programmi applicativi o da cause fisiche come operazioni di
scrittura o lettura su dischi, mancanza improvvisa d'alimentazione ecc..
I sistemi di recovery dovranno, quindi, basarsi sul recupero dell’ultimo
“stato” valido della base di dati e dovranno ricordare tutte le informazioni
che hanno, col passare del tempo, determinato variazioni . In ogni sistema di
12
Albano, Basi di dati , - Boringhieri 1985
37
Capitolo primo I gestori di data base in generale
Recovery esiste un archivio ( detto Log o Journal) dove si prendono nota di
tutte le variazioni intervenute sulla base di dati. Insieme al Log devono
esistere delle copie (images copies) della base di dati realizzate in maniera
periodica ( ad esempio, all’inizio o alla fine del giorno). Tramite questi
elementi è possibile ricostruire una situazione corretta della base di dati.
Se si verifica un errore sono due le possibilità :
1. La base di dati è danneggiata “fisicamente” per cui partendo dall’ultima
copia disponibile si utilizza il Log per riproporre tutte le variazioni
intervenute al momento dell’errore.
2. La base dei dati non è danneggiata “fisicamente” ma si presenta una
situazione d'incongruenza nei valori dei dati (ad esempio si verifica una
situazione di violazione di un vincolo d'integrità) ; allora la base di dati
viene riportata, utilizzando il Log, all’ultima situazione di congruenza.
Questo appena descritto riguardo al Recovery non è altro che un discorso
generico sull’argomento che nella realtà presenta un'articolazione ben più
complessa14.
1.7.2. Integrità
Per integrità si intende congruenza, correttezza, validità dei valori presenti in una
base di dati15. Il DBMS dovrà contenere una componente che governi l’attività
di corretto aggiornamento dei dati. Valori non validi possono essere
introdotti involontariamente o deliberatamente.
13 Si può pensare, ad esempio, ad un programma come un complesso insieme di
transazioni.
38
Capitolo primo
I gestori di data base in generale
Spetta alla integrità impedire aggiornamenti non validi degli archivi
effettuati in maniera involontaria, mentre spetta alla sicurezza impedire che
un’operazione dolosa provochi un aggiornamento non valido.
Sono due le funzioni che la componente del DBMS destinato alla gestione
dell’integrità deve svolgere :
A. Controllare che gli aggiornamenti dei dati siano congruenti alle regole
stabilite.
B. Produrre effetti di ritorno quando si generi uno stato di incongruenza ( ad
esempio rigettare la transazione, segnalare l’errore oppure correggere
automaticamente lo stesso)
Questa componente del DBMS si deve basare su di un insieme di regole in
cui sono definiti quali errori è necessario controllare, quando il controllo
deve essere effettuato e quali azioni è necessario intraprendere nel caso in
cui si verifichino o stiano per verificarsi questi errori. Attraverso un
linguaggio specifico, quindi, deve essere prevista la possibilità di costruire
queste regole sia durante la progettazione degli archivi sia durante la vita
degli stessi, dovendo ,però, essere compatibili con il corrente stato degli
archivi stessi. Queste regole vengono mantenute su archivi speciali
( dizionari di dati, cataloghi) che sono gestiti dai DBMS.
Le regole di un dizionario sono riconducibili a due categorie :
1. Regole di integrità di dominio ;
2. Regole di integrità di riferimento.
14
15
Vedere Guidi Dorbolò :Guida a SQL
C.J. Date, An introduction to Database System :volume II, - Addison Wesley Masson 1985
39
Capitolo primo
I gestori di data base in generale
Un vincolo di dominio è un vincolo per il quale ogni valore di un certo campo deve
appartenere ad un certo insieme (chiamato dominio) di valori predefiniti16. Nel
dominio vengono definiti tutta una serie di vincoli sulla natura del campo
come, ad esempio, l’intervallo dei valori assumibili, il tipo di dato,
l’ordinamento per valori presenti sugli archivi ecc..
Alla seconda categoria appartengono le regole che impongono i vincoli fra
due o più campi presenti anche su archivi divisi ( coincidenza o condizioni
particolari di confronto fra i valori di campi presenti su archivi diversi,
vincoli di aggiornamento di un campo condizionati dai valori di altri campi,
ecc..).
Le modalità di inserimento e gestione delle regole sono diverse a seconda
dei vari DBMS e soprattutto sono in funzione del modello dei dati sul quale
il DBMS si basa (reticolare, gerarchico, relazionale).
1.7.3. La sicurezza
Nella sicurezza rientrano i controlli che il DBMS deve effettuare per impedire
aggiornamenti non autorizzati o alterazioni dolose17.Il sottosistema di gestione
della sicurezza di un DBMS si deve basare sulle seguenti funzioni :
1. Identificare l’utilizzatore della transazione ;
2. Autenticazione dell’utilizzatore ;
3. Controllo delle regole di autorizzazione dell’operazione richiesta.
16
17
Introduzione ai database C.J. Date Masson 1986
C.J. Date, An introduction to Database System :volume II, - Addison Wesley
40
Capitolo primo
I gestori di data base in generale
Il DBMS deve ricordare i codici identificativi dei potenziali utenti e l’elenco
di tutte le operazioni autorizzate che ciascuno di questi utenti può compiere
(detto anche profilo utente).
Uno dei modi per realizzare il processo d'identificazione ed autorizzazione
è quello di inserire un codice al quale segue la richiesta d'indicazione di una
“parola chiave” (password) che conosce solo il titolare del codice inserito.
Questa
tecnica
serve
per
garantire
che
l’utilizzatore
corrisponda
effettivamente a quello indicato dal codice identificativo. Un altro modo può
essere quello della lettura dei tesserini magnetici i quali vengono detenuti
dagli utenti stessi.
Il DBMS per garantire la sicurezza controlla (come fa con l’integrità) le
richieste d'aggiornamento o di ricerca tramite una serie di regole
precedentemente inserite nel dizionario o catalogo dove sono definiti i vari
archivi della base di dati (si parla in questo caso d'assegnazione di privilegi
sugli oggetti del DBMS e d'acceso ai dati per mezzo di view) . L’insieme
delle regole inserite nel dizionario o nel catalogo può essere visto come una
matrice a due dimensioni :gli utenti e gli oggetti della base di dati.
Un oggetto individua un particolare livello di controllo al quale può essere
riferita una regola. Ad esempio per oggetto si può intendere una vista
parziale della base dei dati, un archivio, dati contenuti in un archivio, un
solo dato ecc..
In questa matrice le celle che sono individuate dall’utente e dall’oggetto
considerato contengono le regole vere e proprie con cui il DBMS realizza il
41
Capitolo primo
I gestori di data base in generale
controllo. A sua volta, però, questa matrice deve essere considerata come
oggetto sottoposto a sicurezza attribuendo solo a particolari utenti
autorizzati la possibilità di compiere operazioni d'aggiornamento e ricerca
sulla suddetta matrice.
Così come per le regole d'integrità, anche le regole per la sicurezza devono
poter essere inserite o modificate col passare del tempo ed in modo che
queste siano compatibili con lo stato della base dei dati.
Tutte queste tecniche di sicurezza in ogni caso non sarebbero sufficienti ad
impedire l’accesso doloso di utenti specialisti che potrebbero scavalcare il
sottosistema
di protezione del DBMS con programmi particolari.
Un'ulteriore protezione può essere quella di criptografare o mascherare i
valori dei dati memorizzati sugli archivi tramite particolari algoritmi di
trasformazione. Attraverso questi si memorizzano dei valori derivati che
possono essere interpretati solo conoscendo l’algoritmo. L’operazione di
trasformazione del valore diventa quindi obbligatoria sia subito prima della
scrittura che subito dopo la lettura del dato. Queste funzioni di criptografare
e decriptografare i dati possono essere realizzate o tramite programmi
standard già disponibili nel DBMS o costruiti appositamente dagli
amministratori dei dati18.
18 “ La tacnica della criptografia viene impiegata per impedire la visibilità del database in
situazioni specifiche, quali il trasferimento di dati via rete o il trasferimento temporaneo su
supporti di memoria come nastri o floppy . Va infatti notato che l’utilizzo di un database
crittografato comporta notevoli perdite di informazioni dovute ai tempi spesi per la
codifica e decodifica dei dati.” Guidi Dorbolò :guida a SQL, McGraw Hill
42
Capitolo primo
I gestori di data base in generale
1.7.4. La concorrenza d'accesso
Nel caso in cui un DBMS operi in una situazione di monoutenza questi avrà
solo il problema di controllare le autorizzazioni e se le transazioni sono
andate a buon fine, ma spesso il DBMS ha a che fare con una situazione di
multiutenza. Subentra in questo caso, un compito aggiuntivo per il DBMS
che è quello di governare la concorrenza di più accessi da parte d'altrettante
transazioni.
Per meglio comprendere il ruolo del DBMS nella gestione della concorrenza
degli accessi si può fare un esempio : due transazioni A e B contengono
ambedue una funzione di ricerca ed aggiornamento di record. Si vedrà cosa
può accadere in base ai tempi di esecuzione delle transazioni. Se le due
transazioni riescono a completare le funzioni in intervalli differenziati,
l’integrità della base di dati sarà sempre assicurata, cioè vengono eseguite
prima una poi l ‘altra, quindi in maniera seriale come se si fosse in una
situazione di monoutenza.
A
T1 ricerca R
T2 aggiorna R
T3
T4
B
A
oppure
ricerca R
aggiorna R
B
ricerca R
aggiorna R
ricerca R
aggiorna R
L’integrità viene mantenuta anche nel caso in cui una delle transazioni
subisca un ripristino automatico perché terminata in modo anomalo. Nel
caso in cui gli intervalli di tempo di utilizzo della base di dati da parte delle
43
Capitolo primo
I gestori di data base in generale
transazioni A e B si sovrappongono si possono, invece, generare casi di
errata elaborazione e aggiornamento dei dati.
Questi possono essere ricondotti essenzialmente a tre tipi19 :
A. Perdita dell’ultimo aggiornamento
A
T1 ricerca R1
T2
T3 aggiorna R1
T4
B
ricerca R1
aggiorna R1
La transazione B aggiorna il record R1 non tenendo conto dell’avvenuto
cambiamento del record R1 da parte della transazione A.
B. Perdita dell’ultimo ripristino automatico
A
T1 ricerca R1
T2 aggiorna R1
T3
T4 ripristino R1
T5
B
ricerca R1
aggiorna R1
La transazione B esegue una lettura al tempo T3 del record R1
precedentemente aggiornato dalla transazione A al tempo T2, ma la fine
anomala della transazione A induce un ripristino automatico di R1 allo stato
in cui era al tempo T1.
La transazione B, pertanto, al tempo T5, effettua un aggiornamento che non
tiene conto di questo ripristino.
19
C.J. Date, An introduction to Database System :volume II, - Addison Wesley
44
Capitolo primo
I gestori di data base in generale
C. Elaborazione su di uno stato inconsistente
A
T1 ricerca R1
T2
T3
T4
T5
T6
T7 elabora R1, R2
B
ricerca R2
aggiorna R2
ricerca R1
aggiorna R1
fine transazione
La transazione A effettua una ricerca del record R1 al tempo T1. La
transazione B ricerca ed aggiorna i record R1 ed R2. Al tempo T7 la
transazione A produce un'elaborazione sulla base del contenuto letto nel
record R1. Siccome al tempo T5 è avvenuta una variazione dello stato del
record R1 da parte della transazione B, la transazione A ha effettuato, al
tempo T7, l’elaborazione su di uno stato inconsistente della base dei dati.
Il sottosistema posto al controllo degli accessi (Control Access Manager) per
poter garantire costantemente l’integrità della base dei dati, in ambiente
multiutenza deve essenzialmente realizzare una serializzazione delle
transazioni, proprio perché la serializzazione riconduce l’ambiente di
multiutenza ad un ambiente di monoutenza.
Fra le tecniche usate vi è quella del di introdurre dei blocchi temporali
(locking) sul record oggetto di aggiornamento da parte della transazione. Il
45
Capitolo primo
I gestori di data base in generale
blocco (lock) ha come conseguenza una attesa da parte di altre transazioni
che hanno la necessità di accedere ad un record in corso di aggiornamento.
Un’altra tecnica è quella dell’ordinamento temporale, studiata per i sistemi
di gestione delle basi distribuite, in cui le transazioni terminate con successo
devono avere lo stesso ordine con cui sono iniziate senza realizzare blocchi.
La gestione della serializzazione nella tecnica dei blocchi viene realizzata
presupponendo che le transazioni possono chiedere su di un record una
operazione di lettura o una operazione di scrittura. Per questo fatto si
distinguono due tipi di blocco :
A. Blocco per aggiornamento ( EL = lock esclusivo)
B. Blocco per sola lettura ( SL = lock condiviso)
Si può identificare il modo in cui il DBMS realizza la serializzazione di due transazioni (A e B) in una matrice detta di “compatibilità”.
B
EL
SL
A
EL
NO
NO
SL
NO
SI
Figura 10 matrice di compatibilità per i tipi di lock
Si può notare dalla matrice che le transazioni non verranno serializzate solo
nel caso entrambe le richieste sono di sola lettura. In ogni altro caso la
46
Capitolo primo
I gestori di data base in generale
transazione che per seconda farà richiesta di lock entrerà in attesa fino a
quando non vi sarà il rilascio del lock della transazione che l’ha generato.
Vediamo ora come un DBMS può risolvere i casi in cui si potevano generare
situazioni di errore nella base dei dati o nell'elaborazione delle informazioni
lette dalla base di dati.
Caso 1
A
T1 ricerca R1
T2
T3 aggiorna R1
T4 fine
B
messa in attesa di B
rilascio del lock su R1
attivazione ricerca di B
lock esclusivo su R1
aggiorna R1
fine
T5
T6
DBMS
Lock esclusivo su R1
Rilascio del lock su R1
Caso 2
A
T1
T2
T3
T4
T5
B
ripristino R1
fine
T6
T7
DBMS
Lock esclusivo su R1
ricerca R1
aggiorna R1
ricerca R1
attesa
messa in attesa di B
rilascio del lock su R1
attivazione ricerca di B
lock esclusivo su R1
aggiorna R1
fine
Rilascio del lock su R1
Caso 3
A
T1 ricerca R1
B
T2
T3
T4
ricerca R2
aggiorna R2
ricerca R1
T5
T6 ricerca R2
T7 attesa
attesa
DBMS
Lock non esclusivo
su R1
lock esclusivo su R2
richiesta di lock
esclusivo su R1
messa in attesa di B
messa in attesa di A
attesa
Nell’ultimo caso il locking produce una situazione di stallo nota come
“abbraccio mortale” (Deadlock). Il deadlock avviene se due utenti attendono
47
Capitolo primo
I gestori di data base in generale
entrambi, reciprocamente, che l’altro rilasci il lock che ha effettuato. In una
situazione del genere il DBMS deve procedere ad una chiusura forzata di
una delle transazioni effettuando tutti i necessari ripristini. Esistono alcune
tecniche per evitare il deadlock fra queste :
a) Schedulazione delle transazioni
Si evita con questa tecnica che due transazioni che potrebbero entrare in
conflitto vengano attivate contemporaneamente. Questo però implica una
conoscenza a priori di ciò che le transazioni elaborano, ed è per questo
motivo che tale tecnica risulta essere molto più onerosa e complessa da
gestire.
b) Rigetto della richiesta di lock
Con questa tecnica si rigetta una richiesta di lock segnalando ciò alla
transazione richiedente qualora questo lock, se concesso, venisse a creare
una situazione di Deadlock. Questa tecnica prevede quindi la chiusura
forzata di una delle due transazioni. In un tempo successivo la transazione
rigettata può fare nuovamente richiesta di lock ;questa verrà accettata
qualora siano state rimosse le cause che avevano portato al Deadlock.
c) Riproposta della transazione
Questa tecnica si basa sul principio di non permettere mai che due
transazioni possano essere attivate nello stesso istante e di assegnare a
ciascuna una etichetta relativa al tempo di partenza.
48
Capitolo primo
I gestori di data base in generale
Ora se la transazione A richiede un lock su un record già bloccato dalla
transazione B, il Deadlock può essere evitato in due modi :
1. la transazione A entra in attesa se partita prima della transazione B,
altrimenti si chiude forzatamente e riproposta automaticamente in un
momento successivo.
2. la transazione A entra in attesa se partita dopo la transazione B,
altrimenti si chiude forzatamente la transazione B che viene riproposta
automaticamente in un momento successivo.
Tutte le transazioni che vengono chiuse forzatamente mantengono
comunque l’etichetta originaria di partenza. Si vede come nella soluzione 1
entrano in attesa le transazioni più vecchie a favore delle più recenti,
mentre nella soluzione 2 le transazioni più recenti entrano in attesa a favore
delle più vecchie. Con questa tecnica non si verificherà mai che, data una
sequenza di transazioni A,B,C,D che la transazione A sia in attesa per la
transazione B e che la B sia in attesa per C , C per D e D per A, motivo per
cui non è possibile una situazione di Deadlock.
La tecnica del lock non è proponibile solo a livello di record, ma può essere
proposto da alcuni DBMS anche a livello di pagina e addirittura fino a
livello di intera base di dati : più è basso il livello di lock e più è difficile il
controllo della concorrenza di accesso. Infatti con un lock a livello della
base di dati tutte le transazioni che accedono alla stessa base saranno
serializzate e quindi sarà ridotta la probabilità che possano entrare in una
49
Capitolo primo
I gestori di data base in generale
condizione di Deadlock ; invece con un lock a livello di singolo record la
probabilità sarà sicuramente maggiore.
Tecnica dell’ordinamento temporale
Con questa tecnica ogni transazione viene identificata da una marca (time
stamp) che è il tempo di inizio, e viene eseguita senza ricorrere al blocco dei
dati. Tutti gli accessi vengono registrati nel Log e solo se la transazione
termina con successo e senza conflitti i suoi effetti dal Log vengono riportati
sulla base di dati. Una transazione è in conflitto con altre se accede ad un
dato modificato da una transazione più giovane (iniziata dopo), oppure se
modifica un dato cui ha avuto accesso una transazione più giovane. In
entrambi i casi non sarebbe più vero che le transazioni siano state eseguite
come se fossero state serializzate nell’ordine in cui sono iniziate.
Verificandosi il conflitto, la transazione viene fatta ripartire con una nuova
marca ; ma la base dei dati non deve essere ripristinata perché le eventuali
modifiche sono solo sul giornale.
50