Qual è la relazione tra ACID e transazione del database?
ACID fornisce transazioni di database o è la stessa cosa?
Qualcuno potrebbe illuminare questo argomento.
Qual è la relazione tra ACID e transazione del database?
ACID fornisce transazioni di database o è la stessa cosa?
Qualcuno potrebbe illuminare questo argomento.
Risposte:
ACID è un insieme di proprietà che si desidera applicare quando si modifica un database.
Una transazione è un insieme di modifiche correlate che viene utilizzato per ottenere alcune delle proprietà ACID. Le transazioni sono strumenti per ottenere le proprietà ACID.
Atomicity significa che puoi garantire che tutte le transazioni avvengano, o nessuna di esse; è possibile eseguire operazioni complesse come un'unica unità, tutto o niente, e un arresto anomalo, un'interruzione di corrente, un errore o qualsiasi altra cosa non consente di trovarsi in uno stato in cui sono avvenute solo alcune delle relative modifiche.
Coerenza significa che garantisci che i tuoi dati saranno coerenti; nessuno dei vincoli che hai sui dati correlati verrà mai violato.
Isolamento significa che una transazione non può leggere i dati da un'altra transazione non ancora completata. Se due transazioni vengono eseguite contemporaneamente, ognuna vedrà il mondo come se stesse eseguendo in sequenza, e se uno deve leggere i dati scritti da un altro, dovrà attendere fino a quando l'altro non sarà terminato.
Durabilità significa che una volta completata una transazione, è garantito che tutte le modifiche sono state registrate su un supporto durevole (come un disco rigido) e che anche la transazione è stata completata.
Quindi, le transazioni sono un meccanismo per garantire queste proprietà; sono un modo per raggruppare le azioni correlate in modo tale che, nel suo insieme, un gruppo di operazioni può essere atomico, produrre risultati coerenti, essere isolato da altre operazioni ed essere registrato in modo duraturo.
Gli ACID sono proprietà desiderabili di qualsiasi motore di elaborazione delle transazioni.
Un DBMS è (se va bene) un particolare tipo di motore di elaborazione delle transazioni che espone, di solito in larga misura ma non del tutto, quelle proprietà.
Ma esistono altri motori che possono anche esporre quelle proprietà. Il tipo di software che un tempo si chiamava "monitor TP" è un esempio emblematico (oggi l'equivalente è principalmente un server Web).
Tali monitor TP possono accedere a risorse diverse da un DBMS (ad esempio una stampante) e garantire comunque ACID ai propri utenti. Come esempio di cosa potrebbe significare ACID quando una stampante è coinvolta in una transazione:
Ho leggermente modificato l'esempio della stampante per renderlo più spiegabile
1 documento con contenuto di 2 pagine è stato inviato alla stampante
Transazione : documento inviato alla stampante
Spero che questo aiuti qualcuno a capire il concetto di ACID
Qual è la relazione tra ACID e transazione del database?
In un database relazionale, ogni istruzione SQL deve essere eseguita nell'ambito di una transazione.
Senza definire esplicitamente i confini della transazione, il database utilizzerà una transazione implicita che avvolge ogni singola istruzione.
La transazione implicita inizia prima dell'esecuzione dell'istruzione e termina (commit o rollback) dopo l'esecuzione dell'istruzione. La modalità di transazione implicita è comunemente nota come autocommit.
Come spiegato in questo articolo , una transazione è una raccolta di operazioni di lettura / scrittura riuscite solo se tutte le operazioni contenute hanno esito positivo.
Inerentemente una transazione è caratterizzata da quattro proprietà (comunemente denominate ACID):
ACID fornisce transazioni di database o è la stessa cosa?
Per un sistema di database relazionale, questo è vero perché lo standard SQL specifica che una transazione dovrebbe fornire le garanzie ACID:
L'atomicità prende le singole operazioni e le trasforma in un'unità di lavoro tutto o niente, riuscendo se e solo se tutte le operazioni contenute hanno successo.
Una transazione potrebbe incapsulare un cambio di stato (a meno che non sia di sola lettura). Una transazione deve sempre lasciare il sistema in uno stato coerente, indipendentemente dal numero di transazioni simultanee intercalate in un dato momento.
Coerenza significa che i vincoli vengono applicati per ogni transazione impegnata. Ciò implica che tutte le chiavi, i tipi di dati, i controlli e il trigger hanno esito positivo e che non viene attivata alcuna violazione dei vincoli.
Le transazioni richiedono meccanismi di controllo della concorrenza e garantiscono la correttezza anche quando vengono intercalate. L'isolamento ci offre il vantaggio di nascondere cambiamenti di stato non impegnati dal mondo esterno, poiché le transazioni non riuscite non dovrebbero mai corrompere lo stato del sistema. L'isolamento si ottiene attraverso il controllo della concorrenza mediante meccanismi di blocco pessimistici o ottimistici.
Una transazione riuscita deve cambiare in modo permanente lo stato di un sistema e, prima di terminarlo, le modifiche allo stato vengono registrate in un registro delle transazioni persistente. Se il nostro sistema viene improvvisamente influenzato da un arresto anomalo del sistema o un'interruzione dell'alimentazione, è possibile riprodurre tutte le transazioni impegnate non finite.
Per ulteriori dettagli su Durabilità e Registro di ripetizione, consulta questo articolo .
Le proprietà ACID sono un concetto molto antico e importante della teoria dei database. So che puoi trovare molti post su questo argomento, ma vorrei comunque iniziare a condividere la risposta su questo perché questo è un argomento molto importante di RDBMS.
Database System gioca con molti tipi diversi di transazioni in cui tutte le transazioni hanno determinate caratteristiche. Questa caratteristica è nota Proprietà ACID. Le proprietà ACID sono utili per tutte le transazioni del database per eseguire tutte le attività.
Atomicità: commettere tutto o niente.
Coerenza: registrare coerentemente in termini di convalida di tutte le regole e vincoli della transazione.
Isolamento: assicurarsi che due transazioni non siano consapevoli l'una dell'altra.
Durabilità: dati impegnati memorizzati per sempre. Riferimento tratto da questo articolo:
Per citare Wikipedia :
ACID (atomicità, coerenza, isolamento, durata) è un insieme di proprietà che garantiscono che le transazioni del database vengano elaborate in modo affidabile.
Un DBMS che supporta le transazioni si adopererà per supportare tutte queste proprietà - qualsiasi DBMS commerciale (così come diversi DBMS open source) fornisce un "supporto" ACID completo - sebbene sia spesso possibile (ad esempio, con livelli di isolamento variabili in MSSQL) ridurre l'ACIDness - perdendo così la garanzia di un comportamento completamente transazionale.
[Gray] ha introdotto le proprietà ACD per una transazione nel 1981. Nel 1983 [Haerder] ha aggiunto la proprietà Isolation. A mio avviso, le proprietà ACD avrebbero un insieme di proprietà più utile da discutere. Un'interpretazione di Atomicity (che la transazione dovrebbe essere atomica come vista da qualsiasi client in qualsiasi momento) implicherebbe effettivamente la proprietà di isolamento. La proprietà "isolamento" è utile quando la transazione non è isolata; quando la proprietà di isolamento è rilassata. In ANSI SQL parlare: se il livello di isolamento è più debole, SERIALIZZABILE. Ma quando il livello di isolamento è SERIALIZZABILE, la proprietà di isolamento non è realmente interessante.
Ho scritto di più su questo in un post sul blog: "ACID non ha senso".
http://blog.franslundberg.com/2013/12/acid-does-not-make-sense.html
[Gray] The Transaction Concept, Jim Gray, 1981. http://research.microsoft.com/en-us/um/people/gray/papers/theTransactionConcept.pdf
[Haerder] Principi di recupero del database orientato alle transazioni, Haerder e Reuter, 1983. http://www.stanford.edu/class/cs340v/papers/recovery.pdf
La transazione può essere definita come una raccolta di attività considerate come unità di elaborazione minima. Ogni unità di elaborazione minima non può essere ulteriormente suddivisa.
Tutte le transazioni devono contenere quattro proprietà comunemente note come proprietà ACID. vale a dire ACID sono il gruppo di proprietà di qualsiasi transazione.