Transakcija (informātika)

Transakcija informātikā ir vienas vai vairāku operāciju kopa, kuras tiek izpildītas kopīgi. Izpildot visas kopas operācijas atbilstoši to savstarpēji definētiem noteikumiem (piem., noteiktā secībā), transakcija tiek uzskatīta par izpildītu (notikušu), pretējā gadījumā trankacija nav izpildīta (nav notikusi). Transakciju realizāciju parasti izmanto datubāzēs, lai uzturētu to integritāti.

Transakciju apstrāde apvieno vairākas individuālas un neatkarīgas operācijas vienā nedalamāmā transakcijā un nodrošina to, ka ir korekti jāizpildās vai nu visām operācijām kopā, vai nevienai. Gadījumā, ja kādas operācijas izpildē rodas kļūda, transakcija tiek atcelta un visas transakcijas operācijas, kuras tika veiksmīgi izpildītas, padarītas par nebijušām. Sistēma tiek atgriezta tajā stāvoklī, kurš bija pirms transakcijas uzsākšanas. Ja visas operācijas izpildās bez kļūdām, transakcija tiek apstiprināta (angļu: committed) un visas izmaiņas ieviestas datubāzē. Transakciju realizācija pasargā pret aparatūras un programmatūras kļūdām, kuras var atstāt transakciju nepabeigtu, piemēram, pārskaitot naudu otram cilvēkam, nauda no viena konta tiek noņemta, bet otrā netiek ieskaitīta, jo pēkšņi izslēdzās dators.

Noslogotās sistēmās transakcijas var pārklāties, proti, vairāki cilvēki vienlaidzīgi izpilda vairākas transakcijas, kuras darbojas ar vieniem un tiem pašiem datiem. Tas var radīt nopietnas, negatīvas sekas, tāpēc parasti šādas transakcijas realizē secīgi vienu pēc otras. Labākā gadījumā transakcijas šķiro pēc to darbības- tās, kas tikai lasa datus un tās, kas arī raksta datus datubāzē. Tad regulē tikai tās transakcijas, kuras raksta datus. Vienlaicīgi lasīt datus drīkst vairākas transakcijas.

Transakcijām ir jāatbilst četrām (ACID, angļu valodas akronīms) pazīmēm:

  1. Atomitāte, atomaritāte (Atomicity) — visām izmaiņām ir vai nu jātiek izpildītām, vai arī jātiek atceltām, piemēram, naudas pārskaitīšana no viena konta otrā nozīmē naudas izņemšanu no pirmā konta un naudas pieskaitīšanu otrajam kontam, ja tiks izpildīta tikai viena no šīm darbībām, tad iegūtais rezultāts būs nekorekts.
  2. Konsistence, saskanīgums (Consistency) — transakcijas sākumā un beigās netiek pārkāpti ierobežojumi, piemēram, ja konta stāvoklim vienmēr jābūt lielākam par 0), tad naudas pārskaitījums, kas konta stāvokli pazeminās zem nulles, netiks pieļauts.
  3. Izolētība (Isolation) — transakcijas izmaiņas nav redzamas citās operācijās, piemēram, naudas pārskaitīšanas laikā citi lietotāji nekad neredzēs stāvokli, kad nauda ir abos kontos, vai tieši otrādi tā nav nevienā kontā.
  4. Ilgstamība, paliekamība (Durability) — garantija, ka tiklīdz, kā transakcija ir pabeigta, tās izmaiņas netiks zaudētas pat datubāzes avārijas rezultātā.