Gestione delle transazioni in DBMS: cosa sono le proprietà ACID?

Cos'è una transazione di database?

A Transazione del database è un'unità logica di elaborazione in un DBMS che comporta una o più operazioni di accesso al database. In poche parole, le transazioni del database rappresentano eventi del mondo reale di qualsiasi impresa.

Tutti i tipi di operazioni di accesso al database che si svolgono tra le istruzioni di inizio e fine transazione sono considerati come un'unica transazione logica nel DBMS. Durante la transazione il database è incoerente. Solo una volta eseguito il commit del database, lo stato viene modificato da uno stato coerente a un altro.

Transazione del database
Transazione del database

Fatti sulle transazioni del database

  • Una transazione è un'unità di programma la cui esecuzione può modificare o meno il contenuto di un database.
  • Il concetto di transazione in DBMS viene eseguito come una singola unità.
  • Se le operazioni del database non aggiornano il database ma recuperano solo i dati, questo tipo di transazione viene chiamata transazione di sola lettura.
  • Una transazione riuscita può modificare il database da uno STATO COERENTE a un altro
  • Le transazioni DBMS devono essere atomiche, coerenti, isolate e durevoli
  • Se il database fosse in uno stato incoerente prima di una transazione, rimarrebbe in tale stato anche dopo la transazione.

Perché è necessaria la concorrenza nelle transazioni?

Un database è una risorsa condivisa a cui si accede. Viene utilizzato da molti utenti e processi contemporaneamente. Ad esempio, il sistema bancario, i sistemi ferroviari e di prenotazione aerea, il monitoraggio del mercato azionario, l’inventario dei supermercati e le casse, ecc.

La mancata gestione dell'accesso simultaneo può creare problemi come:

  • Guasti hardware e arresti anomali del sistema
  • Esecuzione simultanea della stessa transazione, punto mortoo prestazioni lente

Stati delle transazioni

I vari stati di un concetto di transazione nel DBMS sono elencati di seguito:

Regione / Stato Tipi di transazione
Stato attivo Una transazione entra in uno stato attivo quando inizia il processo di esecuzione. Durante questo stato è possibile eseguire operazioni di lettura o scrittura.
Parzialmente impegnato Una transazione entra nello stato parzialmente impegnato dopo la fine di una transazione.
Stato impegnato Quando la transazione è impegnata nello stato, ha già completato con successo la sua esecuzione. Inoltre, tutte le sue modifiche vengono registrate permanentemente nel database.
Stato fallito Una transazione viene considerata fallita quando uno qualsiasi dei controlli fallisce o se la transazione viene interrotta mentre è nello stato attivo.
Stato terminato Lo stato della transazione raggiunge lo stato terminato quando alcune transazioni che lasciano il sistema non possono essere riavviate.
Diagramma di transizione di stato
Diagramma di transizione di stato per una transazione di database

Studiamo a diagramma di transizione di stato che evidenzia come una transazione si muove tra questi vari stati.

  1. Una volta che una transazione dichiara l'esecuzione, diventa attiva. Può emettere operazioni di lettura o scrittura.
  2. Una volta completate le operazioni READ e WRITE, le transazioni diventano parzialmente impegnate.
  3. Successivamente, alcuni protocolli di ripristino devono garantire che un errore di sistema non comporti l'impossibilità di registrare in modo permanente le modifiche nella transazione. Se questo controllo ha esito positivo, la transazione viene confermata ed entra nello stato impegnato.
  4. Se il controllo ha esito negativo, la transazione passa allo stato Failed.
  5. Se la transazione viene interrotta mentre è nello stato attivo, passa allo stato fallito. È necessario eseguire il rollback della transazione per annullare l'effetto delle sue operazioni di scrittura sul database.
  6. Lo stato terminato si riferisce alla transazione che lascia il sistema.

Quali sono le proprietà dell'ACIDO?

Proprietà ACIDO vengono utilizzati per mantenere l'integrità del database durante l'elaborazione delle transazioni. ACID in DBMS sta per Atomicità, Consistenza, Iconforto, e Ddurabilità.

  • Atomcittà: Una transazione è una singola unità operativa. O lo esegui interamente o non lo esegui affatto. Non può esserci esecuzione parziale.
  • Consistenza: Una volta eseguita la transazione, dovrebbe passare da uno stato coerente a un altro.
  • Isolamento: La transazione dovrebbe essere eseguita isolatamente dalle altre transazioni (nessun blocco). Durante l'esecuzione simultanea di transazioni, i risultati di transazioni intermedie di transazioni eseguite simultaneamente non dovrebbero essere resi disponibili l'uno all'altro. (Livello 0,1,2,3)
  • Durata:· Dopo il completamento con successo di una transazione, le modifiche nel database dovrebbero persistere. Anche in caso di guasti al sistema.

Proprietà ACID in DBMS con esempio

Di seguito è riportato un esempio della proprietà ACID nel DBMS:

Transaction 1: Begin X=X+50, Y = Y-50 END
Transaction 2: Begin X=1.1*X, Y=1.1*Y END

La transazione 1 trasferisce $ 50 dal conto X al conto Y.

La transazione 2 accredita su ciascun conto un pagamento di interessi del 10%.

Se entrambe le transazioni vengono inviate insieme, non vi è alcuna garanzia che la Transazione 1 venga eseguita prima della Transazione 2 o viceversa. Indipendentemente dall'ordine, il risultato deve essere come se le transazioni si svolgessero in serie una dopo l'altra.

Tipi di transazioni

In base alle aree di applicazione

  • Non distribuito vs. distribuito
  • Transazioni compensative
  • Tempistiche delle transazioni
  • On-line vs. batch

Basato sulle azioni

  • Due passi
  • Limitato
  • Modello di azione

Basato sulla struttura

  • Transazioni piatte o semplici: consistono in una sequenza di operazioni primitive eseguite tra le operazioni di inizio e fine.
  • Transazioni nidificate: una transazione che contiene altre transazioni.
  • Workflow

Cos'è un programma?

Una pianificazione è un processo che crea un singolo gruppo di molteplici transazioni parallele e le esegue una per una. Dovrebbe preservare l'ordine in cui le istruzioni appaiono in ciascuna transazione. Se due transazioni vengono eseguite contemporaneamente, il risultato di una transazione può influenzare l'output dell'altra.

Esempio

Initial Product Quantity is 10
Transaction 1: Update Product Quantity to 50
Transaction 2: Read Product Quantity

Se la Transazione 2 viene eseguita prima della Transazione 1, verranno lette le informazioni obsolete sulla quantità del prodotto. Sono quindi necessari degli orari.

L'esecuzione parallela in un database è inevitabile. Tuttavia, l'esecuzione parallela è consentita quando esiste una relazione di equivalenza tra le transazioni eseguite simultaneamente. Questa equivalenza è di 3 tipi.

RISULTATO EQUIVALENZA:

Se due pianificazioni mostrano lo stesso risultato dopo l'esecuzione, si parla di pianificazione equivalente al risultato. Possono offrire lo stesso risultato per un valore e risultati diversi per un altro set di valori. Ad esempio, una transazione aggiorna la quantità del prodotto, mentre un'altra aggiorna i dettagli del cliente.

Visualizza equivalenza

L'equivalenza di visualizzazione si verifica quando la transazione in entrambe le pianificazioni esegue un'azione simile. Ad esempio, una transazione inserisce i dettagli del prodotto nella tabella dei prodotti, mentre un'altra transazione inserisce i dettagli del prodotto nella tabella di archivio. La transazione è la stessa, ma le tabelle sono diverse.

Equivalenza CONFLITTO

In questo caso, due transazioni aggiornano/visualizzano lo stesso set di dati. Esiste un conflitto tra le transazioni poiché l'ordine di esecuzione influenzerà l'output.

Cos'è la serializzabilità?

La serializzabilità è il processo di ricerca di una pianificazione simultanea il cui output è uguale a una pianificazione seriale in cui le transazioni vengono eseguite una dopo l'altra. A seconda del tipo di pianificazione, esistono due tipi di serializzabilità:

  • Conflitto
  • Visualizza

Sintesi

  • La gestione delle transazioni è un'unità logica di elaborazione in un DBMS che comporta una o più operazioni di accesso al database
  • Una transazione è un'unità di programma la cui esecuzione può modificare o meno il contenuto di un database.
  • La mancata gestione dell'accesso simultaneo può creare problemi come guasti hardware e arresti anomali del sistema.
  • Attivo, Parzialmente impegnato, Impegnato, Non riuscito e Terminato sono stati di transazione importanti.
  • La forma completa delle proprietà ACID in DBMS is AtomICicità, Coerenza, Isolamento e Durabilità
  • Tre tipi di transazioni DBMS sono Base su aree di applicazione, Azione e Struttura.
  • Una pianificazione è un processo che crea un singolo gruppo di molteplici transazioni parallele e le esegue una per una.
  • La serializzabilità è il processo di ricerca di una pianificazione simultanea il cui output è uguale a una pianificazione seriale in cui le transazioni vengono eseguite una dopo l'altra.