Skip to main content

Il modello ACID per i sistemi di gestione dei database

Are Acid Blocking Drugs Safe? (Giugno 2025)

Are Acid Blocking Drugs Safe? (Giugno 2025)
Anonim

Il modello di progettazione di database ACID è uno dei concetti più antichi e importanti della teoria dei database. Stabilisce quattro obiettivi che ogni sistema di gestione di database deve sforzarsi di ottenere: atomicità, coerenza, isolamento e durata. Un database relazionale che non riesce a soddisfare nessuno di questi quattro obiettivi non può essere considerato affidabile. Un database che possiede queste caratteristiche è considerato compatibile con ACID.

ACID Definito

Prendiamo un momento per esaminare ciascuna di queste caratteristiche in dettaglio:

  • Atomicita afferma che le modifiche al database devono seguire una regola "tutto o niente". Si dice che ogni transazione sia "atomica". Se una parte della transazione fallisce, l'intera transazione fallisce. È fondamentale che il sistema di gestione del database mantenga la natura atomica delle transazioni nonostante qualsiasi DBMS, sistema operativo o guasto dell'hardware.
  • Consistenza afferma che solo i dati validi saranno scritti nel database. Se, per qualche motivo, viene eseguita una transazione che viola le regole di coerenza del database, verrà eseguito il rollback dell'intera transazione e il database verrà ripristinato in uno stato coerente con tali regole. D'altra parte, se una transazione viene eseguita con successo, il database sarà preso da uno stato che è coerente con le regole in un altro stato che è anche coerente con le regole.
  • Isolamento richiede che più transazioni che si verificano nello stesso momento non influiscano sulla reciproca esecuzione. Ad esempio, se Joe emette una transazione su un database nello stesso momento in cui Mary emette una transazione diversa, entrambe le transazioni dovrebbero operare sul database in modo isolato. Il database deve eseguire l'intera transazione di Joe prima di eseguire Mary's o viceversa. Ciò impedisce alla transazione di Joe di leggere i dati intermedi prodotti come un effetto collaterale di una parte della transazione di Mary che alla fine non sarà impegnata nel database. Si noti che la proprietà di isolamento non garantisce quale transazione verrà eseguita per prima - solo che le transazioni non interferiranno l'una con l'altra
  • durabilità assicura che qualsiasi transazione impegnata nel database non andrà persa. La durata è garantita dall'utilizzo di backup di database e registri delle transazioni che facilitano il ripristino delle transazioni impegnate nonostante eventuali guasti software o hardware successivi.

Come funziona ACID in pratica

Gli amministratori del database utilizzano diverse strategie per imporre l'ACID.

Uno usato per rafforzare l'atomicità e la durata è registrazione write-ahead (WAL), in cui ogni dettaglio della transazione viene prima scritto in un log che include sia le informazioni di ripetizione che quelle di annullamento. Ciò garantisce che, dato un errore di database di qualsiasi tipo, il database possa controllare il log e confrontare il suo contenuto con lo stato del database.

Un altro metodo utilizzato per affrontare l'atomicità e la durata è ombra-paginazione, in cui viene creata una pagina shadow quando i dati devono essere modificati. Gli aggiornamenti della query vengono scritti nella pagina shadow anziché nei dati reali nel database. Il database stesso viene modificato solo quando la modifica è completa.

Un'altra strategia è chiamata il commit a due fasi protocollo, particolarmente utile nei sistemi di database distribuiti. Questo protocollo separa una richiesta per modificare i dati in due fasi: una fase di richiesta di commit e una fase di commit. Nella fase di richiesta, tutti i DBMS su una rete interessati dalla transazione devono confermare di averlo ricevuto e di avere la capacità di eseguire la transazione. Una volta ricevuta la conferma da tutti i DBMS rilevanti, la fase di commit termina in cui i dati vengono effettivamente modificati.