Tranzacție (IT)

Ca tranzacție (din latină trans "(peste) peste", agere "conduce, acționează, conduce": literal: transfer; dt. Aici mai bine: implementare ) este o secvență de pași de program în informatică , care ca unitate logică să fie luate în considerare deoarece lasă baza de date într-o stare consecventă după executarea fără erori și completă. Prin urmare, pentru o tranzacție este deosebit de necesar să fie efectuată complet și fără erori sau deloc.

Tranzacțiile sunt utilizate mai ales în sistemele de baze de date . Tranzacțiile incorecte trebuie anulate și modificările anterioare din baza de date trebuie inversate, astfel încât să nu aibă niciun efect asupra stării bazei de date. Tranzacțiile sunt procesate de sistemele de tranzacții ; acestea generează un istoric din mai multe tranzacții .

exemplu

Pentru a putea imagina în mod clar cei mai importanți termeni ai acestui articol, următorul exemplu ar trebui să fie:

Într-o bibliotecă, un sistem de cartele index este utilizat pentru a gestiona inventarul cărților. O tranzacție aici ar putea fi: „Împrumutați cartea„ Die Schatzinsel ”utilizatorului Peter Müller.” Reprezentarea formală a acestei tranzacții ar putea arăta astfel:
Începutul tranzacției
citiți câmpul „precomandă” de pe card
Scrieți „Peter Müller” în câmpul „Împrumutat de la”
"29. Iulie 2001 "în câmpul" Return on "
Sfârșitul tranzacției
Dacă cardul a fost completat cu succes, tranzacția este finalizată și cardul este reintrodus în cutia cardului - aceasta corespunde comiterii unei tranzacții. Dacă execuția a fost întreruptă, toate modificările făcute până în acel moment trebuie anulate înainte de introducerea cardului - aceasta corespunde avortului unei tranzacții. Dacă acest lucru nu se face, pot apărea erori: Dacă, de exemplu, „Împrumutat de la” a fost deja completat, dar data de returnare nu a fost încă introdusă, Peter Müller se poate bucura de „Insula comorilor” până la sfârșitul vieții sale, fără a fi nevoie să se teamă de sancțiuni. De exemplu, ar exista un conflict între tranzacții dacă cartea ar fi împrumutată unui alt utilizator în același timp; aici proprietatea „izolare” ar fi încălcată.

Construirea tranzacțiilor

Tranzacțiile sunt delimitate de marcajele începutul tranzacției (abrevierea BOT ) și sfârșitul tranzacției (abrevierea EOT , vezi Commit ):

begin of transaction
   read x
   write y
end of transaction

Operațiunile din cadrul unei tranzacții sunt comandate , astfel încât ordinea lor nu trebuie modificată. Ordinea operațiunilor unei tranzacții poate fi, de asemenea, reprezentată ca un grafic direcționat :

Această reprezentare accentuează concurența - adică executabilitatea simultană - a operațiilor. În exemplul de mai sus, operația r [z] poate fi efectuată simultan cu operațiile r [x] și w [x].

Principiul ACID

La executarea tranzacțiilor, sistemul de tranzacții trebuie să garanteze proprietățile ACID :

  • Atomicity ( A tomicity): O tranzacție este fie executată complet, fie nu. Tranzacțiile sunt, prin urmare, „indivizibile”. Când o tranzacție atomică este întreruptă, sistemul rămâne neschimbat.
  • Coerență ( C onsistency): După executarea tranzacției, baza de date trebuie să fie într-o formă consecventă atunci când se afla la începutul tranzacției.
  • Izolație (soluție I ): coexecutarea mai multor tranzacții, acestea nu trebuie să se influențeze reciproc.
  • Durabilitate ( D urabilitate): Efectele unei tranzacții trebuie să rămână permanent în baza de date. Efectele tranzacțiilor nu trebuie să se piardă sau să se estompeze în timp. În mod strict vorbind, această proprietate nu permite imbricarea tranzacțiilor, deoarece reluarea unei tranzacții externe ar încălca durabilitatea unei tranzacții interne care a fost deja executată.

Executarea tranzacțiilor într-un sistem de tranzacții

Scopul unui sistem de tranzacții este întotdeauna să proceseze cât mai multe tranzacții posibil în cel mai scurt timp posibil. De serie executarea tranzacțiilor - adică, executarea tranzacțiilor , una după alta - este ușor de implementat, dar de multe ori nu duce la o împlinire optimă a acestui criteriu de performanță. Prin urmare, sistemele de tranzacții împart tranzacțiile în operațiunile lor și le asamblează în istorii , prin care proprietățile ACID trebuie păstrate.

Acest proces oferă două modalități de a încheia o tranzacție:

  • Commit (complet, abreviat. C ): Tranzacția a fost finalizată cu succes și fără probleme, efectele tranzacției asupra bazei de date sunt salvate permanent. Termenii „comite” și „sfârșitul tranzacției” sunt adesea folosiți sinonim.
  • Întrerupeți (anulați, abre. A ): au apărut probleme în timpul executării tranzacției, iar execuția nu va continua. Condiția atomică necesită, de asemenea, ca toate efectele tranzacției asupra stocului de date să fie inversate.

Anularea efectelor unei tranzacții este denumită , respectiv, restabilire (Resetare) . Se poate întâmpla ca reluarea unei tranzacții să necesite reluarea unei alte tranzacții, care poate duce la formarea unor lanțuri reale de restituiri; aceasta este cunoscută sub numele de resetare în cascadă .

Dacă o tranzacție nu poate fi efectuată din cauza unei alte tranzacții, aceasta se numește blocare . Dacă prima tranzacție este blocată de cea de-a doua, în timp ce a doua prin prima, se numește blocaj ( blocare ).

Tranzacții imbricate

O tranzacție imbricată este una care este complet înfășurată într-o altă tranzacție. Tranzacția interioară vede schimbările făcute de exterior. Există mai multe variante pentru comportamentul celor două tranzacții.

Dacă tranzacțiile sunt plate , întreruperea tranzacției interioare anulează și tranzacția exterioară. Modificările aduse tranzacției interioare nu sunt valabile dacă tranzacția exterioară nu se finalizează cu succes.

Dacă tranzacțiile sunt închise , un avort al tranzacției interioare nu duce automat la un avort al tranzacției externe. Dacă tranzacția interioară își finalizează acțiunile cu succes, modificările efectuate sunt vizibile doar pentru tranzacția exterioară. Modificarea este vizibilă pentru întregul sistem numai atunci când tranzacția exterioară este încheiată cu succes.

În schimb, în ​​cazul tranzacțiilor deschise , schimbarea tranzacției interioare este imediat vizibilă în întregul sistem după încheierea acesteia. Aceste modificări persistă chiar dacă tranzacția exterioară este anulată ulterior.

Tranzacții distribuite

Tranzacțiile distribuite sunt tranzacții care sunt executate în mai multe sub-tranzacții în sisteme distribuite. Sunt utilizate protocoale de comitere adecvate pentru a asigura atomicitatea tranzacțiilor distribuite . Un exemplu este executarea unui transfer pe sistemul de baze de date al băncii emitentului și sistemul de baze de date al băncii destinatarului. Dacă ceva nu merge bine la a doua bancă după transferul de bani (de exemplu, numărul contului este nevalid), banii trebuie transferați automat înapoi.

Tranzacții ineficiente

Se consideră că o tranzacție în cadrul unui program nu are niciun efect dacă îndeplinește una dintre următoarele condiții:

  • se efectuează numai operații de citire
  • se efectuează numai operațiuni de scriere și valorile scrise sunt suprascrise din nou de alte tranzacții fără a fi citite între timp.

Ineficient înseamnă că tranzacțiile nu au avut niciun efect asupra bazei de date. Prin urmare, tranzacțiile ineficiente nu trebuie resetate în cazul unei restabiliri.

Vezi si