DBMS - Transazione
Una transazione può essere definita come un gruppo di attività. Un singolo compito è l'unità di elaborazione minima che non può essere ulteriormente suddivisa.
Facciamo un esempio di una semplice transazione. Supponiamo che un impiegato di banca trasferisca Rs 500 dal conto di A al conto di B. Questa transazione molto semplice e piccola coinvolge diverse attività di basso livello.
A’s Account
Open_Account(A)
Old_Balance = A.balance
New_Balance = Old_Balance - 500
A.balance = New_Balance
Close_Account(A)
B’s Account
Open_Account(B)
Old_Balance = B.balance
New_Balance = Old_Balance + 500
B.balance = New_Balance
Close_Account(B)
Proprietà ACID
Una transazione è un'unità molto piccola di un programma e può contenere diverse attività di basso livello. Una transazione in un sistema di database deve essere mantenutaAtomicità, Consistenza, Isolazione, e Dcapacità, comunemente nota come proprietà ACID, per garantire accuratezza, completezza e integrità dei dati.
Atomicity- Questa proprietà afferma che una transazione deve essere trattata come un'unità atomica, ovvero tutte le sue operazioni vengono eseguite o nessuna. Non ci deve essere stato in un database in cui una transazione viene lasciata parzialmente completata. Gli stati dovrebbero essere definiti prima dell'esecuzione della transazione o dopo l'esecuzione / l'aborto / il fallimento della transazione.
Consistency- Il database deve rimanere in uno stato coerente dopo ogni transazione. Nessuna transazione dovrebbe avere alcun effetto negativo sui dati che risiedono nel database. Se il database era in uno stato coerente prima dell'esecuzione di una transazione, deve rimanere coerente anche dopo l'esecuzione della transazione.
Durability- Il database dovrebbe essere abbastanza resistente da contenere tutti i suoi ultimi aggiornamenti anche se il sistema non riesce o si riavvia. Se una transazione aggiorna un blocco di dati in un database e viene eseguito il commit, il database conterrà i dati modificati. Se una transazione va a buon fine ma il sistema fallisce prima che i dati possano essere scritti sul disco, quei dati verranno aggiornati una volta che il sistema torna in azione.
Isolation- In un sistema di database in cui più di una transazione viene eseguita simultaneamente e in parallelo, la proprietà di isolamento afferma che tutte le transazioni saranno eseguite ed eseguite come se fosse l'unica transazione nel sistema. Nessuna transazione influenzerà l'esistenza di qualsiasi altra transazione.
Serializzabilità
Quando più transazioni vengono eseguite dal sistema operativo in un ambiente multiprogrammazione, ci sono possibilità che le istruzioni di una transazione siano interlacciate con qualche altra transazione.
Schedule- Una sequenza di esecuzione cronologica di una transazione è chiamata pianificazione. Una pianificazione può contenere molte transazioni, ciascuna composta da un numero di istruzioni / attività.
Serial Schedule- È una pianificazione in cui le transazioni sono allineate in modo tale che una transazione venga eseguita per prima. Quando la prima transazione completa il suo ciclo, viene eseguita la transazione successiva. Le transazioni vengono ordinate una dopo l'altra. Questo tipo di pianificazione è chiamata pianificazione seriale, poiché le transazioni vengono eseguite in modo seriale.
In un ambiente multi-transazione, le pianificazioni seriali sono considerate un benchmark. La sequenza di esecuzione di un'istruzione in una transazione non può essere modificata, ma due transazioni possono avere le loro istruzioni eseguite in modo casuale. Questa esecuzione non danneggia se due transazioni sono reciprocamente indipendenti e lavorano su diversi segmenti di dati; ma nel caso in cui queste due transazioni stiano lavorando sugli stessi dati, i risultati potrebbero variare. Questo risultato sempre variabile può portare il database a uno stato incoerente.
Per risolvere questo problema, consentiamo l'esecuzione parallela di una pianificazione delle transazioni, se le sue transazioni sono serializzabili o hanno una relazione di equivalenza tra di loro.
Programmi di equivalenza
Un programma di equivalenza può essere dei seguenti tipi:
Equivalenza dei risultati
Se due programmi producono lo stesso risultato dopo l'esecuzione, si dice che sono risultati equivalenti. Possono produrre lo stesso risultato per un valore e risultati diversi per un altro insieme di valori. Ecco perché questa equivalenza non è generalmente considerata significativa.
Visualizza l'equivalenza
Due programmi sarebbero l'equivalenza della vista se le transazioni in entrambi i programmi eseguissero azioni simili in modo simile.
Ad esempio:
Se T legge i dati iniziali in S1, allora legge anche i dati iniziali in S2.
Se T legge il valore scritto da J in S1, allora legge anche il valore scritto da J in S2.
Se T esegue la scrittura finale sul valore dei dati in S1, esegue anche la scrittura finale sul valore dei dati in S2.
Equivalenza in conflitto
Due pianificazioni sarebbero in conflitto se avessero le seguenti proprietà:
- Entrambi appartengono a transazioni separate.
- Entrambi accedono allo stesso elemento di dati.
- Almeno uno di questi è l'operazione di "scrittura".
Si dice che due programmi aventi più transazioni con operazioni in conflitto equivalgono a conflitti se e solo se:
- Entrambe le pianificazioni contengono lo stesso insieme di transazioni.
- L'ordine delle coppie di operazioni in conflitto viene mantenuto in entrambe le pianificazioni.
Note- Le pianificazioni equivalenti di visualizzazione sono serializzabili in visualizzazione e le pianificazioni equivalenti in conflitto sono serializzabili in conflitto. Tutte le pianificazioni serializzabili in conflitto sono anche serializzabili.
Stati delle transazioni
Una transazione in un database può trovarsi in uno dei seguenti stati:
Active- In questo stato, la transazione viene eseguita. Questo è lo stato iniziale di ogni transazione.
Partially Committed - Quando una transazione esegue la sua operazione finale, si dice che sia in uno stato parzialmente confermato.
Failed- Si dice che una transazione sia in uno stato fallito se uno qualsiasi dei controlli effettuati dal sistema di ripristino del database fallisce. Una transazione fallita non può più procedere oltre.
Aborted- Se uno qualsiasi dei controlli non riesce e la transazione ha raggiunto uno stato non riuscito, il gestore ripristino ripristina tutte le sue operazioni di scrittura sul database per riportare il database allo stato originale in cui si trovava prima dell'esecuzione della transazione. Le transazioni in questo stato vengono chiamate interrotte. Il modulo di ripristino del database può selezionare una delle due operazioni dopo che una transazione si interrompe:
- Riavvia la transazione
- Uccidi la transazione
Committed- Se una transazione esegue correttamente tutte le sue operazioni, si dice che sia stata confermata. Tutti i suoi effetti sono ora stabiliti in modo permanente sul sistema di database.