Nadzor nad sočasnim izvajanjem transakcij

Zahteve se v podatkovni bazi vrstijo zaporedno, ena za drugo. Ko veliko uporabnikov dostopa do podatkovne baze ali če ima en uporabnik podoben nabor zahtev, ki jih želi izvesti, moramo zagotoviti, da rezultati ostanejo dosledni. Doslednost dosežemo z uporabo transakcij (ang. transactions). Transakcije so skupine zahtevkov, ki jih podatkovna baza obdeluje kot celoto.

Da zagotovimo celovitost podatkov, morajo transakcije izpolnjevati štiri pogoje: atomarnost (ang. atomicity), doslednost (ang. consistency), izolacijo (ang. isolation) in trajnost (ang. durability) oziroma ACID.

Atomarnost pomeni, da mora biti dokončana celotna transakcija. Če temu ni tako, je celotna transakcija prekinjena. To zagotavlja, da podatkovna baza nikoli ne ostane z delno dokončanimi transakcijami, kar vodi do slabe celovitosti podatkov. Če želimo na primer prestaviti denar iz enega bančnega računa, vendar druga zahteva ne uspe in sistem ne more položiti denarja na drug bančni račun, potem nobena izmed zahtev ne sme uspeti. Denarja ni mogoče preprosto izgubiti ali vzeti iz enega računa, ne da bi ga položili na drug račun.

Doslednost se nanaša na stanje, v katerem so podatki, ko so izpolnjeni določeni pogoji. Na primer, eno pravilo je lahko, da se mora vsak bančni račun nanašati na stranko v tabeli strank. Ta pravila lahko podatkovna baza krši med potekom transakcije, če na primer vstavi bančni račun brez povezane stranke, ki je dodana pozneje v transakciji. Te začasne kršitve niso vidne zunaj transakcije in morajo biti vedno razrešene pred zaključkom transakcije.

Izolacija pomeni, da nobenih podatkov, uporabljenih med obdelavo ene transakcije, ne more uporabiti druga transakcija, dokler prva transakcija ni dokončana. Na primer, če dve osebi položita 100 EUR na nek bančni račun s stanjem 900 EUR, mora prva transakcija dodati 100 EUR k obstoječim 900 EUR, druga transakcija pa 100 EUR k obstoječim 1000 EUR. Če druga transakcija prebere stanje 900 EUR, preden je prva transakcija zaključena, se zdi, da sta obe transakciji uspešni, vendar bo 100 EUR izginilo. Druga transakcija mora počakati, dokler se prva transakcija ne zaključi. Šele nato lahko druga transakcija dostopa do podatkov.


Trajnost se nanaša na dejstvo, da ko so podatki iz transakcije odobreni, bodo učinki transakcije ostali tudi po okvari sistema. Medtem ko transakcija poteka, učinki niso trajni. Če podatkovna baza neha delovati, jo varnostna kopija vedno obnovi v konsistentno stanje pred začetkom transakcije. Nič, kar naredi transakcija, ne sme spremeniti tega dejstva.

Previdnost ni nikoli odveč