Download as pdf or txt
Download as pdf or txt
You are on page 1of 14

SVEUILITE U ZAGREBU

FAKULTET ORGANIZACIJE I INFORMATIKE


V A R A D I N




Luka Rajevi









Konkurentnost u bazama podataka

SEMINARSKI RAD
























Varadin, 2013.
SVEUILITE U ZAGREBU
FAKULTET ORGANIZACIJE I INFORMATIKE
V A R A D I N



Luka Rajevi








Konkurentnost u bazama podataka

SEMINARSKI RAD





Mentor:
Prof. Dr. Sc. Alen Lovreni






















Varadin, lipanj 2013.

I
Sadraj


1. UVOD..............................................................................................................................................................1
2. KONKURENTNOST I KONZISTENTNOST ..............................................................................................2
2.1 OSNOVNI POJMOVI ..........................................................................................................................................2
2.2 UPRAVLJANJE KONKURENTNOU U BAZAMA PODATAKA ................................................................................2
2.2.1 PROTOKOLI TEMELJENI NA ZAKLJUAVANJU (LOCK-BASED PROTOCOL) .........................................................4
2.2.2 PROTOKOLI TEMELJENI NA VREMENSKOJ ZNAMCI (TIMESTAMP-BASED PROTOCOL) .........................................8
2.2.3 MVCC (MULTIVERSION CONCURRENCY CONTROL) ......................................................................................9
3. ZAKLJUAK ............................................................................................................................................... 10
LITERATURA ...................................................................................................................................................... 11


1
1. Uvod
U single-user bazama podataka, tj. bazama kojima pristupa samo jedan korisnik, nema potrebe
voditi rauna o problemima konkurentnosti i mijenjanja podatka od strane drugog korisnika.
Jedan korisnik upravlja bazom i ne moe se dogoditi da on dohvati podatke koje u isto vrijeme
trai drugi korisnik. Kod baza kojima pristupa vie razliitih korisnika istovremeno, taj problem
je vrlo izraen i, ako elimo ouvati konzistentnost podataka, moramo se pozabaviti problemom
konkurentnosti i rijeiti ga na najefikasniji nain.
U ovom seminarskom radu u ukratko objasniti glavne pojmove vezane uz konzistentnost
podataka te konkurentnost u bazama podataka. Takoer u objasniti i neke od najee koritenih
naina rjeavanja problema konkurentnosti.



















2
2. Konkurentnost i konzistentnost
2.1 Osnovni pojmovi
Konkurentnost podataka je svojstvo (mogunost, sposobnost) baze kojim vie razliitih korisnika
moe pristupati podacima u isto vrijeme.
Konzistentnost podataka pojam koji oznaava nepromjenjivost podataka, tj. sposobnost da
korisnik pristupa podacima za koje je siguran da su valjani, toni, korisni te da im nije naruen
integritet. Osigurati konzistentnost podataka znai osigurati da svaki korisnik dobije tone i
valjane podatke u bio kojem trenutku pristupanja bazi.
Navedeni pojmovi su vrlo vani i jedni su od najbitnijih funkcionalnosti koje svaka baza
podataka treba imati. Osigurati konkurentnost u bazi podataka nije toliki kompleksan posao sam
po sebi, ali on sa sobom nosi druge komplikacije, a jedna od njih je upravo i konzistentnost
podataka.
Kao to smo ranije rekli, zamislimo da 2 korisnika ele pristupiti istom podatku u isto vrijeme i
svaki korisnik eli promijeniti taj podatak. Nakon to prvi korisnik spremi svoju promjenu, u
bazi e se promijeniti stanje onakvo kakvo prvi korisnik eli. Meutim, kad drugi korisnik
promijeni podatak u neto drugo, tada se u bazi prebrie podatak prvog korisnika i dolazi do
problema. To je klasian primjer nekonzistentnosti podataka. Prvi korisnik oekuje da se u bazi
nalazi podatak koji je on zapisao to, vidjeli smo, nije istina.
Kako rijeti problem nekonzistentnosi? Problem nije toliko jednostavan, ali ipak postoji dosta
naina rjeavanja. U daljnjem tekstu u objasniti glavne naine rjeavanja problema
konkurentnosti, tj. ouvanja konzistentnosti podataka.
2.2 Upravljanje konkurentnou u bazama podataka
Upravljanje konkurentnou (concurrency control) slui nam za korektno i ispravno obavljanje
konkurentnih operacija na najefikasniji mogui nain. Podruje koje se bavi upravljanjem
konkurentnou nam daje pravila, metode, metodologije za dizajn te teorijsku podlogu za
odravanje konzistentnosti prilikom obavljanja konkurentnih operacija, a na taj nain i
sveukupne konzistentnosti aplikacije, baze podataka i sl. Prilikom upravljanja konkurentnou
potrebno je voditi rauna o brzini obavljanja operacija. Konkurentnost je, kao takva, uvedena da
se ubrza dohvaanje podataka, da se povea uinkovitost i sl. te bi, ukoliko upravljanje
(kontrola) nad tom konkurentnosti traje predugo, mogli izgubiti dosta prednosti koje dobijemo
uvoenjem konkurentnosti. Loe implementirano upravljanje konkurentnou moe, kao to je

3
ve navedeno, dovesti do korupcije podataka (nekonzistentnosti) zbog neorganiziranih read-
write operacija.
Svaki (kvalitetan) sustav za upravljanje bazama podataka (DBMS) bi trebao imati upravljanje
konkurentnou, upravo stoga jer je ona jedan od najbitnijih, ako ne i najbitniji, element za
odravanje baze (sustava) ispravnim i konzistentnim, a podacima ispravnim, tonim i
nekoruptiranim.
Za najjednostavniji prikaz operacija konkurentnosti koriste se transakcije koje se izvode
konkurentno. Transakcija predstavlja samostalnu i neovisnu "jedinicu rada" obavljenu u sustavu
za upravljanje bazom podataka nad bazom podataka. Transakcija se sastoji od jedne ili vie
razliitih operacija koje se provode nad podacima u bazi. Posebnost transakcija su njena
svojstva: atomarnost (A), konzistentnost (C), izolacija (I) i trajnost (D). Ta svojstva su poznata i
pod kraticom ACID. Kada se neka transakcija pokree, ona se izvrava u cijelosti od poetka do
kraja. Trajanje transakcije ovisi o broju operacija koje se u njoj nalaze te moe trajati vrlo kratko
(par sekundi) sve do nekoliko dana ( transakcijske sage). Jo jedno bitno svojstvo je roll-back.
Kada se, prilikom izvoenja transakcije, dogodi pogreka, transakcija ima sposobnost povratiti
sve promjene koje je uinila. To je takoer korisno i prilikom pada sustava, kad se kod
ponovnog pokretanja sve transakcije i podaci mogu vratiti na poetak i pokrenuti ponovo.
Zato su nam transakcije bitne za konkurentnost i konzistentnost podataka? Odgovor je
jednostavan. Transakcija moe biti vie u jednom sustavu, i one se mogu izvravati konkurentno.
Za vjerovati je da e se prije ili kasnije dogoditi situacija u kojoj e dvije razliite transakcije
zatrebati isti podatak iz tablice. to uiniti u tom sluaju? Kao to smo ve rekli, potrebno je
upravljati konkurentnou tih transakcija, tj. potrebno je osmisliti mehanizam u kojem e svaka
transakcija dobiti svoj podatak onda kada je tom podatku, a ujedno i cijelom sustavu, osigurana
konzistentnost.







4
2.2.1 Protokoli temeljeni na zakljuavanju (Lock-based Protocol)

Jedan od naina osiguranja konzistentnosti podataka i upravljanja konkurentnou transakcija
temelji se na lockovima, tj. na meusobnoj iskljuivosti prilikom pristupanja podacima. Princip
je prilino jednostavan: u trenutku kada jedna transakcija pristupa podacima, nijedna druga
transakcija ne moe mijenjati te podatke. To se postie tzv. zakljuavanjem, odnosno lockovima.
Transakcija e, dakle, pristupiti podatku samo ukoliko on na sebi ima lock.
Postoji vie naina po kojima neki podatak moe biti zakljuan:
dijeljeno zakljuavanje (shared lock)
ekskluzivno zakljuavanje (exclusive lock)
Dijeljeno zakljuavanje:
Ukoliko transakcija T1 od podatka (Q) preuzme shared-mode lock (S) tada T2 ili bio koja
druga transakcija mogu samo itati podatak Q ali ne i pisati u njega.
Ekskluzivno zakljuavanje:
Ukoliko transakcija T1 od podatka (Q) preuzme exclusive-mode lock (X) tada T2 ili bilo
koja druga transakcija mogu i itati i pisati u Q.

Primjer izvoenja jednostavne transakcije koritenjem ekskluzivnog zakljuavanja:















Slika 1: Izvoenje jednostavne transakcije

5
Prilikom pristupanja podatku transakcija zakljuava isti zakljuava te ovisno o vrsti
zakljuavanja postavlja restrikciju za druge transakcijekoje ele pristupiti istom podatku.
Na slijedeoj slici je prikazan jednostavan primjer konkurentnog izvravanja dvije transakcije te
koritenja zakljuavanja kao sredstva za ouvanje konzistentnosti:



Transakcije obavljaju jednostavne operacije nad podacima A i B te prilikom pristupanja
pojedinom podatku isti i zakljuavaju. U primjeru transakcije koriste oba oblika zakljuavanja
(dijeljeni S i ekskluzivni X).






Slika 2: Konkurentno izvoenje dvije transakcije

6
Prilikom koritenja metoda zakljuavanja kod upravljanja konkurentnou, ponekad moe doi
do neeljenih situacija kod izvoenja transakcija. Na slijedeoj slici se nalazi jedan primjer takve
situacije:







to se uope dogodilo u ovoj sitaciji? Ako pogledamo izvoenja transakcija T3 i T4 moemo
uoiti slijedee stvari: T3 je zakljuala podatak B u ekskluzivnom modu dok je transakcija T4
zakljuala podatak A u dijeljenom modu. U nastavku izvoenja transakcija dogaa se situacija u
kojoj T3 eli zakljuati podatak A u ekskluzivnom modu a T4 eli zakljuati B u dijeljenom
modu. Ta situacija se naziva deadlock. U ovom trenutku niti jedna transakcija ne nastavlja s
radom jer T3 eka da T4 otkljua A dok T4 eka da T3 otkljua B. Kada se dogodi ovakva
situacija jedno od rjeenja je roll-back jedne od transakcija. Uglavnom se za roll-back odabire
transakcija koja je najkasnije poela, tj. ona koja je obavila najmanje posla. Nakon to je
transakcija obavila roll-back, podaci koji su bili zakljuani se otkljuavaju te druga transakcija
moe nastaviti sa radom.
U protokolima temeljenim na tehnologiji zakljuavanja se istiu 2 tipa:
Two-phase Locking protocol
o protokol osigurava serijalizabilnost podataka
o ne rjeava problem deadlocka
o izvrava se u dvije faze:
Faza rasta u kojoj transakcija moe zakljuati podatak, ali ne i otkljuati
Faza smanjivanja u kojoj transakcija moe otkljuati podatak ali ne i
zakljuati ga
Slika 3: Deadlock

7
Graph-based Protocols
o zahtjeva prethodnu informaciju o redoslijedu izvoenja transakcija
o transakcije su prikazane u obliku usmjerenog grafa
o prepoznavanje deadlocka je pojednostavljeno (svaki ciklus u grafu predstavlja
deadlock)





















Slika 4: Deadlock prikazan usmjerenim grafom

8
2.2.2 Protokoli temeljeni na vremenskoj znamci
(Timestamp-based Protocol)
Kod protokola temeljenih na vremenskoj znamci svakoj transakciji prije pokretanja bude
dodijeljena vremenska znamka koja oznaava vrijeme pokretanja. Prilikom pokretanja
transakcije T1, istoj bude dodjeljena znamka TS(T1) i svaka slijedea transakcija koja bude
pokrenuta, npr. T2 e imati vrijednost znamke veu od T1 tako da e biti: TS(T1) < TS(T2).
Znamka se moe generirati koritenjem vrijednosti sistemskog sata (system clock) ili koritenjem
brojaa kojemu se vrijednost povea nakon to se dodijeli znamka. Osim vremenskih znamki, za
ove protokole je potrebno svakom podatku (Q) pridodati 2 oznake:
W-znamka(Q) oznaava najveu vrijednost znamke koju je imala transakcija koja je
nad podatkom Q izvrila write operaciju.
R-znamka(Q) oznaava najveu vrijednost znamke koju je imala transakcija koja je nad
podatkom Q izvrila read operaciju.
Ove oznake su aurirane svaki put kada se dogode read ili write instrukcije.
Njapoznatiji protokol temeljen na vremenskoj znamci je "Timestamp-ordering Protocol". Odlike
ovog protokola su navedene u daljnjem tekstu:
1. T1 eli obaviti read(Q)
ukoliko je TS(T1) < W-znamka(Q), znai da T1 eli proitati vrijednost podatka Q koji je
ve promijenjen. Zbog toga se read operacija odbija i T1 pokree roll-back
ukoliko je TS(T1) >= W-znamka(Q), tada se read operacija izvrava i R-znamka(Q)
postavlja na max(R-znamka(Q), TS(T1)).
1. T1 eli obaviti write(Q)
ukoliko je TS(T1) < R-znamka(Q), tada je vrijednost koju T1 eli staviti u Q bila
potrebna ranije i sustav je zakljuio da ta vrijednost nikada nee stii. Radi toga se odbija
write operacija i obavlja se roll-back T1 transakcije.
ukoliko je TS(T1) < W-znamka(Q) , tada T1 ustvari pokuava zapisati staru vrijednost Q.
Upravo zato sustav odbija write operaciju i obavlja se roll-back T1 transakcije.
u ostalim suajevima sustav izvrava write operaciju i postavlja W-znamka(Q) = TS(T1)



9
2.2.3 MVCC (Multiversion concurrency control)

Nain upravljanja konkurentnou koji je prilino popularan u zadnje vrijeme je svakako
MVCC. Njega koriste poznate SQL baze podataka kao Oracle database, MSSQL Server,
MySQL, PostgresSQL ali i NoSQL baze kao to su npr. CouchDB, Hbase itd.
MVCC je nain upravljanja konkurentnou koji ne koristi zakljuavanja. Svaki korisnik koji je
spojen na bazu podataka, koja radi MVCC principom, vidi snapshot baze podataka u odreenom
vremenskom trenutku. Sve promjene koje se dogode npr. write naredbama nee biti vidljive od
drugih korisnika dok sve transakcije nisu obavile svoj posao, tj. dok transakcija nije pozvala
commit. Kad MVCC baza podataka treba aurirati neki podatak, ona nee prebrisati stari podatak
nego e ga oznaiti kao zastarjeli i dodati novu verziju negdje drugdje. Radi toga, postoji mnogo
razliitih verzija u memoriji, ali samo jedna je najnovija. Takav nain upravljanja omoguava
transakcijama koje itaju pristup podacima koji su bili prisutni u bazi u trenutku kada je itanje
zapoelo, ak ako se u meuvremenu dogodila promjena ili brisanje podatka.
MVCC takoer koristi vremenske znamke kako bi se osigurala konzistentnost podataka.
Transakcija nikad ne mora ekati da pristupi nekom objekta iz baze upravo na nain da
istovremeno upravlja razliitim verzijama objekata. Svaka verzija objekta treba imati W-znamku
i dozvolila bi transakciji T1 itanje one verzije objekta ije vrijeme prethodi vremenu kreiranja
transakcije TS(T1). Takoer, ukoliko transakcija T1 eli pisati u neki objekt i ako postoji neka
druga transakcija T2, vrijeme kreiranja T1 mora biti ranije od vremena kreiranja transakcije T2
kako bi write operacija uspjela. Dakle, write operacija ne moe uspjeti ukoliko se obavljaju i
transakcije s ranijom vremenskom znamkom kreiranja.
Svaki objekt takoer ima i znamku itanja te ako npr. transakcija T1 eli pisati u objekt (P) te
ako je vrijeme kreiranja te transakcije TS(T1) ranije od vremenske znamke itanja objekta
(TS(T1) < RTS(P)), transakcija se prekida i pokree ponovo. U protivnom sluaju T1 kreira
novu verziju objekta (P) i postavlja mu znamke za itanje i pisanje jednakima TS(T1).
Oigledni nedostaci ovakvog pristupa su naravno memorijske prirode. Potrebno je vie memorije
kako bi se moglo spremiti vie razliitih verzija objekata u bazi. No, s druge strane operacije
itanja nikad nisu blokirane to moe bti jako vano kod baza podataka iz kojih se uglavnom
itaju podaci.



10
3. Zakljuak
Upravljanje konkurentnou je vrlo vano podruje u polju razvoja baza podataka. Loe
izvedena implementacija upravljanja moe imati katastrofalne posljedice po podatke koji se u
bazi nalaze. Upravo zato postoji dosta razliitih implementacija upravljanja konkurentnou. Svi
oni imaju svoje prednosti i nedostatke. Kod nekih moe doi i do neeljenih situacija kao to su
deadlock-ovi ili izgladnjivanja transakcije, kod drugih se koriste vremenske znamke, a neki pak
koriste kombinacije tih dva ili verzioniranje baze podataka i objekata unutar nje. U svakom
sluaju, implementacija upravljanja transakcijama se moe izvesti na vie naina i na nama je
daodaberemo najefikasniji nain, tj. onaj koji e nam osigurati najveu konzistentnost podataka
te osigurati njihov integritet.



















11
Literatura
1. Database System Concepts Silberschatz, Korth, Sudarshan
2. Data concurrency and consistency lanak dostupan 16. 06. 2013. na
http://docs.oracle.com/cd/B19306_01/server.102/b14220/consist.htm#i5700
3. Concurrency control lanak dostupan 16.06.2013. na
http://en.wikipedia.org/wiki/Concurrency_control
4. MVCC lanak dostupan 16.06. 2013. na
http://en.wikipedia.org/wiki/Multiversion_concurrency_control

You might also like