Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 3

TRANSAKCIJE

DBMS može biti jednokorisnički i višekorisnički. DBMS je jednokorisnički (eng. single- user)
ako ga može istovremeno koristiti najviše jedan korisnik, a višekorisnički (engl. multiuser) ako ga
može istovremeno koristiti više korisnika. Višekorisnički sistem se može koristiti istovremeno
zahvaljujući konceptu multiprogramiranja koji dopušta da računar u isto vrijeme obrađuje više
programa. Ako računar ima samo jedan procesor, programi se izvršavaju tako što se vremenski
uklapaju, dok ako računar ima više procesora programi se mogu stvarno istovremeno izvršavati.
U višekorisničkom DBMS-u memorisani podaci su resursi kojima korisnički procesi pristupaju
konkurentno da bi pretraživali ili modifikovali bazu podataka. Izvršenje nekog programa koji
pristupa ili mjenja sadržaj baze podataka se naziva transakcija. Transakcije koje lansiraju
različiti korisnici se mogu konkurentno izvršavati i mogu pristupati istim slogovima baze
podataka. Ako bi ovo izvršenje bilo nekontrolisano, moglo bi dovesti do problema kao što je
nekonzistentnost baze podataka.

Zašto je neophodna kontrola konkurencije kada su u pitanju transakcije?


Mogu se javiti različiti problemi kada se transakcije izvršavaju konkurentno bez kontrole.
Karakteristični su sledeći problemi:
problem gubitka pri ažuriranju,
problem privremenog ažuriranja, i
problem nekorektmog sabiranja
Za rješavanje ova tri problema neophodna je kontrola konkurencije. Ilustracije radi
posmatraćemo dve transakcije. Transakcija T1 otkazuje N mesta sa leta X i dodaje ih letu Y.
Transakcija T2 rezerviše M mesta na letu X. Program za ažuriranje baze podataka kao
parametre koristi broj_leta, datum_leta i broj_mesta koji se rezerviše. Isti program se
koristi za izvodjenje više transakcija. Jedna transakcija obuhvata izvodjenje ovog programa za
konkretni datum, let i broj mesta. Niže su prikazane ove transakcije i izvršena analiza sva tri
problema.
T1 T2
read(X); read(X);
X:=X-N; X:=X+M;
write(X); write(X);
read(Y);
Y:=Y+N;
write(Y);
Slučaj a: Problem gubitka pri ažuriranju
T1 T2
read(X);
X:=X-N;
read(X);
X:=X+M;
write(X);
read(Y);
write(X);
Y:=Y+N;
Write(Y);
Vrijednost X je nekorektna jer T2 očitava vrijednost X prije nego što T1 izmjeni njenu vrijednost
u bazi podataka i stoga je izgubljena ažurirana vrednost X iz transakcije T1.
Slučaj b: Problem privremenog ažuriranja
T1 T2
read(X);
X:=X-N;
write(X);
read(X);
X:=X+M;
write(X);
read(Y);

Pad transakcije
Ako iz nekog razloga dođe do pada transakcije nakon ažuriranja nekog elementa ( u našem
slučaju elementa X), potrebno je taj element vratiti na staru vrednost. Međutim, može se desiti da
neka druga transakcija pristupi tom elementu prije nego što se element vrati na staru vrednost.
Ova druga transakcija čita privremenu vrijednost tog elementa zbog čega se javlja neispravnost.

Slučaj c: Problem netačnog sumiranja


T1 T3
suma:=0;
read(A);
suma:=suma+A;
read(X);
X:=X-N;
write(X);
read(X);
suma:=suma+X;
read(Y);
suma:=suma+Y;
read(Y);
Y:=Y+N;
write(Y);
T3 čita X poslije oduzimanja N i čita Y prije dodavanja N, tako da je zbir neispravan.
Zašto je neophodan oporavak baze podataka?
Pri lansiranju neke transakcije DBMS mora obezbediti sledeće:
da se sve operacije transakcije uspješno izvedu i da se njihov efekat trajno zapiše u bazu
podataka, ili
da transakcija nema uticaja na bazu podataka, niti na bilo koju drugu transakciju.
DBMS mora osigurati da se ne desi da samo neke operacije transakcije imaju uticaj na bazu
podataka. To se može desiti ako transakcija padne u toku njenog izvođenja.

Razlozi zbog kojih mo že doći do pada transakcije


Ima više razloga za pad transakcije. Najčešci su sledeći:
1. Pad računara: Za vreme izvođenja transakcije došlo je do greške u hardveru ili softveru. Pri
tom može doći do gubitka sadržaja memorije.
2. Greška u sistemu ili u transakciji. Neke operacije u transakciji mogu dovesti do pada sistema.
Na primer, prekoračenje ili deljenje nulom, nedozvoljena vrijednost nekog parametra, logička
greška u programu ili operater mogu prekinuti izvršenje transakcije.
3. Transakcija je detektovala lokalnu grešku ili uslov izuzeća. U toku izvodjenja transakcije se
može desiti neki događaj koji zahteva otkazivanje transakcije. Na primer, nisu nađeni podaci
neophodni za rad.
4. Prisilna primjena kontrole konkurencije. Metoda kontrole konkurencije može donjeti odluku o
abortiranju transakcije, naravno uz mogucnost njenog restartovanja.
5. Neispravnost diska. Može doći do gubitaka podataka sa diska zbog njegove neispravnosti ili
zbog problema u izvođenju operacije čitanja sa diska ili zapisa na disk.
6. Fizički problemi i katastrofe. Može doći do fizickog uništavanja medija ili do montiranja
pogrešnog medija.
Ako se desi neka od neispravnosti iz grupe 1-4, sistem mora biti u stanju da izvede oporavak baze
podataka. Neispravnosti iz grupe 5 i 6 se rijetko javljaju, ali se mora imati način da i u ovim
slučajevima dođe do oporavka sistema.

You might also like