Transakcija
Straipsnis iš Vikipedijos, laisvosios enciklopedijos.
Transakcija - veiksmų su duomenų baze seka, kuri turi pavykti arba nepavykti visa. Jei transakcija nepavyko todėl, jog jos metu kompiuterinė sistema nustojo dirbusi, naujai paleidus sistemą joje neturi likti neužbaigtos transakcijos pėdsakų. Pavyzdžiui, pervedant banke pinigus, pervedama suma nuskaičiuojama nuo vienos sąskaitos ir pridedama prie kitos. Normaliam darbui būtina, jog, nepriklausomai nuo bet kokių aplinkybių turi būti atlikti arba abu šie veiksmai, arba nė vienas.
Teisingai dirbančioje duomenų bazių sistemoje transakcijai būdingos šios savybės:
- Atomiškumas - transakcijos operacijos pavyksta arba visos, arbe nė viena.
- Stabilumas - tiek prieš transakciją, tiek ir po jos sistema yra normalioje darbo būsenoje.
- Izoliacija - tarpiniai transakcijos operacijos rezultatai yra nematomi. Matomas galutinis jos rezultatas kuris iškart pakeičia pradinį duomenų bazės turinį.
- Ilgalaikiškumas - jei vartotojo programa gavo informaciją, jog transakcija pavyko, transakcijos rezultatai savaime išnykti nebegali.
Angliškai šie reikalavimai sutrumpintai užrašomi kaip ACID (atomicity, consistency, isolation, durability).
Programuojant SQL, darbo su transakcija seka yra tokia:
- Sukurti transakciją.
- Įvykdyti vieną ar kelias darbo su duomenų baze komandas.
- Įvykdyti transakciją (tik tuomet iš tiesų bus pakeistas duomenų bazės turinys).
Duomenų bazė, palaikanti transakcijas, vadinama transakcine duomenų baze. Dauguma šiuolaikinių duomenų bazių yra transakcinės.
Taip pat yra ir transakcinių failų sistemų: Reiser4 (atviro kodo, skirta GNU/Linux) ir naujausios NTFS versijos (uždaro kodo, skirta Windows).
[taisyti] Transakcijos J2EE aplinkoje
Programuojant J2EE aplinkoje, transakcijos EJB lygyje palaikomos automatiškai, tačiau tam reikia papildomai konfigūruoti J2EE serverį. Jei tenka kreiptis į duomenų bazę tiesiai iš servleto, transakcijos automatiškai nepalaikomos, tačiau jas nesunku realizuoti kviečiant transakcijoms skirtus metodus.