Konkurentnost u bazama podataka

  • View
    424

  • Download
    3

Embed Size (px)

DESCRIPTION

Konkurentnost u bazama podataka

Text of Konkurentnost u bazama podataka

  • 1. SVEUILITE U ZAGREBU FAKULTET ORGANIZACIJE I INFORMATIKE V A R A D I N Luka Rajevi Konkurentnost u bazama podataka SEMINARSKI RAD Varadin, 2013.

2. 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. 3. 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 4. 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. 5. 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 6. 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. 7. 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 8. 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 9. 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 10. 7 Graph-based Protocols o zahtjeva pre