Upravljanje transakcijama u DBMS-u: stanja, tipovi i ACID
โก Pametni saลพetak
Upravljanje transakcijama baze podataka tretira jednu ili viลกe operacija baze podataka kao jednu logiฤku jedinicu koja premjeลกta bazu podataka iz jednog konzistentnog stanja u drugo. Oslanja se na ACID svojstva, definirana stanja transakcija i rasporede kako bi se odrลพao ispravan istodobni pristup.

ล to je transakcija baze podataka?
A Transakcija baze podataka je logiฤka jedinica obrade u DBMS-u koja podrazumijeva jednu ili viลกe operacija pristupa bazi podataka. Ukratko, transakcije baze podataka predstavljaju stvarne dogaฤaje bilo kojeg poduzeฤa.
Sve vrste operacija pristupa bazi podataka koje se drลพe izmeฤu poฤetne i zavrลกne naredbe transakcije smatraju se jednom logiฤkom transakcijom u DBMS-u. Tijekom transakcije baza podataka je nekonzistentna. Tek nakon ลกto je transakcija potvrฤena, stanje se mijenja iz jednog konzistentnog stanja u drugo.

ฤinjenice o transakcijama baze podataka
- Transakcija je programska jedinica ฤije izvrลกenje moลพe ali ne mora promijeniti sadrลพaj baze podataka.
- Koncept transakcije u DBMS-u se izvodi kao jedna jedinica.
- Ako operacije baze podataka ne aลพuriraju bazu podataka, veฤ samo dohvaฤaju podatke, ova vrsta transakcije naziva se transakcija samo za ฤitanje.
- Uspjeลกna transakcija moลพe promijeniti bazu podataka iz jednog KONZISTENTNOG STANJA u drugo.
- Transakcije DBMS-a moraju biti atomske, konzistentne, izolirane i trajne.
- Ako je baza podataka prije transakcije bila u nedosljednom stanju, ostala bi u nedosljednom stanju i nakon transakcije.
Zaลกto vam je potrebna konkurentnost u transakcijama?
Baza podataka je zajedniฤki resurs. Koriste je mnogi korisnici i procesi istovremeno. Primjeri ukljuฤuju bankarske sustave, sustave rezervacija ลพeljeznica i avionskih karata, praฤenje burze te inventuru i blagajne u supermarketima.
Neupravljanje istodobnim pristupom moลพe stvoriti probleme kao ลกto su:
- Kvar hardvera i pad sustava.
- Istodobno izvrลกavanje iste transakcije, zastoj, ili spore performanse.
Kontroliranje ovog zajedniฤkog pristupa je zadatak kontrola istodobnosti, koji koristi zakljuฤavanje i vremenske oznake za sigurno ispreplitanje transakcija. Prije toga, korisno je znati kroz koja stanja transakcija prolazi.
Stanja transakcija
Dolje su navedena razliฤita stanja koncepta transakcije u DBMS-u:
| Drลพava | Description |
|---|---|
| Aktivno stanje | Transakcija ulazi u aktivno stanje kada zapoฤne proces izvrลกavanja. Tijekom ovog stanja mogu se izvoditi operacije ฤitanja ili pisanja. |
| Djelomiฤno predano | Transakcija prelazi u djelomiฤno potvrฤeno stanje nakon zavrลกetka transakcije. |
| Posveฤena drลพava | Kada transakcija dostigne potvrฤeno stanje, njezino izvrลกenje je uspjeลกno zavrลกeno i sve njezine promjene trajno se biljeลพe u bazu podataka. |
| Propala drลพava | Transakcija se smatra neuspjelom kada bilo koja od provjera ne uspije ili ako je transakcija prekinuta dok je u aktivnom stanju. |
| Raskinuto stanje | Stanje transakcije dostiลพe stanje zavrลกetka kada transakcija napusti sustav i ne moลพe se ponovno pokrenuti. |
Prouฤimo jedan dijagram prijelaza stanja koji naglaลกava kako se transakcija kreฤe izmeฤu tih razliฤitih stanja.
- Nakon ลกto se transakcija zapoฤne izvrลกavati, ona postaje aktivna. Moลพe izdati operaciju ฤITANJA ili PISANJA.
- Nakon ลกto su operacije ฤITANJA i PISANJA zavrลกene, transakcija doseลพe djelomiฤno potvrฤeno stanje.
- Nadalje, neki protokoli za oporavak moraju osigurati da kvar sustava neฤe rezultirati nemoguฤnoลกฤu trajnog biljeลพenja promjena transakcije. Ako ova provjera uspije, transakcija se potvrฤuje i ulazi u potvrฤeno stanje.
- Ako provjera ne uspije, transakcija prelazi u neuspjeลกno stanje.
- Ako se transakcija prekine dok je u aktivnom stanju, prelazi u neuspjeลกno stanje. Transakciju treba poniลกtiti kako bi se poniลกtio uฤinak njezinih operacija pisanja na bazu podataka.
- Prekinuto stanje odnosi se na transakciju koja napuลกta sustav.
ล to su ACID svojstva?
Svojstva KISELINE koriste se za odrลพavanje integriteta baze podataka tijekom obrade transakcija. ACID u DBMS-u je kratica za Atomiฤnost, Cupornost, Iutjeha, i Durabilnost.
- Atomgrad: Transakcija je jedna jedinica operacije. Ili ga izvrลกite u cijelosti ili ga uopฤe ne izvrลกite. Ne moลพe biti djelomiฤne ovrhe.
- Dosljednost: Nakon ลกto se transakcija izvrลกi, trebala bi prijeฤi iz jednog dosljednog stanja u drugo.
- Izolacija: Transakcija bi se trebala izvrลกavati odvojeno od drugih transakcija. Tijekom istodobnog izvrลกavanja, meฤurezultati istovremeno izvrลกenih transakcija ne bi smjeli biti dostupni jedni drugima.
- Trajnost: Nakon uspjeลกnog zavrลกetka transakcije, promjene u bazi podataka trebale bi ostati saฤuvane, ฤak i u sluฤaju kvara sustava.
ACID svojstvo u DBMS-u s primjerom
U nastavku je primjer svojstva ACID u DBMS-u:
Transaction 1: Begin X=X+50, Y = Y-50 END Transaction 2: Begin X=1.1*X, Y=1.1*Y END
Transakcija 1 prenosi 50 USD s raฤuna X na raฤun Y.
Transakcija 2 je kreditiranje svakog raฤuna s plaฤanjem kamata od 10%.
Ako se obje transakcije poลกalju zajedno, ne postoji jamstvo da ฤe se Transakcija 1 izvrลกiti prije Transakcije 2 ili obrnuto. Bez obzira na redoslijed, rezultat mora biti kao da se transakcije odvijaju serijski, jedna za drugom.
Vrste transakcija
Na temelju podruฤja primjene:
- Nedistribuirano vs. distribuirano.
- Kompenzacijske transakcije.
- Vremenski okvir transakcije.
- Online u odnosu na serijsko.
Na temelju radnji:
- Dvostepeno.
- Ograniฤen.
- Model akcije.
Na temelju strukture:
- Jednostavne ili ravne transakcije: sastoje se od niza primitivnih operacija izvrลกenih izmeฤu poฤetne i zavrลกne operacije.
- Ugnijeลพฤene transakcije: transakcija koja sadrลพi druge transakcije.
- Tijek rada.
ล to je raspored?
Raspored je proces stvaranja jedne grupe viลกe paralelnih transakcija i njihovog izvrลกavanja jedne po jedne. Trebao bi oฤuvati redoslijed kojim se instrukcije pojavljuju u svakoj transakciji. Ako se dvije transakcije izvrลกavaju istovremeno, rezultat jedne transakcije moลพe utjecati na izlaz druge.
Primjer
Initial Product Quantity is 10 Transaction 1: Update Product Quantity to 50 Transaction 2: Read Product Quantity
Ako se Transakcija 2 izvrลกi prije Transakcije 1, oฤitat ฤe se zastarjeli podaci o koliฤini proizvoda. Stoga su potrebni rasporedi.
Paralelno izvrลกavanje u bazi podataka je neizbjeลพno. Ali paralelno izvrลกavanje je dopuลกteno kada postoji odnos ekvivalencije meฤu transakcijama koje se istovremeno izvrลกavaju. Ta ekvivalencija je tri vrste.
Ekvivalencija rezultata: Ako dva rasporeda prikazuju isti rezultat nakon izvrลกenja, to se naziva raspored ekvivalentnog rezultata. Mogu ponuditi isti rezultat za neke vrijednosti i razliฤite rezultate za drugi skup vrijednosti. Na primjer, jedna transakcija aลพurira koliฤinu proizvoda, dok druga aลพurira podatke o kupcu.
Prikaลพi ekvivalenciju: Ekvivalencija prikaza dogaฤa se kada transakcije u oba rasporeda izvode sliฤnu radnju. Na primjer, jedna transakcija ubacuje detalje o proizvodu u tablicu proizvoda, dok druga transakcija ubacuje detalje o proizvodu u arhivsku tablicu. Transakcija je ista, ali su tablice razliฤite.
Ekvivalencija sukoba: U ovom sluฤaju, dvije transakcije aลพuriraju ili pregledavaju isti skup podataka. Postoji sukob meฤu transakcijama jer ฤe redoslijed izvrลกavanja utjecati na izlaz.
ล to je serijalizabilnost?
Serijalizabilnost je proces traลพenja konkurentnog rasporeda ฤiji je izlaz jednak serijskom rasporedu gdje se transakcije izvrลกavaju jedna za drugom. Ovisno o vrsti rasporeda, postoje dvije vrste serijalizabilnosti:
- Serijalizabilnost konflikta.
- Prikaลพi serijalizabilnost.
Njih dvoje se razlikuju po tome koliko strogo procjenjuju ekvivalenciju, kao ลกto je saลพeto u nastavku.
| Aspekt | Serijalizabilnost konflikta | Prikaลพi serijalizabilnost |
|---|---|---|
| Temelj | Redoslijed sukobljenih operacija | Odnosi ฤitanja iz i konaฤnog pisanja |
| test | Graf prioriteta mora biti acikliฤan | Prikaz ekvivalentnosti serijskog rasporeda |
| Strogost | Stroลพi, podskup | ล ire, ukljuฤuje pisanje na slijepo |
| Troลกak provjere | Efikasan | Raฤunalno teลกko |
Svaki raspored koji se moลพe serijalizirati za konflikt je takoฤer serijalizirajuฤi za pogled, ali ne i obrnuto, zbog ฤega je serijalizabilnost konflikta praktiฤni test koji primjenjuje DBMS.

