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