2010-09-18 15 views

risposta

193

ACID è un insieme di proprietà che si desidera applicare durante la modifica di un database.

  • Atomicity
  • Coerenza
  • Isolamento
  • Resistenza

Una transazione è un insieme di cambiamenti relativi che viene utilizzato per realizzare alcune delle proprietà ACID. Le transazioni sono strumenti per ottenere le proprietà ACID.

Atomicità significa che è possibile garantire che tutte le transazioni avvengano oppure che nessuna di esse funzioni; puoi eseguire operazioni complesse come una singola unità, tutto o niente, e un arresto anomalo, un'interruzione di corrente, un errore o qualsiasi altra cosa non ti permetteranno di trovarti in uno stato in cui sono avvenute solo alcune delle modifiche correlate.

Coerenza significa che si garantisce che i 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 che non è stata ancora completata. Se due transazioni vengono eseguite simultaneamente, ognuna vedrà il mondo come se stessero eseguendo in sequenza, e se si ha bisogno di leggere i dati che sono scritti da un altro, dovrà attendere fino a quando l'altro non sarà finito.

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 insieme in modo che, nel complesso, un gruppo di operazioni possa essere atomico, produrre risultati coerenti, essere isolato da altre operazioni e essere registrato in modo duraturo.

+6

Tu dici "Coerenza significa che si garantisce che i vostri dati saranno costituiti ent; nessuno dei vincoli sui dati correlati verrà mai violato. "Se per vincoli si intende quelli definiti nel database (ad esempio, controlli i vincoli), cosa deve fare la gestione delle transazioni per impedire che vengano violati? sono sempre in vigore? Mi sembra che la C in ACID debba avere un altro significato: –

+12

@MarcRochkind Una transazione consente di applicare controlli di coerenza anche se singole operazioni all'interno della transazione violano i vincoli di coerenza. aggiornando un sistema di contabilità a partita doppia, potrebbe essere necessario addebitare da diversi account e accreditare contemporaneamente più account. Senza transazioni, si controllerebbero i vincoli dopo ogni istruzione e si fallirebbero perché le singole istruzioni non preservano la coerenza Con le transazioni, anche se le singole istruzioni non conservano la coerenza, la transazione nel suo complesso lo fa. –

+0

@BrianCampbell afte Leggendo l'ultimo para della tua risposta e [il primo paragone di Wiki] (http://en.wikipedia.org/wiki/ACID) trovo che la wiki ha una prospettiva opposta alla tua, vale a dire che le proprietà ACID garantiscono transazioni affidabili e non viceversa. – KNU

4

Per citare Wikipedia:

ACID (atomicità, consistenza, isolamento, durata) è un insieme di proprietà che garantiscono transazioni di database vengono elaborate in modo affidabile.

Un DBMS che supporta le transazioni si adopererà per sostenere tutte queste proprietà - qualsiasi DBMS commerciali (così come molti DBMS open-source) fornire piena ACID 'supporto' - anche se è spesso possibile (per esempio, con diversi livelli di isolamento in MSSQL) per ridurre l'ACIDness - perdendo così la garanzia di un comportamento pienamente transazionale.

24

ACID sono proprietà desiderabili di qualsiasi motore di elaborazione delle transazioni.

Un DBMS è (se è buono) un particolare tipo di motore di elaborazione delle transazioni che espone, di solito in misura molto grande, ma non del tutto, tali proprietà.

Ma esistono altri motori che possono anche esporre tali proprietà. Il tipo di software che prima si chiamava "monitor TP" è un esempio calzante (oggigiorno l'equivalente è in gran parte server web).

Tali monitor TP possono accedere a risorse diverse da un DBMS (ad esempio una stampante) e garantiscono comunque ACID ai propri utenti. Come esempio di ciò che ACID potrebbe significare quando una stampante è coinvolto in una transazione:

  • Atomicity: un intero documento viene stampato o niente del tutto
  • Consistenza: al termine della transazione, l'alimentazione della carta è posizionato nella parte superiore della pagina
  • Isolamento: non si confondono due documenti durante la stampa
  • Durata: la stampante può garantire che non è stata "stampata" con le cartucce vuote.
+3

esempi di stampanti concisi. – lakesare

+1

Buon esempio. Non capisco la parte "Consistenza" però. Nella mia mente, un esempio migliore è "La stampante non accetta carta più grande di 10 pollici". – skeller88

+0

MODIFICA - "carta più larga di 10 pollici". – skeller88

0

proprietà ACID delle transazioni Nell'ambito di elaborazione delle transazioni, l'acronimo ACID riferisce ai quattro proprietà fondamentali di una transazione: atomicità, consistenza, isolamento e durata.

Atomicità Tutte le modifiche ai dati vengono eseguite come se fossero un'unica operazione. Cioè, tutte le modifiche sono eseguite, o nessuna di queste sono. Ad esempio, in un'applicazione che trasferisce fondi da un account a un altro, la proprietà di atomicità garantisce che, se un debito viene eseguito correttamente da un account, il credito corrispondente viene accreditato all'altro account. Coerenza I dati sono in uno stato consistente all'avvio e al termine di una transazione. Ad esempio, in un'applicazione che trasferisce fondi da un account a un altro, la proprietà di coerenza assicura che il valore totale dei fondi in entrambi i conti sia lo stesso all'inizio e alla fine di ogni transazione. Isolamento Lo stato intermedio di una transazione è invisibile ad altre transazioni. Di conseguenza, le transazioni eseguite simultaneamente sembrano essere serializzate. Ad esempio, in un'applicazione che trasferisce fondi da un account a un altro, la proprietà di isolamento garantisce che un'altra transazione visualizzi i fondi trasferiti in un account o nell'altro, ma non in entrambi, né in nessuno dei due. Durata Al termine di una transazione, le modifiche ai dati persistono e non vengono annullate, anche in caso di errore di sistema. Ad esempio, in un'applicazione che trasferisce fondi da un account a un altro, la proprietà di durabilità garantisce che le modifiche apportate a ciascun account non vengano annullate.

2

[Grigio] ha introdotto le proprietà ACD per una transazione nel 1981. Nel 1983 [Haerder] ha aggiunto la proprietà Isolation. A mio parere, le proprietà ACD avrebbero un insieme di proprietà più utile da discutere. Un'interpretazione di Atomicity (che la transazione dovrebbe essere atomica vista da qualsiasi client in qualsiasi momento) implicherebbe in realtà la proprietà di isolamento. La proprietà "isolation" è utile quando la transazione è non isolata; quando la proprietà di isolamento è rilassata. In ANSI SQL speak: se il livello di isolamento è più debole allora SERIALIZABLE. Ma quando il livello di isolamento è SERIALIZABLE, la proprietà di isolamento non è realmente di interesse.

Ho scritto di più su questo in un post del blog: "ACID non ha senso".

http://blog.franslundberg.com/2013/12/acid-does-not-make-sense.html

[Grigio] Il concetto di transazione, Jim Gray, 1981. http://research.microsoft.com/en-us/um/people/gray/papers/theTransactionConcept.pdf

[Haerder] Principi di transazione-Oriented Database Recovery, Haerder e Reuter, 1983. http://www.stanford.edu/class/cs340v/papers/recovery.pdf

6

proprietà ACID sono molto vecchi e importante concetto di teoria dei database. So che puoi trovare molti post su questo argomento, ma comunque vorrei iniziare a condividere la risposta su questo perché questo è un argomento molto importante di RDBMS.

Il sistema di database gioca con diversi tipi di transazioni in cui tutte le transazioni hanno determinate caratteristiche. Questa caratteristica è nota proprietà ACID. Le proprietà ACID assegnano a tutte le transazioni del database tutte le attività.

Atomicità: commettere tutto o niente.

Coerenza: creare un record coerente in termini di convalida di tutte le regole e dei vincoli di transazione.

Isolamento: assicurarsi che due transazioni non siano a conoscenza l'una dell'altra.

Durata: dati memorizzati memorizzati per sempre. Reference taken from this article:

0

La transazione può essere definita come una raccolta di attività che sono considerate come unità di elaborazione minima. Ogni unità di elaborazione minima non può essere ulteriormente divisa.

Tutte le transazioni devono contenere quattro proprietà comunemente note come proprietà ACID. L'ACID è il gruppo di proprietà di qualsiasi transazione.

  • Atomicity:
  • Coerenza
  • Isolamento
  • Resistenza
3

ho leggermente modificato l'esempio della stampante per renderla più spiegabile

1 documento che aveva 2 pagine di contenuti è stato inviato alla stampante

Transaction - documento inviato alla stampante

  • atomicità - stampante stampa 2 pagine di un documento o nessuno
  • coerenza - stampante stampa mezza pagina e la pagina si blocca.La stampante stessa e stampe riavvia 2 pagine saranno tutti contenuti
  • isolamento - mentre ci sono stati troppi stampe in corso - stampante stampa il giusto contenuto di documento
  • durata - durante la stampa, c'era un potere stampante cut stampa di nuovo i documenti senza errori

Spero che questo aiuti qualcuno per ottenere il blocco del concetto di ACID