Attendibilità e Integrità

I DB sono un insieme di dati provenienti da varie fonti. Gli utenti affidano i propri dati ad un DBMS e si aspettano la loro protezione da perdite e danneggiamenti. L'attendibilità e l'integrità di un DB si focalizzano su tre punti:
  1. Integrità di DB: L'intero DB deve essere protetto contro i danni come fallimenti del disco o corruzione dell'indice dei dati. Ciò può essere fatto attraverso controlli di integrità del sistema operativo e procedure di recupero dati.
     
  2. Integrità di elementi: I valori di specifici elementi di dati devono essere scritti e variati solo da utenti autorizzati. Particolari controlli di accesso proteggono il DB dalla corruzione di utenti non autorizzati.
     
  3. Accuratezza degli elementi: Solo valori corretti devono essere scritti in elementi di un DB. Controlli di valori di elementi possono aiutare prevenire inserimenti di valori impropri. Inoltre, condizioni di vincoli possono scovare valori non corretti.
     

Caratteristiche di protezione del sistema operativo

In un sistema operativo i file subiscono dei backup periodici, sono protetti durante l'esecuzione da accessi esterni attraverso le facilities standard di controllo di accesso del sistema operativo. Infine il sistema operativo fornisce alcuni controlli di integrità per tutti i dati; controlli che fanno parte di normali operazioni di lettura e scrittura da device di I/O. Questi controlli forniscono sicurezza di base, ma il DBMS deve aumentare questi controlli.

Aggiornamento a 2-fasi

Un problema serio per un DBMS è il fallimento del sistema nel mezzo della modifica di dati. Se viene modificato un record mentre il sistema fallisce, la prima parte del record può contenere il valore aggiornato, la seconda metà quello non aggiornato. Errori di questo tipo sono localizzati facilmente, ma quando vengono aggiornati molti record, è difficile stabilire quanti record siano stati aggiornati e quanti siano in errore. La soluzione a questo problema, proposta da LAMPSON e STORGIS e adottato in molti DBMS, usa un aggiornamento a 2-fasi.

Tecnica di aggiornamento

Durante la prima fase, chiamata intent phase, il DBMS raccoglie le informazioni e le altre risorse di cui ha bisogno per eseguire l'aggiornamento. Può raccogliere dati, creare record temporali, aprire file, chiudere l'accesso ad altri utenti, e calcolare le risposte finali; in breve fa tutto il necessario per preparare l'aggiornamento, ma non fa cambiamenti permanenti. Se il sistema fallisce durante la prima fase, può essere fatta ripartire senza problemi. L'ultimo evento della prima fase, chiamata operazione di commit, scrive un flag di conferma nel DB. Questo flag significa che il DBMS supera un punto di non ritorno: dopo il commit, il DBMS comincia a fare cambiamenti permanenti. La seconda fase fa cambiamenti permanenti. Durante questa fase nessun'azione prima del commit può essere ripetuta, ma le attività di aggiornamento della seconda fase possono essere anche ripetute, come spesso è necessario. Se il sistema fallisce durante la seconda fase, il DB può contenere dati incompleti, ma questi dati possono essere corretti rifacendo tutte le attività della seconda fase. Dopo che la seconda fase è stata completata, il DB è completo.

Ridondanza e consistenza interna

Molti DBMS mantengono informazioni per cercare inconsistenze interne ai dati e correggerle. Le informazioni addizionali variano da pochi bit di controllo a intere duplicazioni di record, secondo l'importanza dei dati.

Recupero

In aggiunta a questi processi per la correzione di errori, un DBMS può mantenere un LOG degli accessi e delle modifiche fatte dagli utenti. Quindi, in caso di fallimento, il DB utilizza una copia di backup consistente, sulla quale vengono applicati tutti i cambiamenti memorizzati nel LOG di verifica.

Concorrenza e consistenza

I sistemi di DB sono spesso sistemi multiutente. Gli accessi di due utenti che condividono il DB devono essere vincolati in modo da non farli interferire l'uno con l'altro. Un semplice locking è fornito dal DBMS. Se due utenti cercano di leggere lo steso dato, non vi è conflitto poiché entrambi ottengono lo stesso valore. Il problema sorge se due utenti tentano di modificare lo stesso dato.

I monitor

Un monitor è un'unità di un DBMS che è responsabile dell'integrità strutturale del DB. Un monitor può controllare valori inseriti per assicurare la loro consistenza con il resto del DB, o con caratteristiche di un particolare campo. Per esempio, un monitor potrebbe rifiutare un carattere alfabetico per un campo numerico. Discutiamo diversi tipi di monitor.

Comparazione di range

Un monitor per la comparazione di range testa ogni nuovo valore per assicurare che questo valore è all'interno di un range accettabile. Se il dato è al di fuori del range, esso viene rifiutato e non inserito nel DB. La comparazione del range può essere conveniente per campi numerici. I vincoli di range possono anche essere applicati a dati con un formato prestabilito. La comparazione del range può essere usata per assicurare la consistenza interna di un DB. Quando è usata in questo modo, la comparazione avviene tra due elementi del DB. Controlli di questo tipo possono verificare i dati all'interno di un DB; se si sospetta che il DB si è corrotto, un controllo di range di tutti i record potrebbe identificarne uno che ha valori sospetti.

Vincoli di stato

Un vincolo di stato descrive una condizione di un intero DB. Questi vincoli non dovrebbero mai essere violati nel DB, in altre parole se qualche vincolo non è rispettato, qualche valore del DB è in errore.

Vincoli di transizione

I vincoli di stato descrivono lo stato di un DB corretto. I vincoli di transizione descrivono le condizioni necessarie che devono esistere prima di applicare dei cambiamenti al DB.




 Pagina Precedente  Torna Inizio Pagina  Pagina Successiva DIA - Dipartimento di
Informatica ed Applicazioni
 http://www.oracle.com