Základní kurs podávající průřez problematikou. Jsou popsány tři úrovně pohledu na data. Konceptuální modelování je založeno na ER modelu, databázové modelování se zabývá podrobně teorií relačního modelu dat (algebra, kalkul, základy SQL, algoritmy návrhu relační databáze, normální formy) a principy objektově-relačního modelu. Transakční zpracování a paralelní přístup, algoritmy implementace relačních operací.
13. 6. 2006, verze C
Zadání: Definujte 3 transakce na datových entitách A, B, C a sestavte maximálne paralelní rozvrh (tj. ne sériový) podle SQL úrovne izolace READ COMMITTED (S2PL na X() + 2PL na S()). K rozvrhu sestrojte graf pro detekci uváznutí (deadlock).
Jak slozita transakce se po nas chce? Pze zadani by melo IMHO splnit:
Transakce jsou 3, vic paralelneji to uz asi udelat nejde a splnuje to READ COMMITTED. Uznava tohle Skopal nebo strhava body?
A graf pro detekci uvaznuti...v jakem okamziku? Je to preci jen trochu dymamicka struktura. (teda, zde by to bylo jedno, ale pokud bych se pustil do neceho slozitejsiho...)
Zde je graf uváznutí 3 vrcholy a žádné hrany, protože nikdo na nic nečeká
Jasne, ja chapu co ten graj je, jak se dela a pisu, ze tady by to bylo jedno. Ale predstavme si nejaky jiny rozvrh s jinymi transakcemi, kde se skutecne ceka. Co tam? Ten graf bude na zacatku rozvrhu a uprostred vypadat uplne jinak...takze v kterem kroku ho "vypsat"? Pokud by nastal deadlock, tak predpokladam, ze pri nem, ale pokud nenastane?
Ja si se Skopalem psal maily. Ona totiz cela ta pisemka je dost volne zadana a proste divna, ale to uz bohuzel musime prezit a doufat, ze ostatni predmety/zkousky budou v tomhle smeru normalnejsi.
Co jsem se dozvedel
1) ER modelovani - zadne spravne reseni neexistuje, jde o to, abychom dokazali, ze umime pracovat se zadanim a aby z nas vylezlo neco smysluplneho a syntakticky spravneho. Hodnoceni je hodne mirne a vetsinou s timhle problemy nebyvaji
2) Precedencni graf - abort transakce. Skopalovi se nechcou vymyslet dve zadani a protoze tam musi kvuli zotavitelnosti dat nejake aborty, a nechce, aby obtiznost kresleni precedencniho grafu klesala, tak mame kreslit i abortovane transakce. Nicmene -- protoze to je vlastne blbost, tak spravne reseni je oboji - jak s abortovanyma, tak neabortovanyma transakcema.
3) Sipky mezi WW,WR,RW se kresli bez ohledu na to, jestli nekde predtim nastal COMMIT nebo ABORT, ty proste v tehle fazi uplne ignorujeme, i kdyby v tom rozvrhu byly ty transakce totalne seriove. Ve slajdech ma trochu neco jineho, ale k tomu mi napsal, ze to je neco jako spatna terminologie autoru, ze nas zajimaji potencionalni konflikty...
K te tvoji otazce...IMHO nejlepsi je tam proste vymyslet neco smysluplneho...ne nic tezkeho, abys mel jistotu, ze to mas dobre, ale zase ne tak, abys vypadal jako uplnej ignorant, co to chce za kazdou cenu ochcat. Taky bys tam mohl napsat klidne
T1 T2 T3
COMMIT COMMIT COMMIT
a pak se hadat, ze jsi zadani splnil, ale Skopal dle meho neni v tomhle prilis matfyzacky a definice a protipriklady mu nic nerikaji ::D
Jo, takže to, že ty aborty tam jsou jenom kvůli zotavitelnosti, znamená, že zotavitelnost zkoumám jen tak, že sleduju, jestli nějaká transakce, co čte data, který změní ta abortovaná, necommituje před tím, než se ta abortovaná abortne? Už se to tady řešilo stokrát, ale jak tak koukám, tak v polovině případů takhle a v polovině tak, že se zkoumaj navzájem i transakce který obě commitujou... Tušíte někdo, jak by to mělo být?