Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 87

Panevropski Univerzitet Apeiron

Banja Luka

Seminarski rad iz predmeta: RDBMS i CASE alati

Tema:

KOKURENTNI PRISTUP
BAZI PODATAKA

Predmetni profesor: Student:


Prof. dr Zoran Ž. Avramović Dragan Borić

Banja Luka, Decembar 2010 god.


SADRŽAJ RADA:
UVOD
BAZE PODATAKA
TRANSAKCIJE
KONTROLA KONKURENTNOSTI
TEHNIKE ZAKLJUČAVANjA
NEPOVRATNO ZAKLJUČAVANJE
PODATAKA
OSTALE METODE KONTROLE
KONKURENTOSTI
 UVOD
UVOD
Baze podataka predstavljaju višu razinu rada s
podacima u odnosu na klasične programske
jezike
Tehnologija nastala s namjerom da se uklone
slabosti tradicionalne “automatske obrade
podataka” iz 60-tih i 70-tih godina 20. veka
Osiguranje veće produktivnosti, kvalitete i
pouzdanosti u razvoju aplikacija koje se svode
na pohranjivanje i pretraživanje podataka u
računaru
UVOD
Baza podataka je skup međusobno
povezanih podataka, sačuvanih u vanjskoj
memoriji računara
Podaci su istovremeno dostupni raznim
korisnicima i aplikacijskim programima.
Unos, promena, brisanje i čitanje
podataka obavlja se posredstvom
zajedničkog softvera - SUBP
 BAZE
PODATAKA
BAZE PODATAKA
„Baza podataka je skup istovrsnih podataka s
višestrukom namjenom. Korisnik nije zainteresiran
za sve vrste podataka u bazi, već samo za one koji su
mu potrebni u njegovom poslu. Korisnik može imati
uvid u samo jednu, njemu potrebnu datoteku, koja
ima uvijek istu i to vrlo jednostavnu strukturu, iako je
u biti izvedena iz mnogo kompleksnije strukture
podataka. Različiti korisnici uzimaju u obzir različite
datoteke izvedene iz iste baze podataka. Dakle, iako
je baza podataka zajednička većem broju korisnika,
različiti korisnici je različito shvataju.“ - James
Martin
BAZE PODATAKA
Baze podataka se dele na:
◦ Operacijske (transakcijske, produkcijske) baze
◦ Distribuirane baze podataka
◦ Eksterne baze podataka
◦ Data Warehouse i Data Mining
◦ Hipermedijalne baze podataka na Web-u
Operacijske baze
Operacijske (transakcijske,
produkcijske) baze podataka - pamte
detaljne i aktuelne podatke potrebne za
podršku poslovnih procesa i operacija
Primeri su baza kupaca, baza ljudskih
resursa, baza zaliha i druge baze
generisane poslovnim operacijama
Eksterne baze podataka
Pristup informacijama iz eksternih baza podataka je moguć
putem velikog broja komercijalnih online servisa, kao i sa
plaćanjem ili bez, iz mnogih izvora na Internetu
Web-stranice osiguravaju putem hiperlinkovanih strana
pretraživanje multimedijalnih dokumenata u
hipermedijalnim bazama podataka
Eksterni podaci su najčešce u vidu statističkih baza podataka
nastalih kao rezultat ekonomskih i demografskih istraživanja
i aktivnosti.
Također su popularne bibliografske ili full text baze iz kojih
se mogu vidjeti ili preuzeti apstrakti ili kompletne kopije
raznih časopisa, istraživačkih radova i drugih publiciranih
materijala.
Data Warehouse
Data Warehouse baza podataka memoriše podatke
ekstrahirane iz različitih operacijskih, eksternih ili
nekih drugih baza podataka u okviru organizacije.
Ona je središnji izvor prečišćenih i transformiranih
aktuelnih i istorijskih podataka koje koriste menadžeri i
drugi poslovni stručnjaci za data mining, OLAP (engl.
online analytical processing) i druge vrste poslovnih
analiza, istraživanja tržišta, i podršku odlucivanju.
Data warehouse može biti podijeljen na data mart-ove
koji sadrže podskupove podataka warehose-a koji su
fokusirani na neki specificni aspekt kompanije, kao što
je odjel ili poslovni proces.
Hipermedijalne baze podataka na
Web-u
Rapidni napredak Web tehnologija je značajno
povećao primjenu baza hipermedijalnih
dokumenata koje se nazivaju hipermedijalne baze
podataka
 Hipermedijalna baza podataka je zapravo web
stranica koja se sastoji od hiperlinkovanih
multimedijalnih strana
Sa tačke gledišta teorije baza podataka,
hipermedijalna baza podataka nije skup međusobno
povezanih slogova, već skup međusobno
hiperlinkovanih multimedijalnih strana.
Distribuirana baza podataka
Baza podataka koja se ne nalazi u celini na
jednom računaru, već je razdeljena na više
lokacija koje su povezane komunikacijskom
mrežom.
Svaka lokacija ima svoj vlastiti, autonomni
sistem za upravljanje bazama podataka, sa
vlastitom kontrolom , upravljačem transakcija i
oporavka od pada, i ostalim značajnim
funkcijama.
Poseduje svoj procesor i ulazno/izlazne uređaje.
Distribuirana baza podataka
PROBLEMI distribuiranih baza podataka
Sporost mrežne komunikacije
Da bi postigli visoku efikasnost DSUBP njegove komponente
treba razvijati na takav način da se smanji mrežna
komunikacija, tačnije količina podataka koju prenosimo preko
mreže.
Problemi sa kojima se srećemo u distribuiranimsistemima baza
podataka su:
◦ fragmentacija podataka
◦ distribuirana obradba upita
◦ distribuirano ažuriranje
◦ upravljanje katalogom
◦ distribuirano izvršenje skupa transakcija, što uključuje konkurentnost,
integritet, oporavak i protokole kompletiranja transakcija
 TRANSAKCIJE
TRANSAKCIJE
Prema broju korisnika beze podataka možemo
klasifikovati na:
◦ jedno korisničke (engl. Single user) i
◦ multikorisničlke (engl. Multi users).
Transakcija je logička jedinica procesiranja
podataka u bazi koja uključuje jednu ili više
operacija u bazi podataka.
Operacije mogu biti:
◦ insert (ubacivanje),
◦ delete (brisanje),
◦ update (izmjene),
◦ select (pretraživanje).
OZNAČAVANJE GRANICA
TRANSAKCIJE
eksplicitno navođenje begin transaction i
end transaction odnosno commit ili
rollback.
Drugi način je automatski način rada pri
čemu svaka operacija predstavlja transakciju.
Bitno je napomenuti da jedan program može
imati više transakcija.
U slučaju da transakcija nema operaciju
ažuriranja (izmjene baze) transakcija se zove
read-only.
Operacije za pristup BP
Osnovne operacije za pristup bazi
podataka, koje transakcija uključuje su:
◦ Read_item(X) – čita podatak iz baze sa
imenom X i smješta ga u programsku
varijablu X
◦ Write_item(X) – piše vrednost programske
varijable X u bazu podatak
Podatak u bazi je označen sa X
ČITANjE PODATKA
Koraci izvršenja read_item(X):
Nađi adresu
Kopirati disk blokdisk
u
bafer u glavnoj memoriji
bloka koji sadrži
(ako disk blok več nije u
podatak X
memoriji),

K
op
ir
ati
po
da
ta
k
X
iz
ba
fe
ra
u
pr
og
ra
m
sk
u
va
rij
ab
lu
sa
i
m
en
o
m
X
IZMENA PODATKA
Koraci izvršenje write_item(X):
Kopirajadresu
Nađi podatak Xuiz
disk blokdisk
programske
bafer u glavnoj varijable
bloka
na koji
korektnu
memoriji
sadrži
(akolokaciju
disk bloku
podatak
bafer
več X
nije u memoriji)

Pi
ši
bl
o
k
iz
m
e
m
or
ij
e
na
di
sk
PRIMER:

I transakcija II transakcija
Read_item(X) 70 Read_item(X) 70
X:=X-N 65 X:=X+M 78
Write_item(X) Write_item(X)
Read_item(Y) 50
Y:=Y+N 55
Write_item(Y)

Opis: Prebaci n = 5 rezervacija Opis: Rezerviši m = 8 mesta na


karata sa leta X na let Y letu X
ISTOVREMENO IZVRŠENjE
U slučaju da se dve transakcije izvršavaju
istovremeno potrebno je:
◦ Vršiti kontrolu konkurentnosti (Više korisnika
može istovremeno čitati podatke i menjati ih.
U slučaju nekontrolisanog rada može doći do
nekonzistentnosti baze)
◦ Obezbediti mehanizam poništenja transakcije
STATUSI TRANSAKCIJE

READ
WRITE
POČETAK KRAJ
TRANSAKCIJE TRANSAKCIJE PARCIJALNO IZVRŠI
AKTIVNA POTVRĐENA
POTVRĐENA

PREKID PREKID

PAD
transakcije
KRAJ
Osobine transakcija
Transakcijatreba da ima nekoliko osobina, one se često
nazivaju ACID osobine i one treba da sprovode kontrolu
konkurentosti i metode oporavka u SUBP. ACID osobine:
◦ Atomicity (nedeljivost) – Transakcija je nedeljiva jedinica
procesiranja koja se ili izvrši u celosti ili se ni jedan njen dio ne
izvrši
◦ Consistency preservation (Zaštita konzistentnosti) - transakcija
štiti bazu od nekonzistentnosti. Bolje rečeno vodi bazu iz jednog
u drugo konzistentno stanje
◦ Islolation (Izolacija) – transakcija se izvršava izolovano od druge
transakcije
◦ Durability ili Permanency (Trajnost promene) – promene u bazi
koje su potvrđene (commit-ovane) moraju biti trajne u bazi. One
ne smeju biti izgubljene zbog bilo kakve greške.
 KONTROLA
KONKURENTNOSTI
TEHNIKE
Većina tehnika za kontrolu
konkurentnosti obezbeđuje serijsko
izvršavanje.
Jedan važan skup protokola koristi
tehniku zaključavanja podataka da bi
sprečilo da više transakcija pristupa
istovremeno istom podatku.
Tehnike zaključavanja se koriste u većini
komercijalnih SUBP.
TEHNIKE ZA KONTROLU
Tehnike kontrole konkurentnosti:
◦ Tehnika zaključavanja
◦ Kontrola konkurentnosti na bazi TimeStamp redosleda
◦ Više verzijska kontrola konkurentnosti
◦ Tehnika validacije (optimistička) kontrola
konkurentnosti
◦ Granularnost podataka i višestruko granularno
zaključavanje
◦ Upotreba katanaca za kontrolu konkurentnosti u
indeksima
◦ Ostale kontrole konkurentnosti
PROBLEMI KONKURENTNOG
PRISTUPA
U slučaju da se ne poštuje kontrola
konkurentnosti može doći do sledećih
problema:
◦ Problem gubitka ažuriranja
◦ Problem privremenog ažuriranja
◦ Problem pogrešnog sabiranja
Problem gubitka ažuriranja
Pojavljuje se kada se istovremeno čitaju
vrednosti iz baze i onda se odvojeno
ažuriraju.
Primer: U sistemu rezervacije karata
izvršenje transakcija T1 (prebacivanje 5
rezervacija sa jednog na drugi let) i T2
(rezervacija 4 karte) istovremeno. Ako je
broj rezervacija X=80. Rezultat
transakcije je prikazan u Tabeli 2.
Problem gubitka ažuriranja

I transakcija Vreme II transakcija


Read_item(X) //80 t1
X:=X-N //75
Read_item(X) //80
X:=X+M //84
Write_item(X) //75
Read_item(Y)
Write_item(X) //84
Y:=Y+N

Write_item(Y)
tn UMESTO 79 IMAMO 84
Problem privremenog ažuriranja
nastaje kada se dve transakcije izvršavaju
paralelno
Ako prva transakcija promeni neku
vrednost koja se kasnije koristi u drugoj
transakciji a nakon toga se prva
transakcija poništi odnosno umesto
naredbe COMMIT prva transkacija zatraži
opoziv – izdavanjem naredbe
ROLLBACK
Problem privremenog ažuriranja

I transakcija Vreme II transakcija


Read_item(X) t1
X:=X-N
Write_item(X)
Read_item(X)

ROLLBACK

tn
Problem pogrešnog sabiranja
Pojavljuje se kada se dve transakcije
izvršavaju paralelno. Jedna ažurira bazu a
druga pravi zbrajanje i u tom procesu
uzima dio podataka pre a dio posle
ažuriranja.
Problem pogrešnog sabiranja

I transakcija Vreme II transakcija


Suma = 10
Read_item(X) //80
t1
X:=X-N //70

Read_item(X) //80
Write_item(X) //70 Suma = suma +X //90
COMMIT Read_item(Y) // 3
Suma = Suma / Y //30
Read_item(Y) // 3
Y:=Y+M // 5 tn
Write_item(Y) // 5

UMESTO Suma = 16, Suma JE 30


SUBP
Iz prethodnih primera zaključuje se da je u
slučaju greške potrebno poništenje transakcije
Kada se transakcija pošalje SUBP na
izvršenje sistem je odgovoran da će sigurno:
◦ Sve operacije u transakciji završtiti uspešno i
njihov efekat će se zapisati u bazu za stalno
ILI
◦ Transakcija neće imati nikakvog efekta na bazu
niti na bilo koju njenu transakciju.
PAD TRANSAKCIJE
Neki od razloga za pad transkacije su:
◦ Greška računara (hardverske, softverske ili
mrežne greške u računarskom sistemu za vreme
trajanja transakcije),
◦ Greška sistema ili transakcije (neke operacije
mogu biti sa greškom (delenje sa nulom,
prekoračenje...), greška u programu,
◦ Detekcija izuzetka (engl. exception) – nije nadjen
podatak (nema dovoljno novca na računu),
◦ Greška kontrole konkurentnosti – deadlock...
◦ Greška okruženja – isključenje računara,...
 TEHNIKE
ZAKLjUČAVANjA
KATANCI – LOCK
Katanac (engl lock) je varijabla pridružena
podatku koji opisuje status podatka u odnosu na
operacije koje se mogu primjeniti na podatke.
Katanac se koristi za sinhronizaciju pristupa
podacima od strane konkurentnih transakcija.
Tipovi katanaca:
◦ Binarni katanci – imaju samo dva statusa: zaključan i
nije zaključan
◦ Deljeni/ekskluzivni katanci – dozvoljava pristup
(čitanje) za više transakcija ali samo jednoj za pisanje.
Binarni katanac
Svaki podatak ima svoj katanac i ako je
katanac zaključan (1) niko ne može
pristupiti tom podatku, ako je katanac
otključan (0) podatak je raspoloživ.
Moguće je izvršiti samo dve operacije sa
binarnim katancem: lock_item i
unlock_item.
Binarni katanac
Provera statusa podatka X se dobija sa naredbom
LOCK(X)
ako je LOCK(X) = 1, transakcija je primorana da
pričeka
Ako je LOCK(X) = 0, onda se postavlja 1 (postavlja
se katanac na podatak) i transakcija dobija pristup
podatku X.
Kada se završi transakcija, ona izdaje naredbu

unlock_item(X)
koja LOCK(X) postavlja na 0, odnosno otključava
podatak tako da se podatku X može pristupiti od
strane druge transakcije.
Binarni katanac
Svi podaci o katancima se upisuju u
tabelu katanaca sa sledećim podacima:
◦ ime podatka,
◦ katanac,
◦ transkacija
Oni podaci koji nisu upisani u tabelu katanaca
smatraju se da su otključani.
SUBP (engl. DBMS) ima podsistem za
upravljanje katancima (engl. Lock Manger)
PSEUDO KOD binarnog katanca
lock_item(X):
B: if LOCK(X)=O //podatak je otključan
then LOCK(X)1 //zaključaj podatak
else begin
wait (until lock(X)=0);
go to B
end;

unlock_item (X):
LOCK (X) O; //otključava podatak
PRAVILA RADA
Pravila rada sa binarnim katancima
◦ Transakcija T mora obaviti operaciju lock_item(X)
pre bilo koje read_item(X) ili write_item(X)
operacije
◦ Transakcija T mora obaviti operaciju
unlock_item(X) posle svih read_item(X) ili
write_item(X) operacije u transakciji T
◦ Transakcija T neće uraditi lock_item(X) ako je X
već zaključan
◦ Transakcija T neće uraditi unlock_item(X) ako
transakcija nema katanac na podatku X
Deljeni/Ekskluzivni katanac
Deljeno tj eksluzivno zaključavanje
dozvoljava da više transakcija čita
podatke ali samo jedna transkacija može
da piše (ažurira) podatak.
Da bi se to omogućilo koriste se različiti
tipovi katanaca, da transakcija mogla da
ažurira podatak mora da ima eksluzivni
pristup (eksluzivni katanac).
Deljeni/Ekskluzivni katanac
Pri upotrebi deljenog/ eksluzivnog
katanca ili čitaj / piši (engl. write / read)
katanca, koriste se sledeće tri operacije,
pri čemu X predstavlja podatak kojem
transakcija pristupa:
◦ Read_lock(X)
◦ Write_lock(X)
◦ Unlock(X)
Deljeni/Ekskluzivni katanac
Prilikom
zaključavanja podatka X,
LOCK(X) može imati sledeće statuse:
◦ Read_locked (shared_locked) – katanac
čitanja. Ostale transakcije mogu čitati podatak
i može ih biti više nad jednim podatkom
◦ Write_locked (exclusive_locked) –katanac
pisanja. Samo jedna transakcija može
pristupiti podatku, da bi ga izmenila.
◦ Unlocked – otključaj podatak. Izbriši katanac
sa podatka
Deljeni/Ekskluzivni katanac
Svaki zapis u tabeli katanaca mora da ima
sledeća četiri polja:
◦ Naziv polja
◦ Lock (vrsta katanca)
◦ Broj čitanja
◦ Transakcija
Deljeni/Ekskluzivni katanac - Pravila
Kada se koristi deljeno/eksluzivno zaključavanje, sistem
mora da se pridržava sledećih pravila:
1. Transakcija T mora uraditi operacije read_lock(X) ili
write_locked(X) pre bilo koje read_item(X)
2. Transakcija T mora uraditi operaciju write_locked(X) pre
bilo koje write_item(X)
3. Transakcija T mora uraditi operaciju unlocked(X) posle
svih read_item(X) i write_item(X)
4. Transakcija T neće uraditi read_lock(X) ako već postoji
read ili write katanac na X
5. Transakcija T neće uraditi write_lock(X) ako transakcija
ima read ili write katanac nad X
6. Transakcija T neće uraditi unlock(X) operaciju ako
transakcija nema read ili write katanac na X
Deljeni/Ekskluzivni katanac - Pravila
Pravilo 4 i 5 se mogu malo promeniti i to:
◦ Ako transakcija T ima read_lock(X) i ako
transakcija traba da postavi write_lock(X) to
se može uraditi ako jedino transakcija T ima
read_lock na X
◦ Ako transakcija T ima write_lock(X) ona
može katanac nad X promeniti u read_lock(X)
PSEUDO KOD
read_lock (X):
B: if LOCK(X)= "unlocked"
then begin LOCK(X)  "read_locked";
no_of_reads(X) 1 //broj zakljucanih
end
else if LOCK(X)="read_Iocked"
then no_of_reads(X)  no_of_reads(X) + 1 //inkrementiraj
broj katanaca
else
begin wait (until LOCK(X) = "unlocked")
go to B
end;
PSEUDO KOD
write_lock (X):
B: if LOCK(X) = "unlocked"
then LOCK(X)  ''write_locked''
else
begin wait (until LOCK(X)= "unlocked");
go to B
end;
PSEUDO KOD
unlock (X):
if LOCK (X) = "write_Iocked"
then begin LOCK(X)  "unlocked;"
else if LOCK(X) = "read_locked"
then begin
no_of_reads(X)  no_of_reads(X) - 1;
if no_of_reads(X) = O
then begin LOCK(X)= "unlocked";
end;
end;
Prerano otključavanje podataka
I transakcija Vreme II transakcija
read_lock(Y) t1
read_item(Y) //30 Inicijalna
vrijednost
X=20,
unlock(Y)
Y=30;
read_lock(X)
read_item(X) //20
Rezultat je
unlock(X) X=50, Y=50
write_lock(Y) umesto
read_item(Y) //30 X=70, Y=50
Y:=X+Y //50
write_item(Y)
unlock(Y)
write_lock(X)
read_item(X) //20
X:=X+Y //50
write_item(X)
DVOFAZNO
ZAKLjUČAVANjE
 Da bi se prethodni problem prevazišao potrebno je koristiti
dodatni protokol zaključavanja i otključavanja poznat kao
dvofazno zaključavanje
 Dvofaznost je metoda za postizanje linearizovanog
izvršenja skupa transakcija, korišćenjem mehanizma
zaključavanj
 Transakcija je dvofazna ako se sastoji od dve serijske faze:
faze zaključavanja objekata i faze otključavanja objekata
 U fazi zaključavanja nema nijedne radnje otključavanja
objekta, odnosno u fazi otključavanja više nema radnji
zaključavanja (naravno, obe ove faze uključuju i druge
operacije nad objektima kao što su čitanje, obrada, upis
objekata)
Dvofazno zaključavanje
Za transakciju se kaže da slijedi dvofazni protokol ako
sve operacije zaključavanja (read_lock, write_lock)
prethode prvom otključavanju.
Takva transakcija ima dvije faze i to:
◦ fazu širenja (zaključavanja) i
◦ fazu skupljanja (otključavanja)
Dvofazno zaključavanje može zaključati dosta objekata.
U nekim momentima može držati zaključane i objekte
koji joj više nisu potrebni.
Iz tih razloga neke druge transakcije mogu čekati duže
na izvršenje. To je cijena dvofaznog zaključavanja.
Dvofazno zaključavanje
Konzervativno dvofazno zaključavanje
zahteva da transakcija zaključa sve
potrebne podatke prije početka izvršenja sa
predefinisanim read-skupom i write-
skupom.
Ako transakcija nešto ne može zaključati
ona čeka da se taj resurs oslobodi
Ova metoda nije primjenljiva jer se nekada
ne može znati šta se sve treba zaključati.
Dvofazno zaključavanje
Striktna dvofazno zaključavanje,
transakcija ne oslobađa ni jedan katanac
dok se transakcija ne završi.
Nijedna druga transakcija ne može
zaključati, čitati ni pisati podatak dok se
ne uradi commit ili abort.
Dvofazno zaključavanje
Rigorozno dvofazno zaključavanje
transakcija ne oslobađa ni jedan
ekskluzivni ni dijeljeni lok dok se
transkacija ne završi.
Lakša je za realizaciju nego strikno
zaključavanje
Dvofazno zaključavanje
I transakcija Vreme II transakcija
Ažuriranje seta S1
t1 (izvršava se X zaključavanje)
Čitanje seta S1
(zahtjev za S zaključavanjem)
čekanje
čekanje COMMIT ili ROLLBACK
(oslobađa se X
čekanje
zaključavanje)
čekanje se prekida
obnavlja se Čitanje seta S1 tn
(izvršava se S zaključavanje)
 NEPOVRATNO
ZAKLjUČAVANjE
NEPOVRATNO ZAKLjUČAVANjE
 Nepovratno zaključavanje podataka (engl. Deadlock) je
pojava kada svaka transakcija u skupu od dvije ili više
transakcija čeka za nekim resursom koji je zaključan od
druge transakcije iz tog skupa.
T1 i T2 su nepovratno
zaključane u parcijalnom
I transakcija Vreme II transakcija izvršenju, Transakcija T1 čeka
Read_lock(Y) t1 u redu za podatkom X, koji je
Read_item(Y) zaključan od
Read_lock(X) transakcije T2 dok T2 čeka u
redu za podatak Y koji je
Read_item(X) zaključan od transakcije T1.
Write_lock(X) Međutim, ni transakcija T1 ni
T2 niti bilo koja transakcija
Write_lock(Y) ne mogu pristupiti podatku X
i Y.
tn
Nepovratno zaključavanje
Jedan od načina da se spreči deadlock jeste da
se koristi preventivni protokol.
Ovaj protokol zahtjeva da svaka transakcija
na početku zaključa sve resurse (podatke) koji
joj trebaju. Ako joj svi resursi nisu dostupni
transakcije ne vrši nikakvo zaključavanje i
takva transakcija čeka neko vrijeme i opet
pokušava izvršiti zaključavanje.
Ovo rešenje smanjuje sposobnost
konkurentnog pristupa.
Nepovratno zaključavanje
Drugi način prevencije jeste na bazi
vremenske oznake (engl. Timestamp).
Koncept timestamp jeste da se svakoj
transakciji dodijeli jedinstven identifikator
zvani timestamp TS(T) koji se definiše na
osnovu vremena startanja transakcije.
Ako je transakcija T1 startala prije
transakcije T2 tada je TS(T1) < TS(T2).
DEADLOCK - TimeStamp
Ovaj protokol se zasniva na sledećim pravilima:
◦ Wait-die – Ako je TS(T1) < TS(T2) tada (T1 je
startala prije) T1 ima dozvolu da čeka inače ako je
TS(T1) >= TS(T2) (T1 je startala kasnije) T1 se
prekida i startuje kasnije sa istim TS {Starija
transakcija čeka a mlađa se ukida i kasnije ponovno
starta}
◦ Wound-wait – ako je TS(T1) < TS(T2) tada se
prekida T2 i restartuje kasnije sa istim TS inače je
dozvoljeno da T1 čeka {Mladja transakcija čeka a
starija se ukida i kasnije ponovno starta}
DEADLOCK - TimeStamp
U Wait-die, starijijoj transakciji je
dozvoljeno da čeka na mlađu
transkakciju, ukoliko mlađa transakcija
zahteva podatak koji drži starija,
transakcija se poništava i restartuje.
Druga grupa protokola za prevenciju
deadlocka ne zahteva vremenske oznake,
one uključuju no waiting (NW) i cautious
waiting (CW) algoritme.
No waiting algoritam
Kod no waiting algoritma, kada transakcija
nije u mogućnosti da zaključa podatak ona
se odmah prekida i restartuje nakon
izvjesnog vremena bez provjere da li se
podatak oslobodio.
Ova šema može prouzrokovati velik broj
prekidanja i restartanja transakcija što samo
po sebi znači mnogo upisivanja po
diskovima, što proizvodi usporenja sistema.
Cautious waiting
Cautious waiting algoritam predlaže da se
pokuša smanjiti broj nepotrebnih
prekida/restartovanja.
Pretpostavimo da transakcija T1 pokušava da
zaključa podatak X ali nije u stanju da to učini
jer je X zaključan od neke druge transakcije T2,
u tom slučaju važi pravilo:
◦ Ako transakcija T2 nije blokirana (ne čeka neki drugi
objekat) tada je T1 blokirana i ima dozvolu da čeka,
ona čeka inače ako nema dozvolu za čekanje T1 se
prekida. Blokiranim transakcijama se mjeri vrijeme
b(T) i na osnovu njega se transakcije poništavaju.
Još jedan pristup je detekcija deadlock-a, gde sistem proverava stanje
da li deadlock zaista postoji
Ova solucija je atraktivnija ako znamo da će biti mešanje između
transakcija to jest ako različite transakcije retko pristupaju istom
podatku u isto vreme.
To se može desiti ako su transakcije kratke i svaka transakcija se
zaključava samo nekoliko podataka ili je opterećenje transakcije malo.
ako su transakcije duge i svaka transakcija koristi mnogo podataka ili
opterećenje transakcije je prilično veliko to može biti korisno za
korištenje šeme za prevenciju deadlocka.
Jednostavan način za otkrivanje deadlocka se vrši konstrukcijom i
održavanje wait-for grafa u kom se navode podaci koji čvor
(transakcija) čeka na završetak transakcije.
Ako graf ima ciklus tada u njemu postoji deadlock
Jedan od problema sa ovim pristupom je pitanje
određivanja kada sistem treba da proveri da li ima deadlock.
Kriterijumi koji se mogu koristiti su broj transakcija koji se
trenutno izvršava ili vremenski period nekoliko transakcija
koje čekaju da zaključaju podatak.
Ako je sistem u stanju deadlock, neke transakcije koje
izazivaju deadlock trebaju se prekinuti i te transakcije se
nazivaju žrtve odnosno u engleskoj literaturi poznate pod
nazivom Victim selectiom.
Algoritam za odabir žrtava omogućava da transakcije sa
više ažuriranja, dužim vremenom izvršenja nastave sa
radom.
Još jedan jednostavan način detekcije
deadlocka je upotreba vremenskih oznaka
(engl.timestamp). u ovom metodu, ako
transakcija čeka duže od definisanog
vremena , sistem pretpostavlja da
transakcija je možda u deadlock ili je
prekinuta bez obzira da li postoji deadlock
ili ne.
Izgladnjivanje (engl. starivation)
Slučaj kada transakcija ne može izvršavati
nedefinisano dugo vremena dok se druge
transakcije izvršavaju normalno. T
o se može javiti ako je plan za zaključavanje
“nepravedan” odnosno ako se pojedinim
transakcijama daju veliki ili mali prioriteti tako
da neka transakcija ne može da dođe do resursa.
Jedan od metoda za rešavanje je ‘poštena’
raspodela resursa npr. po principu prva
transakcija se pojavi - prva se izvršava.
 OSTALE TEHNIKE
KONTROLE
KONKURENTOSTI
TEHNIKE KONTROLE
KONKURENTNOSTI
Kontrola konkurentnosti na bazi TimeStamp
redosleda
Viševerzijska kontrola konkurentnosti
Tehnika validacije (optimistička) kontrola
konkurentnosti
Granularnost podataka i višestruko granularno
zaključavanje
Upotreba katanaca za kontrolu konkurentnosti u
indeksima
Ostale kontrole konkurentnosti
Kontrola konkurentnosti na bazi
TimeStamp redosleda
Svakoj transakciji se dodeljuje jedinstveni
identifikator u redosledu u kome su transakcije
dospele u sistem, pa se identifikator može tretirati
kao vreme njenog početka
Konflikti u izvršenju transakcija nastaju kada
neka transakcija zahteva da „vidi“ neki podatak
kojeg je „mlađa“ transakcija ažurirala ili kada
neka transakcija hoće da ažurira neki podatak
kojeg je mlađa transakcija već ažurirala ili videla.
Konflikti se razrešavaju ponovnim startovanjem
„starije“ transakcije.
Kontrola konkurentnosti na bazi TimeStamp
redosleda
Svakom objektu baze podataka pridružuju se dve
oznake:
RMAX, najveći identifikator transakcije koja je
uspešno izvršila čitanje posmatranog objekta, i
UMAX, najveći identifikator transakcije koja je
uspešno izvršila ažuriranje posmatranog objekta
U ovoj tehnici nema zaključavanja objekata BP pa
samim time ni deadlock-a, integritet je očuvan
Međutim, tehnika vremenskog označavanja obično
dovodi do toga da se veliki broj transakcija
poništava i ponovo startuje
Kontrola konkurentnosti na bazi TimeStamp
redosleda
Osnove timestamp izvršenja:
◦ Svakoj transakciji se prilikom početka izvršenja dodijeli timestamp
tako da se zna tačan redoslijed startanja transakcija TS(X)
◦ Read_TS(X) – metoda koja za podatak X daje zadnji TS koji je
uspješno pročitao podatak X
◦ Write_TS(X) – piše TS za zadnje uspješno pisanje podatka X
◦ Kada neka transakcija T pokušava da koristi Read_TS(X) i
Write_TS(X) osnovni TS algoritam poredi TS transakcije i upisani
TS posljednje uspješne transakcije. Ako poredak izvršenja
transakcija nije dobar vrši se poništenje transakcije T i ona se
ponovno starta sa novim timestampom. Sve transakcije koje su
koristile podatke nakon transakcije T se također poništavaju i
dešava se t.z. Kaskadni rollback.
◦ Deadlock se ne može desiti ali se može desiti periodični prekid i
restart transakcija
Viševerzijska kontrola konkurentnosti
Kod ove metode se prilikom ažuriranja čuvaju i
stare i nove vrijednosti podataka (više verzija)
Kada transakcija traži podatak odgovarajuća
verzija podatka se pronađe.
Kada se piše podatak uvijek se piše nova verzija
podataka a stara verzija se zadržava.
Međutim, više verzija podataka zahtjeva više
prostora.
Ekstremna verzija ovakvog načina rada su
vremenske baze koje čuvaju sve promjene u bazi.
U ovoj metodi postoji više verzija istog
podatka koji se čuva u bazi (X1,
X2,...,Xn). Za svaku verziju, odnosno
verziju podatka Xi čuvaju se dva
timestampa i to:
◦ Read_TS(Xi) – zadnje čitanje podatka Xi od
strane uspešne transakcije
◦ Write_TS(Xi) – zadnji timestamp transakcije
koja je uradila write podatka Xi
Transakcija T se poništava (abortira) i vrši
se njen rollback ako T:
◦ Pokušava upisati podatak X iza već upisanog
podatka X u transakciji koja je startana kasnije
◦ Ako postoji čitanje podatka X transakcije koja
je startana iza transakcije T. Inače se podatak
X piše sa novom verzijom u bazu od strane
transakcije T
Ako Transakcija T koristi read_item(X) i
nađe verziju Xi koji ima veče vrijeme
pisanja transakcije (startana kasnije) tada
se vrača odgovarajuča verzija X i upisuje
se TS za read_TS(Xi) koje je jednako
max(read_TS(Xi) ili TS(T)). Read
operacija je uvijek uspješno izvršena
Tehnika validacije (optimistička)
kontrola
Kod tehnike validacije kontrole konkurentnosti
unaprijed se ne vrši nikakva kontrola.
Kod ove metode se ažuriranje vrši tek kada se
transakcija završi.
Za vrijeme izvršenja transakcije ažuriranje se
radi na lokalnoj kopiji.
Na kraju transakcije vrši se validacija.
Sve informacije potrebne za validaciju
obezbjeđuje sistem i ako je validacija uspješna
transakcija se prihvata.
Granularnost podataka i višestruko
granularno zaključavanje
Sve tehnike kontrole konkurentnosti
pretpostavljaju da se baza sastoji od
imenovanih podataka. Podatak iz baze
može biti:
◦ Polje sloga baze
◦ Slog baze
◦ Bloka na disku
◦ Cijele datoteke
◦ Cijele baze
Granularnost podataka
 Granularnost ukazuje na nivo detalja ili sumarizacije
jedinica podataka u bazi podataka. Što više detalja tu ima,
to je niži nivo granularnosti.
 Što manje detalja tu ima to je viši nivo granularnosti
 Zaključavanje veće granule uvodi više zabrana za pristup
podacima (baza, datoteka).
 Ako se koriste manje granule (polje, slog) tada ima više
katanaca – znači više katanaca se postavlja i skida.
 U tom slučaju potrebno je više prostora za tabele katanaca
odnosno više vremena za izvršenje zaključavanja tj
potrebno je više prostora i vremena za read_TS i write_TS.
Granularnost podataka
Optimalna veličina granule zavisi od tipa
transakcija odnosno od aplikacije, ako
transakcija pristupa malom broju slogova tada
je bolje zaključavati slogove.
Ako transakcija prilazi većem broju slogova
tada je bolje zaključavati blok ili čak datoteku.
Veličina granule zavisi od vrste transakcije.
Najbolja varijanta je da baza podržava
zaključavanja raznih tipova granula
Ostale kontrole konkurentnosti
problem koji se javlja sa ubacivanjem i brisanjem slogova,
taj problem je poznat pod nazivom kao fantomski problem
Fantomski problem se pojavljuje kada transakcija T upiše
slog a druga transakcija pretražuje slogove sa uslovom koji
bi uključio i ovaj novi slog u rezultat ali ga ne uključuje.
Kada se novi podatak ubacuje njemu se ne može pristupiti
dok se operacija ne kompletira. Takav podatak je
eksluzivno zaključan. Katanci se oslobađaju istovremeno i
upisuje se timestamp od transakcije
Pre brisanja postavlja se eksluzivni lok na početku. Za
timestamp protokol mora biti siguran da nije bilo čitanja
nakon zaključavanja.
Reza (engl. latch)
Reza je kratki katanac koji se obično
koristi za izvršenje kratkih operacija koje
ne mogu proizvesti deadlok ili slične
probleme. Katanac se koristi za vrijeme
pisanja bafera na disk da ne bi došlo do
ažuriranja bloka za vrijeme pisanja.

You might also like