ACID: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Folto82 (discussione | contributi)
mNessun oggetto della modifica
Botcrux (discussione | contributi)
m (bot) correzione falsi amici, replaced: consistenza → coerenza (2)
Riga 3:
 
== Descrizione ==
 
Affinché le transazioni operino in modo corretto sui dati è necessario che i meccanismi che le implementano soddisfino queste quattro proprietà:
* '''atomicità''': la transazione è indivisibile nella sua esecuzione e la sua esecuzione deve essere o totale o nulla, non sono ammesse esecuzioni parziali;
*'''consistenzacoerenza''': quando inizia una transazione il database si trova in uno stato coerente e quando la transazione termina il database deve essere in un altro stato coerente, ovvero non deve violare eventuali [[vincolo di integrità|vincoli di integrità]], quindi non devono verificarsi contraddizioni (''incoerenza'') tra i dati archiviati nel DB;
* '''isolamento''': ogni transazione deve essere eseguita in modo isolato e indipendente dalle altre transazioni, l'eventuale fallimento di una transazione non deve interferire con le altre transazioni in esecuzione;
* '''durabilità''': detta anche '''persistenza''', si riferisce al fatto che una volta che una transazione abbia richiesto un ''commit work'', i cambiamenti apportati non dovranno essere più persi. Per evitare che nel lasso di tempo fra il momento in cui la base di dati si impegna a scrivere le modifiche e quello in cui li scrive effettivamente si verifichino perdite di dati dovuti a malfunzionamenti, vengono tenuti dei registri di log dove sono annotate tutte le operazioni sul DB.
Riga 34 ⟶ 33:
 
== Concurrency Control Manager o WorkSpace Privato ==
 
La transazione effettua le modifiche su una copia della risorsa database. Se essa non termina con successo la copia viene distrutta, altrimenti le modifiche fatte sulla copia vengono rese permanenti attraverso l'operazione di commit. Il sistema ne garantisce in questo modo l'''atomicità''.
Le transazioni devono essere eseguite in isolamento le une dalle altre ma spesso molte transazioni vengono eseguite concorrentemente nello stesso sistema. Il concurrency control manager si assicura che le singole azioni delle varie transazioni vengano eseguite in un ordine tale da non interferire le une con le altre (''isolamento'').
Riga 44 ⟶ 42:
 
== Logging / Recovery Manager ==
 
Per assicurare '''persistenza''' dei dati del database anche in caso di crash (p.e. stalli nell'accesso delle transazioni alla risorsa), ogni modifica al database viene registrata separatamente sul disco.
Il log manager registra queste modifiche per consentire in qualsiasi momento (in seguito ad un crash) al recovery manager di ripristinare il database in uno stato consistentecoerente.
Il ''log manager'' scrive i suoi dati attraverso il Buffer Manager ma prima di continuare si assicura che siano stati effettivamente scritti su disco. ''Timestamping'' associa ad ogni transazione e ad ogni risorsa una marca temporale con la quale consentire e controllare l'accesso delle transazioni alle risorse del database.