Tranzacție atomică

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

O operație atomică , în informatică , constă într-o operație de execuție indivizibilă din punct de vedere logic.

În general, se spune că o operație este atomică dacă este indivizibilă, adică dacă nu poate începe nicio altă operație înainte ca prima să fie terminată și, prin urmare, nu poate exista nici o intercalare. Rezultatul acelei operațiuni este întotdeauna același dacă începe din aceleași condiții inițiale.

Executie atomica in baze de date

Operațiile atomice sunt tipice DBMS-urilor și proprietatea atomicității este de fapt prima dintre proprietățile ACID ale bazelor de date.

O caracteristică similară există pentru a permite executarea corectă a operațiilor concurente sau corelate și este garantată de SGBD care, atunci când transformă operațiile necesare într-un limbaj de nivel înalt în operații elementare de nivel scăzut, le grupează în tranzacții atomice.

O tranzacție atomică constă din următoarea schemă [1] :

  1. Începeți tranzacția
  2. Operațiuni care trebuie efectuate
  3. Comite sau directivele rola din spate , care este de a valida sau anulează întreaga tranzacție.
  4. Încheiați tranzacția

În practică, diferitele puncte care alcătuiesc tranzacția sunt efectuate și apoi se verifică dacă a apărut vreo eroare sau conflict. În cazul în care tranzacția are succes, aceasta devine efectivă (commit), în caz contrar este anulată în totalitate prin returnarea sistemului, operație cu operație, la starea inițială (revenire).

Exemplu

Pentru a înțelege mai bine utilitatea unei tranzacții atomice, este necesar să continuați cu un exemplu extern bazelor de date.

Imaginați-vă o operațiune bancară efectuată pe o bază de date în care un subiect A trebuie să plătească bani în contul curent al unui alt subiect B și să-i numim plată .

O astfel de operațiune ar consta în:

  1. Să deducă banii din contul de verificare al subiectului A ;
  2. Creditați-le în contul curent al subiectului B ;

Acum să ne imaginăm că contul curent al lui B nu a existat și că, prin urmare, a apărut o eroare în timpul executării suboperării 2 a operațiunii de plată .

Ce s-ar întâmpla este că:

  • Cu o tranzacție de plată atomică, atât 2 , cât și 1 ar fi restabilite și, prin urmare, banii deduși din contul curent al subiectului A vor fi re-creditați.
  • Cu o tranzacție de plată non-atomică, după eroarea din timpul execuției 2 nu ar mai fi posibilă anularea operațiunii 1 care ar fi fost executată acum cu pierderea consecutivă a banilor lui A.

Deci, pe scurt, proprietatea atomicității, atunci când există, garantează executarea corectă a operațiilor multiple, dar legate în mod logic, deoarece le referă la o operație unică și indivizibilă.

Problema afișată nu va apărea direct prin implementarea operațiunii de plată într-un limbaj de nivel înalt, cum ar fi SQL, ci ar apărea în timpul executării sale efective de către SGBD, care ar descompune-o în multe sub-operațiuni elementare supuse erorii sau conflictelor cu alte comenzi .

Notă

  1. ^ "Baze de date: arhitecturi și linii de evoluție" de P.Atzeni, S.Ceri, P.Fraternali, S.Paraboschi ed. McGraw-Hill ISBN 978-88-386-6370-3

Bibliografie

  • Baze de date: arhitecturi și linii de evoluție de P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi ed. McGraw-Hill ISBN 978-88-386-6370-3

Elemente conexe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT