Re: Baze - TS algoritam
Evo ti Bojovicev algoritam pa uporedjuj:
Begin Protokol Vremenskog Markiranja
1.Svaka transacija Tik pre startovanja dobija vremensku marku TS(Tik) cija vrednost odgovara poziciji transakcije
u ustanovljenom serijskom redosledu.
2. Case (operacija) of
a) Read(X):
if TS(T) < WTS(X) then
Reject ( Read (X) );
Rollback (X);
TS(T) := nova vrednost, veca od svih postojecih;
Restart; // restartuj je sa novom vremenskom markom
else
Read(X);
RTS(X) := Max ( RTS(X), TS(T) );
end_if
b) Write (X):
if TS(T) < RTS(X) then
Reject ( Write (X) );
Rollback (T);
TS(T) := nova vrednost, veca od svih postojecih;
Restart (T);
else if TS(T) < WTS(X) then
Ignore ( Write (X) ); // ignorisi sa izvrsavanjem Write(X)
Continue_T; // nastavi sa izvrsavanjem transakcije T
else
Write (X);
WTS(X) := Max ( WTS(X), TS(T) );
end_if
c) Commit(T):
if ( TS(T) ima takvu vrednost, da je zadovoljen unapred utvrdjeni serijski redosled tr. ) then
if ( TS(T) = minimalnoj vrednosti TS svih nepotvrdjenih transakcija) then
Commit (T);
else
Set_Commit_flag (T); // inace postavi commit fleg transakcije T
end_if
else
Reject ( Commit (T) );
Rollback (T);
TS(T) := nova vrednost, veca od svih postojecih;
Restart (T);
for each Ti | Commit_flag (Ti) and TS(Ti) > TS(T) do // za sve transakcije Ti koje imaju postavljen commit fleg i imale suvremensku marku vecu od transakcije T u pocetnom, uvrdjenom serijskom redosledu
Reset_Commit_flag (Ti); // resetuj njihov commit fleg
Rollback (Ti); // ponisti ih
TS(Ti) := nova, vrednost, veca od svih postojecih; // dodeljuj im redom nove, najvece vremenske marke
Restart (Ti); // i restartuj ih
end_for
end_if
End Protokol Vremenskog Markiranja
Vecina stavki ima i Bojoviceve komentare, ali, kao sto rekoh, sve zajedno staje na 4 strane A4 formata, ako ti ovo nije dovoljno, moraces da kopiras
Ipak, nadam se da sam ti pomogao
Pozdrav,
Nikola
Begin Protokol Vremenskog Markiranja
1.Svaka transacija Tik pre startovanja dobija vremensku marku TS(Tik) cija vrednost odgovara poziciji transakcije
u ustanovljenom serijskom redosledu.
2. Case (operacija) of
a) Read(X):
if TS(T) < WTS(X) then
Reject ( Read (X) );
Rollback (X);
TS(T) := nova vrednost, veca od svih postojecih;
Restart; // restartuj je sa novom vremenskom markom
else
Read(X);
RTS(X) := Max ( RTS(X), TS(T) );
end_if
b) Write (X):
if TS(T) < RTS(X) then
Reject ( Write (X) );
Rollback (T);
TS(T) := nova vrednost, veca od svih postojecih;
Restart (T);
else if TS(T) < WTS(X) then
Ignore ( Write (X) ); // ignorisi sa izvrsavanjem Write(X)
Continue_T; // nastavi sa izvrsavanjem transakcije T
else
Write (X);
WTS(X) := Max ( WTS(X), TS(T) );
end_if
c) Commit(T):
if ( TS(T) ima takvu vrednost, da je zadovoljen unapred utvrdjeni serijski redosled tr. ) then
if ( TS(T) = minimalnoj vrednosti TS svih nepotvrdjenih transakcija) then
Commit (T);
else
Set_Commit_flag (T); // inace postavi commit fleg transakcije T
end_if
else
Reject ( Commit (T) );
Rollback (T);
TS(T) := nova vrednost, veca od svih postojecih;
Restart (T);
for each Ti | Commit_flag (Ti) and TS(Ti) > TS(T) do // za sve transakcije Ti koje imaju postavljen commit fleg i imale suvremensku marku vecu od transakcije T u pocetnom, uvrdjenom serijskom redosledu
Reset_Commit_flag (Ti); // resetuj njihov commit fleg
Rollback (Ti); // ponisti ih
TS(Ti) := nova, vrednost, veca od svih postojecih; // dodeljuj im redom nove, najvece vremenske marke
Restart (Ti); // i restartuj ih
end_for
end_if
End Protokol Vremenskog Markiranja
Vecina stavki ima i Bojoviceve komentare, ali, kao sto rekoh, sve zajedno staje na 4 strane A4 formata, ako ti ovo nije dovoljno, moraces da kopiras
Ipak, nadam se da sam ti pomogao
Pozdrav,
Nikola
- Follow-Ups:
- Re: Baze
- From: "Milan Lazarevic" <ella@beotel.yu>
- Re: Baze
- References:
- Baze - TS algoritam
- From: "Milan Stanojevic" <milanst@ptt.yu>
- Baze - TS algoritam
Previous by date: Re: Baze - Transakcije - Brzo :)
Next by date: Re: opet internet
Previous by thread: Baze - TS algoritam Next by thread: Re: Baze
Previous by thread: Baze - TS algoritam Next by thread: Re: Baze