DISTRIBUITE Pagina 1 Stefanescu Cristina, Master IISC, anul II Stefanescu Cristina-Gabriela, Master IISC, anul II CUPRINS 2 Introducere........................................................................................................................... 3 2.1 Baze de date distriuite.................................................................................................... 3 2.2 Tranzac!ii "n siste#e de aze$e de date..................................................................................5 % Contro$u$ tranzac ii$or &i Contro$u$ concuren ei ..............................................................................6 %.1 Instruc iuni S'L (o$osite in contro$u$ tranzac ii$or ....................................................................7 %.2 Tranzac!ii "n siste#e de aze$e de date distriuite....................................................................9 ) *rotoco$u$ de $ocare in dou+ (aze............................................................................................. 18 ).1 *rotoco$u$ de co#itere "n dou+ (aze ,2* Co##it- . structur+/ (unc!ionare.....................................18 ).2 *rotoco$u$ de $ocare "n dou+ (aze ,2.*L-............................................................................21 ).% Co#0ara!ie "ntre 2 *C si 2 *L..........................................................................................24 ).) Conc$uzii.................................................................................................................... 25 1 Bi$io2ra(ie........................................................................................................................ 26 Pagina 2 Stefanescu Cristina-Gabriela, Master IISC, anul II 1 INTRODUCERE Baze$e de date re0rezint+ un conce0t actua$/ care i.a 2+sit uti$itatea "n (oarte #u$te do#enii i care e3o$ueaz+ "n (iecare zi. Caracteristica 0rinci0a$+ a a0$ica!ii$or de aze de date const+ "n (a0tu$ c+ accentu$ este 0us 0e o0era!ii$e de #e#orare 4i re2+sire e(ectuate asu0ra unui 3o$u# #are de date 4i #ai 0u!in asu0ra o0era!ii$or de 0re$ucrare a acestora. *rinci0a$a o0era!ie care a0are "n a0$ica!ii$e de aze de date este re2+sirea date$or "n sco0u$ o!inerii de in(or#a!ii din aza de date. Acesta este sensu$ e5isten!ei oric+rei aze de date. A$+turi de o0era!ia de re2+sire/ a0ar #ai #u$t sau #ai 0u!in (rec3enat/ o0era!ii de #e#orare 6 0entru introducerea de noi date "n aza de date/ 4ter2ere 6 0entru date$e de3enite inuti$e 4i de actua$izare a unor date de7a e5istente "n aza de date. Un siste# de 2estiune a aze$or de date ,S8BD- este un siste# de 0ro2ra#e care 0er#ite uti$izatoru$ui de(inirea/ crearea 4i "ntre!inerea azei de date 0recu# 4i accesu$ contro$at $a aceasta. Deci S8BD const+ "n e$e#ente de so(t9are care interac!ioneaz+ cu 0ro2ra#e$e a0$ica!ie a$e uti$izatoru$ui 4i cu aza de date. :1; 1.1 BAZE DE DATE DISTRIBUITE Siste#e$e de aze de date au e3o$uat de $a stadiu$ "n care (iecare a0$ica!ie "4i "ntre!inea 0ro0ria az+ de date/ $a ce$ "n care date$e sunt de(inite 4i 2estionate centra$izat. Acu# "ns+/ te<no$o2ia aze$or de date distriuite 0oate sc<i#a #odu$ de $ucru centra$izat "ntr.unu$ descentra$izat. Te<no$o2ia S8BDD constituie una din rea$iz+ri$e #a7ore "n do#eniu$ siste#e$or de aze de date. O az+ de date distriuit+,distriuted dataase.DDB- este o co$ec!ie de #ai #u$te aze de date intercore$ate $o2ic 4i distriuite "ntr.o re!ea. Un siste# distriuit de 2estiune a aze$or de date,distriuted dataase #ana2e#ent s=ste# .distriuted DBMS .DDBMS- este un siste# so(t9are care 0er#ite #ana2e#entu$ aze$or de date distriuite 4i (ace distriu!ia trans0arent+ 0entru uti$izator. Ter#enu$ de siste# de aze de date distriuite se re(er+ $a o co#ina!ie de aze de date distriuite 4i $a siste#e distriuite de 2estiune Siste#e$e de aze de date distriuite sunt si#i$are siste#e$or distriuite de (i4iere ,Distriuted >i$e S=ste#s . D>S-/ "n sensu$ c+ a#e$e (aci$iteaz+ accesu$ $a date stocate distriuit/ dar sunt 4i di(eren!e? Pagina 3 Stefanescu Cristina-Gabriela, Master IISC, anul II @n D>S uti$izatoru$ treuie s+ cunoasc+ $oca!ia date$orA DDBMS asi2ur+ accesu$ trans0arent $a dateA uti$izatoru$ 0erce0e aza de date distriuit+ ca 0e o az+ de date unic+/ c<iar dac+ aceasta este distriuit+ 0e #ai #u$te site.uri 4i une$e date sunt (ra2#entate sau re0$icate. Avantajele bazelor de date distribuite: Siste#e$e de aze de date distriuite 0ot s+ o(ere ur#+toare$e caracteristici? Inde0enden!a date$or (a!+ de su0ortu$ (izic de #e#orare? sc<e#a conce0tua$+ de(ine4te structura $o2ic+ a date$or/ inde0endent+ de 0$at(or#a de #e#orare 4i 0oate (i trans0us+ "n di(erite sc<e#e (izice/ de0endente de or2anizarea su0ortu$ui de #e#orareA Trans0aren!+ a distriu!iei ,"n re!ea-? "nsea#n+ c+ uti$izatoru$ nu treuie s+ cunoasc+ deta$ii a$e distriu!iei date$or "n re!ea/ atBt ca $oca$izare cBt 4i ca nu#e a$e entit+!i$orA Trans0aren!+ 0ri3ind re0$icarea 4i (ra2#entarea date$orA Co$u# de stocare a date$or crescutA Si2uran!+ de (unc!ionare ,re$iai$it=- 4i dis0onii$itate ,a3ai$ai$it=- crescut+ ,re$iai$it= 6"nsea#n+ 0roai$itatea ca siste#u$ s+ (ie "n (unc!iune "ntr.un anu#it #o#ent de ti#0A a3ai$ai$it= 6"nsea#n+ 0roai$itatea ca un siste# s+ (ie dis0onii$ continuu "ntr.un anu#it inter3a$ de ti#0-A Deoarece date$e 4i siste#u$ de 2estiune sunt distriuite "n #ai #u$te site.uri/ atunci cBnd unu$ din site.uri s.a de(ectat/ a$te site.uri 0ot s+ continue s+ (unc!ioneze 4i uti$izatorii s+ acceseze ce$ 0u!in o 0arte din date. Dezavantajele bazelor de date distribuite: Co#0$e5itate #ai ridicat+ ,(a!+ de siste#e$e centra$izate- 0ri3ind 0roiectarea/ ad#inistrarea/ "ntre!inereaA Di(icu$t+!i su0$i#entare ,(a!+ de siste#e$e centra$izate- datorit+ necesit+!ii de 0re$ucrare distriuit+ a intero2+ri$or 4i de contro$ a$ tranzac!ii$or distriuiteA Securitatea necesit+ #ecanis#e s0ecia$e de 0rotec!ie ,autenti(icare/ cri0tarea date$or- datorit+ co#unica!ii$or 0rin re!eaA Di(icu$tatea de #en!inere a inte2rit+!ii date$or 6 care necesit+ o0era!ii "n re!ea/ care 0ot "nc+rca #u$t ca0acitatea re!e$eiA Pagina 4 Stefanescu Cristina-Gabriela, Master IISC, anul II Li0sa de standarde 0entru structurarea date$or 4i co#unicarea "ntre site.uri 0entru distriuirea date$orA I#aturitatea te<no$o2ii$or 4i a too$set.uri$orA Li0sa de e50erien!+ a 0ersona$u$ui/ datorit+ nout+!ii te<no$o2ii$or. :2; 1.2 TRANZACDII @N SISTEME DE BAZELE DE DATE O tranzacie este o unitate $o2ic+ de 0re$ucrare care asi2ur+ consisten!a 4i si2uran!a azei de date. @n 0rinci0iu/ orice e5ecu!e a unui 0ro2ra# se 0oate considera o tranzac!ie dac+ aza de date este "ntr.o stare consistent+ atBt "nainte cBt 4i du0+ e5ecu!ia sa. Consisten!a azei de date este 2arantat+ inde0endent de (a0tu$ c+ ? Tranzac!ia a (ost e5ecut+t+ "n #od concurent cu a$te tranzac!ii A Au a0+rut de(ecte "n ti#0u$ e5ecu!ei tranzac!iei. @n 2enera$/ o tranzac!ie const+ dintr.o sec3en!+ de o0era!ii de citire 4i scriere a azei de date/ $a care se adau2+ o serie de o0era!ii de ca$cu$. Baza de date 0oate (i "ntr.o stare te#0orar inconsistent+ "n ti#0u$ e5ecut+rii tranzac!iei dar treuie s+ (ie "n st+ri consistente atBt "nainte cBt 4i du0+ e5ecu!ia acesteia. O tranzac!ie este o o0era!ie indi3izii$+ de acces $a aza de date care? (ie se e5ecut+ cu succes toate ac!iuni$e 4i se ter#in+ cu o 3a$idare a #odi(ic+ri$or e(ectuate asu0ra azei de date ,co##it- (ie nu 0oate e(ectua ,din di(erite #oti3e- toate ac!iuni$e 4i este aandonat+ 4i anu$at+ ,aort/ ro$$acE- :1 ;/:2; Pagina 5 Stefanescu Cristina-Gabriela, Master IISC, anul II 2 CONTROU TRAN!AC IIOR "I CONTROU CONCUREN EI O tranzac!ie nu se ter#in+ "ntotdeauna cu succes totu4i orice tranzac!ie treuie s+ se ter#ine/ indi(erent de situa!ia e5istent+ ,c<iar 4i "n cazu$ unor de(ecte-. Dac+ tranzac!ia reu4e4te s+ e5ecute cu succes toate o0era!ii$e 0re3+zute/ atunci aceasta se 3a ter#ina 0rintr.o o0era!ie de 3a$idare ,co##it-. @n sc<i#/ dac+ dintr.un #oti3 sau a$tu$ tranzac!ia nu reu4e4te s+.4i e5ecute co#0$et o0era!ii$e 0re3+zute/ atunci se 3a ter#ina 0rintr.o o0era!ie de aortare ,abort sau rollbac$-. Moti3e$e 0entru care o tranzac!ie se aorteaz+ sunt nu#eroase/ e$e 0ot (i interne tranzac!iei sau e5terne acesteia ,e5. ? detectarea de c+tre S8BD a unei situa!ii de dead$ocE-. @n cazu$ aort+rii/ e5ecu!a tranzac!iei este o0rit+ iar e(ecte$e tuturor o0era!ii$or 0e care $e.a e5ecut+t 0Bn+ "n ace$ #o#ent sunt anu$ate ast(e$ "ncBt aza de date re3ine $a starea de dinaintea $ans+rii tranzac!iei. Co#anda de 3a$idare a unei tranzac!ii res0ect+ dou+ re2u$i? indic+ S8BD.u$ui #o#entu$ de $a care e(ecte$e tranzac!iei 0ot (i re($ectate "n aza de date 4i de3in 3izii$e a$tor tranzac!ii A #arc<eaz+ #o#entu$ "nce0Bnd de $a care e(ecte$e tranzac!iei nu #ai 0ot (i anu$ate ,tranzac!ia nu se #ai 0oate aorta- 4i #odi(ic+ri$e e(ectuate "n aza de de de3in 0er#anente. O0era!ia de 3a$idare este 3ita$+ "n cazu$ siste#e$or concurente,distrriuite-/ deci aco$o unde este 0osii$+ e5ecutarea "n ace$a4i ti#0 a #ai #u$tor tranzac!ii care acceseaz+ aceea4i az+ de date. *rin 3a$idare se 0ot 0re3eni o serie de (eno#ene nedorite cu# este aortarea "n cascad+ a tranzac!ii$or. S+ 0resu0une# c+ o tranzac!ie T este aortat+ du0+ ce a e(ectuat una sau #ai #u$te o0era!ii de actua$izare a azei de date. @n acest caz date$e a$terate de c+tre tranzac!ia T 3or (i readuse $a 3a$ori$e 0e care $e.au a3ut "nainte de a (i #odi(icate de aceasta. Este "ns+ 0osii$ ca une$e dintre tranzac!ii$e e5ecutate "n #od concurent cu tranzac!ia T s+ (i accesat aceste date "nainte de aortarea $ui T. Aceste tranzac!ii 3or treui s+ (ie/ $a rBndu$ $or/ aortate deoarece au a3ut acces $a date inconsistente din aza de date iar rezu$tate$e 0roduse de e$e 0ot (i co#0ro#ise. Acest e(ect se 0oate 0ro0a2a "n continuare 4i asu0ra a$tor tranzac!ii/ 0e un nu#+r nede(init de ni3e$e/ conducBnd $a aortarea "n cascad+ a tranzac!ii$or. >eno#enu$ este cunoscut "n $iteratura de s0ecia$itate su nu#e$e de e(ect do#ino. Dac+ se (o$ose4te un #ecanis# de 3a$idare care res0ect+ ce$e dou+ re2u$i de #ai sus/ atunci a0ari!ia (eno#enu$ui de aortare "n cascad+ de3ine i#0osii$+. @ntr.ade3+r/ con(or# 0ri#ei re2u$i/ nici o tranzac!ie nu 3a 0utea accesa date$e #odi(icate de tranzac!ia T decBt du0+ 3a$idarea Pagina 6 Stefanescu Cristina-Gabriela, Master IISC, anul II acesteia. *e de a$t+ 0arte/ con(or# re2u$ii a doua/ du0+ 3a$idarea sa/ tranzac!ia T nu #ai 0oate (i aortat+/ deci nu 0oate dec$an4a un $an! de aort+ri "n cascad+. Ca$idarea unei tranzac!ii #arc<eaz+/ din 0unct de 3edere $o2ic/ ter#inarea acesteia. Ca$idarea nu se 0oate (ace "nainte ca o0era!ii$e s0eci(icate 0rin codu$ tranzac!iei s+ (ie e5ecut+te inte2ra$ 4i "nainte ca tranzac!ia s+ a7un2+ "ntr.o stare "nce0Bnd de $a care e5ist+ certitudinea c+ nu #ai 0oate (i aortat+. *Bn+ "n #o#entu$ 3a$id+rii/ actua$iz+ri$e e(ectuate de tranzac!ie sunt in3izii$e a$tor tranzac!ii/ au caracter tentati3 4i 0ot (i oricBnd re3ocate ,odat+ cu aortarea tranzac!iei-. Du0+ 3a$idare actua$iz+ri$e se "nscriu cu caracter 0er#anent "n aza de date 4i de3in ire3ocai$e. Du0+ 3a$idare nu #ai este 0osii$+ aortatrea tranzac!ii$or. Tranzac!ii$e ar treui s+ con!in+ doar ace$e co#enzi de #ani0u$are care rea$izeaz+ o sin2ur+ #odi(icare asu0ra date$or. De e5e#0$u un trans(er de (onduri ,s+ s0une# 1FFFG- "ntre dou+ conturi ar treui s+ i#0$ice un deit a$ unui cont de 1FFFG 4i un credit a$ a$tui cont de 1FFFG. A#e$e ac!iuni ar treui s+ se "nc<eie cu succes sau s+ dea eroare "#0reun+. Creditu$ nu ar treui e5ecut+t (+r+ deit. 2.1 INSTRUC IUNI S'L >OLOSITE IN CONTROLUL TRANZAC IILOR E5ist+ dou+ c$ase de tranzac!ii? tranzacii D% 6 care con!in un nu#+r oarecare de $ocuri DML 4i 0e care ORACLE $e trateaz+ ca o sin2ur+ entitate sau o sin2ur+ unitate $o2ic+ de $ucru/ 4i tranzacii DD care con!in un sin2ur $oc DDL. O tranzac!ie nou+ este $ansat+ (ie i#ediat du0+ conectarea $a ser3eru$ de aze de date ,de e5e#0$u/ 0rintr.o sesiune S'LH*$us- (ie du0+ o co#and+ care a "nc<eiat tranzac!ia 0recedent+ ,e5ecu!a unui COMMIT sau ROLLBACI-/ cBnd este "ntB$nit 0ri#u$ $oc e5ecut+i$ DML sau DDL. O tranzac!ie se ter#in+ "n una din ur#+toare$e situa!ii ? H @ntB$nirea co#enzior COMMITJROLLBACI H S(Br4itu$ co#enzii DDL H A0ari!ia anu#itor erori ,DEADLOCI- H @ntB$nirea co#enzii EKIT 6 iesire din S'LH*$us H A0ari!ia unei erori de siste# Un $oc DDL este e5ecut+t auto#at 4i de aceea i#0$icit "nc<eie o tranzac!ie. Du0+ "nc<eierea unei tranzac!ii/ ur#+toru$ $oc e5ecut+i$ S'L 3a $ansa auto#at ur#+toarea tranzac!ie. Pagina 7 Stefanescu Cristina-Gabriela, Master IISC, anul II CBnd o tranzac!ie este "ntreru0t+ de o eroare serioas+/ de e5e#0$u o eroare de siste#/ "ntrea2a tranzac!ie este anu$at+. Aceasta 0re3ine erori$e datorate #odi(ic+ri$or nedorite asu0ra date$or/ 4i rea$izeaz+ "ntoarcerea tae$e$or $a st+ri$e de du0+ u$ti#u$ COMMIT. @n acest (e$ S'L 0rote7eaz+ inte2ritatea tae$e$or. Anu$area auto#ata este cauzat+ ce$ #ai des de c+tre o eroare de siste#/ ca de e5e#0$u o resetare a siste#u$ui sau o c+dere de tensiune. Erori$e de tastare a co#enzi$or/ ca de e5e#0$u tastarea 2resit+ a unor nu#e de co$oane sau "ncerc+ri$e de a rea$iza o0era!ii neautorizate asu0ra tae$e$or a$tor uti$izatori/ nu "ntreru0 tranzac!ia 4i nu rea$izeaz+ anu$area auto#at+. Aceasta se datoreaz+ (a0tu$ui c+ aceste erori sunt detectate "n cursu$ co#0i$+rii ,de c+tre *ARSER/ cBnd un $oc S'L este scanat 4i 3eri(icat-/ 4i nu "n ti#0u$ e5ecu!ei. Ur#+toare$e instruc!iuni S'L sunt uti$izate cBnd a0ar (ina$iz+ri ,co##it- sau re(aceri ,ro$$acE- ?COMMIT:LORI;A SACE*OINT nu#eMsa3e0ointA ROLLBACI:LORI; to :SACE*OINT; nu#eMsa3e0oint. De notat ca atBt COMMIT cBt 4i ROLLBACI sunt instruc!iuni S'L. Ce$e trei instruc!iuni S'L uti$izate 0entru contro$u$ tranzac!ii$or sunt e50$icate #ai 7os? CO%%IT&'OR() Sinta5a ? COMMIT:LORI;A *er#anentizeaz+ sc<i#+ri$e din tranzac!ia curent+ &ter2e toate 0uncte$e de sa$3are ,sa3e0oint- din tranzac!ie Ter#in+ tranzac!ia E$iereaz+ toate $oc+ri$e ,LocE- tranzac!iei Cu3antu$ c<eie LORI este o0!iona$ Uti$izatoru$ treuie s+ e50$iciteze s(Br4itu$ tranzac!iei "n 0ro2ra#u$ a0$ica!ie uti$izBnd COMMIT ,sau ROLLBACI-. Dac+ nu se (ina$izeaz+ e50$icit tranzac!ia 4i 0ro2ra#u$ se ter#in+ anor#a$/ u$ti#a tranzac!ie e5ecut+t+ 3a (i anu$at+. >ina$iz+ri i#0$icite ,co##it- a0ar "n ur#+toare$e situa!ii ? "nainte de o co#and+ DDL/ du0+ o co#and+ DDL/ $a "nc<iderea nor#a$+ a unei aze de date. Dac+ introduce!i un $oc DDL du0+ cBte3a $ocuri DML/ $ocu$ DDL cauzeaz+ a0ari!ia unui co##it "naintea 0ro0riei e5ecu!i/ inc<eind tranzac!ia curenta. A0oi/ dac+ $ocu$ DDL este e5ecut+t 0Bn+ $a ca0+t/ este 4i "nre2istrat ,co##it-. SA*EPOINT Sinta5a ? SACE*OINT nu#eMsa3e0oint E5e#0$u ? SACE*OINT ter#inareMactua$izari *oate (i uti$izat 0entru a "#0+r!i o tranzac!ie "n uc+!i #ai #ici Pagina 8 Stefanescu Cristina-Gabriela, Master IISC, anul II *uncte$e de sa$3are ,sa3e0oints- 0er#it uti$izatoru$ui s+ re!in+ toat+ #unca sa $a orice #o#ent din ti#0/ cu o0!iunea de a "nre2istra #ai tBrziu totu$/ a anu$a totu$ sau o 0arte din ea. Ast(e$/ 0entru o tranzac!ie $un2+/ se 0ot sa$3a 0+r!i din ea/ 0e #+sura e5ecu!ei/ $a s(Br4it "nre2istrBndu.se sau re(+cBndu.se con!inutu$ ini!ia$. La a0ari!ia unei erori nu treuie e5ecut+t din nou (iecare $oc. La crearea unui nou 0unct de sa$3are cu ace$a4i nu#e ca a$ unuia dinainte/ 0ri#u$ 0unct este 4ters. Nu#+ru$ #a5i# de 0uncte de sa$3are 0entru un 0roces uti$izator este i#0$icit 1. Aceast+ $i#it+ 0oate (i sc<i#at+. RO+AC(&'OR() to &SA*EPOINT) nu#e,-unct,salvare Instructiunea ROLLBACI este uti$izata 0entru a re(ace starea azei de date.Cu3antu$ c<eie N9orEN este o0!iona$. @ntoarcerea $a un 0unct de sa$3are este de ase#enea o0!iona$a. Dac+ se uti$izeaz+ ROLLBACI (+r+ c$auza TO SACE*OINT/ atunci ? se ter#in+ tranzac!ia se anu$eaz+ #odi(ic+ri$e din tranzac!ia curent+ se 4ter2 toate 0uncte$e de sa$3are din tranzac!ie se e$iereaz+ $oc+ri$e tranzac!iei :);/ :1; 2.2 TRANZACDII @N SISTEME DE BAZELE DE DATE DISTRIBUITE @n cadru$ unei aze de date distriuite "n noduri$e unei re!e$e/ accesu$ $a #u$titudinea de oiecte de date se rea$izeaz+ de oicei 0rin inter#ediu$ tranzac!ii$or. Se "n!e$e2e c+ tranzac!ii$e treuie s+ res0ecte re2u$i$e ACID. Deoarece tranzac!ii$e care sunt e5ecutate "ntr.un siste# distriuit 0ot 0re$ucra (ie date rezidente "ntr.un sin2ur $oc/ (ie date a#0$asate "n siste#e distincte/ 3o# distin2e tranzacii locale .i tranzacii /lobale. *ri#e$e au acces $a in(or#a!ii$e con!inute "n o sin2ur+ az+ de date $oca$+ 4i 0ot 0re$ucra aceste in(or#a!ii. Tranzac!ii$e 2$oa$e rea$izeaz+ accesu$ $a in(or#a!ii a#0$asate "n #ai #u$te aze de date $oca$e 4i/ desi2ur/ 0ot 0re$ucra aceste in(or#a!ii. Res0ectarea 0ro0riet+!i$or ACID "n 0rocesu$ e5ecu!iei tranzac!ii$or $oca$e rec$a#+/ 0ractic/ 0artici0area tuturor co#0onente$or siste#u$ui de 2estiune a azei de date i#0$icate "n 2estiunea tranzac!ii$or. Asi2urarea consisten!ei unei tranzac!ii oarecare treuie dat+ de 0ro2ra#atoru$ de a0$ica!ie/ care codi(ic+ tranzac!ia. *entru res0ectarea ato#icit+!ii tranzac!iei/ c<iar dac+ a0ar de(ec!iuni/ se 0oate (o$osi te<nica de #odi(icare Oa#Bnat+P/ sau te<nica #odi(ic+rii i#ediate a azei de date. @n 0ri#u$ caz/ #odi(ic+ri$e aduse azei de date sunt "nre2istrate "ntr.un O7urna$P/ Pagina 9 Stefanescu Cristina-Gabriela, Master IISC, anul II "ns+ e5ecu!ia tuturor o0era!iuni$or de "nre2istrare din tranzac!ie este a#Bnat+ 0Bn+ $a co#iterea 0ar!ia$+ a tranzac!iei ,rea#inti# c+ 0rin co#itere 0ar!ia$+ "n!e$e2e# situa!ia "n care ac!iunea (ina$+ a tranzac!iei a (ost e5ecutat+-. Modi(icarea i#ediat+ a azei de date const+ "n e(ectuarea sc<i#+ri$or azei de date atunci cBnd tranzac!ia este "nc+ "n stare acti3+A sc<i#+ri$e aduse de tranzac!ii ce se 2+sesc "n stare acti3+ se nu#esc #odi(ic+ri ne.co#ise. Res0onsai$itatea o0era!iuni$or de #ai sus re3ine contro$oru$ui ,sau O#ana2erP.u$ui- de tranzac!ii. @n (a0t/ acest contro$or/ 0rin oser3area #e#oriei secundare ,disc-/ ur#+re4te 3a$ori$e 3ec<i a$e tuturor oiecte$or de date asu0ra c+rora tranzac!ia a e(ectuat "nre2istr+ri/ iar dac+ tranzac!ia nu a co#0$etat e5ecu!ia sa/ restaureaz+ 3ec<i$e 3a$ori ast(e$ "ncBt a0arent tranzac!ia nu ar (i (ost niciodat+ e5ecutat+. Durai$itatea este "n sarcina contro$oru$ui de re3enire ,sau de recu0arare-. *rin 2r7a acestui su.siste#/ #odi(ic+ri$e aduse azei de date de c+tre o tranzac!ie sunt "nre2istrate 0e disc "naintea co#0$et+rii tranzac!iei. De ase#enea/ este asi2urat+ dis0onii$itatea unei in(or#a!ii su(iciente 0ri3ind #odi(ic+ri$e e(ectuate 4i "nre2istrate 0e disc/ ast(e$ "ncBt actua$iz+ri$e (+cute s+ 0oat+ (i reconstruite atunci cBnd siste#u$ de aze de date este re0ornit du0+ o de(ec!iune. @n s(Br4it/ contro$oru$ concuren!ei este su.siste#u$ care/ 0rintre a$te$e/ asi2ur+ res0ectarea 0ro0riet+!ii de izo$are. *rintre ti0uri$e de 0$ani(icare ce contriue $a si2urarea acestei 0ro0riet+!i #en!ion+# seria$izai$itatea de con($ict 4i seria$izai$itate de 3edere. @n cazu$ tranzac!ii$or 2$oa$e/ #en!inerea 0ro0riet+!i$or ACID este sensii$ #ai co#0$icat+/ a3Bnd "n 3edere (a0tu$ c+ $a e5ecu!ia unei 0$ani(ic+ri de tranzac!ii iau 0arte #ai #u$te noduri a$e unei re!e$e. De(ec!iuni$e a0+rute "n unu$ sau #ai #u$te din noduri/ ca 4i de(ec!iuni$e cana$e$or de co#unica!ie/ 3or conduce a0roa0e si2ur $a 0re$ucr+ri incorecte a$e in(or#a!ii$or. Din ar<itecura unei aze de date distriuite (ac 0arte dou+ co#0onente 0rinci0a$e? controlorul de tranzacii .i coordonatorul tranzaciilor. Aceste su.siste#e sunt a#0$asate "n noduri$e re!e$ei de ca$cu$atoare. 0uncia controlorului de tranzacii const+ "n res0ectarea 0ro0riet+!i$or ACID a$e tranzac!ii$or care 0re$ucreaz+ in(or#a!ii #e#orate "n nodu$ cu care contro$oru$ este asociat. Deoarece a3e# "n 3edere o az+ de date distriuit+/ se "n!e$e2e c+ "n re!ea 3or (i e5ecutate 4i tranzac!ii 2$oa$e/ care e(ectueaz+ o0era!iuni asu0ra date$or de0use "n #ai #u$te noduri. @n acest 0roces 3or co$aora contro$oare de tranzac!ii a#0$asate "n noduri$e cores0unz+toare. @ntr.un nod dat a$ re!e$ei/ "n care se des(+4oar+ 0re$ucrarea concurent+ a unui nu#+r de tranzac!ii/ contro$oru$ de tranzac!ii ocu0+ un $oc s0eci(ic "n acti3itatea a$2orit#u$ui de contro$ a$ concuren!ei. De ase#enea/ acest su.siste# are res0onsai$itatea con!inutu$ui 7urna$u$ui #en!inut "n 3ederea re3enirii du0+ de(ec!iuni. La rBndu$ s+u/ coordonatorul de tranzacii asociat unui nod/ diri7eaz+ e5ecu!ia tranzac!ii$or $oca$e 4i 2$oa$e ce sunt ini!iate 4i (unc!ioneaz+ "n nodu$ res0ecti3. >unc!ia de coordonare #en!ionat+ este s0eci(ic+ nu#ai #ediu$ui distriuit. @n sarcina coordonatoru$ui intr+ ini!ierea e5ecu!iei (iec+rei tranzac!ii/ se2#entarea tranzac!ii$or "n sco0u$ distriuirii su.tranzac!ii$or o!inute "n noduri adec3ate/ 0recu# 4i coordonarea "nc<eierii acti3it+!ii (iec+rei tranzac!ii. Se su$iniaz+ (a0tu$ c+ tranzac!ii$e 2$oa$e (ie co#it "n toate noduri$e "n care sunt e5ecutate su. tranzac!ii$e din care sunt (or#ate/ (ie sunt aandonate "n toate noduri$e. Pagina 10 Stefanescu Cristina-Gabriela, Master IISC, anul II @n $e2+tur+ cu de(ecte$e ce a0ar uneori "n siste#e$e centra$izate/ inc$usi3 "n ce$e care 0re$ucreaz+ aze de date/ treuie #en!ionate erori$e de ec<i0a#ent ,O<ard9areP-/ erori$e 0ro2ra#e$or/ deterioararea siste#e$or de discuri #a2netice. Te#a de(ec!iuni$or 0osii$e "ntr.un siste# distriuit care 2+zdue4te o az+ de date are 0articu$arit+!i e3idente. Deterioarea co#0onente$or unui nod/ de(ec!iuni a$e $inii$or de co#unica!ie/ 0erturarea #anierei ini!ia$e de 0arti!ionare a re!e$ei/ coru0erea #esa7e$or 0rin erori sunt ti0uri$e 0rinci0a$e de de(ecte ce au $oc "n #ediu distriuit. Atunci cBnd se de(ecteaz+ #ediu$ de co#unica!ie/ #esa7e$e trans#ise "ntre noduri sunt de oicei re.rutate. @n i0oteza dis0ari!iei cone5iunii "ntre dou+ noduri/ re!eaua 3a (i 0arti!ionat+ din nou. Erori$e care a0ar "n #esa7e sunt tratate de 0rotocoa$e$e de contro$ a$ 0rocesu$ui de co#unica!ie/ de e5e#0$u TC*JI*. *rocesarea tranzac!ii$or are ca sco0 0+strarea inte2rit+!ii azei de date. Treuie "ns+ 0recizat c+ #ecanis#e$e tranzac!iona$e nu sunt sin2ure$e care se ocu0+ de 0+strarea inte2rit+!ii. Mai 0recis/ 0rocesarea tranzac!ii$or se re(er+ doar $a dou+ as0ecte? Recu0erarea azei de date du0+ un incident ,dataase reco3er=- . se azeaz+ 0e inducerea unui anu#it ni3e$ de redundan!+ 0rin #e#orarea istoriei tranzac!ii$or "ntr. un a4a.nu#it N7urna$N ,$o2-. Desi acest as0ect nu (ace suiectu$ $ucr+rii de (a!+/ anu#ite e$e#ente te<nice 0ri3ind 7urna$izarea 3or (i uti$izate "n con!inuare. Contro$u$ inter(eren!e$or care 0ot a3ea $oc "ntre tranzac!ii$e care se e5ecut+ "n #od concurent ,concurrenc= contro$- . este un as0ect critic "n siste#e$e de a0$ica!ii OLT* ,On.Line Transaction *rocessin2-. Este 3ora des0re Ncontro$u$N ,4i nu nea0+rat Ne3itareaN- inter(eren!e$or deoarece/ de4i "ntotdeauna nedorite/ aceste inter(eren!e 0ot (i 0er#ise . "n anu#ite (or#e ine 0recizate . 0entru a cre4te 0er(or#an!e$e siste#u$ui. *entru a ec<i$ira cBt #ai ine 0er(or#an!a 4i si2uran!a/ constructorii de siste#e de 2estiune a aze$or de date au dez3o$tat #ai #u$te 0rocedee 0rin care inter(eren!e$e "ntre tranzac!ii$e concurente s+ 0oat+ (i contro$ate. Ce$ #ai r+s0Bndit este #ecanis#u$ azat 0e $ocarea ,$ocEin2- unor 0or!iuni a$e azei de date 0entru a interzice a$tor tranzac!ii accesu$ $a date$e res0ecti3e 0e durat+ unor o0era!iuni critice e(ectuate de o tranzac!ie. O a$t+ #etod+ este cea azat+ 0e a0$icarea unor N#+rci de ti#0N ,ti#esta#0in2- asu0ra tranzac!ii$or 4i a oiecte$or i#0$icate "n tranzac!ii. A#e$e 0rocedee ,0recu# 4i 0rocedee$e N<irideN- 0ornesc de $a 0re#isa 0esi#ist+ c+ inter(eren!e$e nedorite sunt oricBnd 0osii$e 4i c<iar 0roai$e/ deci se azeaz+ 0e 0re3enirea $or. E5ist+ "ns+ 4i o aordare o0ti#ist+/ care 0$eac+ de N0rezu#!ia de ne3ino3+!ieN 4i care "ncearc+ doar s+ de0isteze 4i s+ rezo$3e con($icte$e "n cazu$ "n care acestea a0ar. Toate #etode$e au a3anta7e 4i deza3anta7e/ (iecare d"ntre e$e se 0reteaz+ $a anu#ite a0$ica!ii 4i sunt inacce0tai$e "n cazu$ a$tora. *entru a ec<i$ira cBt #ai ine 0er(or#an!a 4i si2uran!a/ constructorii de siste#e de 2estiune a aze$or de date au dez3o$tat #ai #u$te 0rocedee 0rin care inter(eren!e$e "ntre tranzac!ii$e concurente s+ 0oat+ (i contro$ate. Ce$ #ai r+s0Bndit este #ecanis#u$ azat 0e $ocarea ,$ocEin2- unor 0or!iuni a$e azei de date 0entru a interzice a$tor tranzac!ii accesu$ $a date$e res0ecti3e 0e durat+ unor o0era!iuni critice e(ectuate de o tranzac!ie. O a$t+ #etod+ este cea azat+ 0e a0$icarea unor N#+rci de ti#0N ,ti#esta#0in2- asu0ra tranzac!ii$or 4i a oiecte$or i#0$icate "n tranzac!ii. Pagina 11 Stefanescu Cristina-Gabriela, Master IISC, anul II A#e$e 0rocedee ,0recu# 4i 0rocedee$e N<irideN- 0ornesc de $a 0re#isa 0esi#ist+ c+ inter(eren!e$e nedorite sunt oricBnd 0osii$e 4i c<iar 0roai$e/ deci se azeaz+ 0e 0re3enirea $or. E5ist+ "ns+ 4i o aordare o0ti#ist+/ care 0$eac+ de N0rezu#!ia de ne3ino3+!ieN 4i care "ncearc+ doar s+ de0isteze 4i s+ rezo$3e con($icte$e "n cazu$ "n care acestea a0ar. Toate #etode$e au a3anta7e 4i deza3anta7e/ (iecare d"ntre e$e se 0reteaz+ $a anu#ite a0$ica!ii 4i sunt inacce0tai$e "n cazu$ a$tora. :Q; +locare Idea 0e care se azeaz+ te<nica $oc+rii este (oarte si#0$+? o tranzac!ie care a "nce0ut s+ o0ereze asu0ra unor date treuie s+ interzic+ accesu$ a$tor tranzac!ii $a date$e res0ecti3e 0Bn+ "n #o#entu$ "n care o0era!ia se "nc<eie. @n acest ti#0/ date$e sunt N!inute su c<eieN ,to $ocE . a "ncuia/ a z+3or"-. Contro$u$ $oc+rii date$or este asi2ur+t de o co#0onent+ a S8BD.u$ui nu#it+ LocE Mana2er ,LM-. @n #o#entu$ "n care o tranzac!ie T dore4te s+ acceseze un anu#it oiect a$ azei de date 3a cere co#0onentei LM $ocarea oiectu$ui. Dac+ oiectu$ este $ocat de o a$t+ tranzac!ie/ tranzac!ia T 3a (i 0us+ "n stare de a4te0tare ,9ait- 0Bn+ cBnd oiectu$ este e$ierat. Se 0oate oser3a cu u4urin!+ c+ aceast+ #oda$itate de $ocare este 0rea restricti3+. Ano#a$ii$e a0ar doar "n cazu$ actua$iz+ri$or date$or/ ceea ce su2ereaz+ c+ o ra(inare a te<nicii i#0$ic+ (o$osirea a dou+ ti0uri de $oc+ri? +locare -artajat1 2s3are loc$ sau S loc$4 . *er#ite citirea oiectu$ui dar interzice #odi(icarea acestuia/ #oti3 0entru care #ai este nu#it+ N$ocare 0entru citireN ,read $ocE-. Mai #u$te tranzac!ii 0ot $oca si#u$tan 0entru citire un anu#it oiect. +locare e5clusiv1 2e5clusive loc$ sau 6 loc$4 . Interzice accesu$ a$tor tranzac!ii $a oiectu$ $ocat/ (ie 0entru citire/ (ie 0entru #odi(icare. B$ocarea e5c$usi3+ este #ai NtareN decBt $ocarea 0arta7at+/ (iind (o$osit+ doar 0entru actua$iz+ri/ #oti3 0entru care #ai este nu#it+ N$ocare 0entru scriereN ,9rite $ocE-. O situa!ie s0ecia$+ este cea "n care o tranzac!ie $oc<eaz+ 0entru citire un oiect 4i dore4te s+ o!in+ o $ocare e5c$usi3+. Dac+ oiectu$ res0ecti3 nu este $ocat 0arta7at 4i de c+tre a$te tranzac!ii/ $ocarea e5c$usi3+ este o!inut+ de tranzac!ia "n cauz+. *rocedeu$ de nu#e4te N0ro#o3area $oc+riiN ,$ocE 0ro#otion-. @n cazu$ ce$or #ai #u$te S8BD.uri/ $ocarea este i#0$icit+? orice o0era!ie asu0ra date$or este auto#at 0recedat+ de cererea 0entru o!inerea $oc+rii date$or res0ecti3e ,S $ocE 0entru citire/ K $ocE 0entru actua$izare . "nte$e2Bnd 0rin Nactua$izareN o0era!ii$e U*DATE/ INSERT 4i DELETE-. @nc<eierea tranzac!iei ,cu sau (+r+ succes- e$iereaz+ "n #od auto#at $oc+ri$e 0e care aceasta $e de!inea. Anu#ite siste#e ,de 0i$d+ Adaas D- 0er#it N"n$+n!uirea tranzac!ii$orN ,transaction c<ainin2- cu 0+strarea anu#itor $oc+ri ,0rin c$auza IEE* LOCI a instruc!iunii COMMIT-. Pagina 12 Stefanescu Cristina-Gabriela, Master IISC, anul II Standardu$ S'L nu (ace nici o 0rezu#!ie $e2at+ de #odu$ de i#0$e#entare a #ecanis#e$or de contro$ a$ accesu$ui concurent ,0rin $ocare/ 0rin #+rci de ti#0 sau a$te #etode- 4i/ "n consecin!+/ nu 0re3ede instruc!iuni e50$icite de $ocare. Cu toate acestea/ #a7oritatea S8BD. uri$or re$a!iona$e o(er+ "n 0ro0rii$e dia$ecte S'L instruc!iuni de $ocare e50$icit+ ,LOCI-. Anu#ite siste#e non.re$a!iona$e ,Rai#a/ de e5e#0$u- (o$osesc doar $oc+ri e50$icite. De oicei/ aceste siste#e 0re3+d 4i instruc!iuni de de$ocare e50$icit+ ,UNLOCI-. De4i sunt ce$e #ai uzua$e/ $oc+ri$e 0arta7ate 4i e5c$usi3e nu sunt sin2ure$e 0osii$e. Une$e S8BD.uri ,IBM DB2/ S=ase S'L Ser3er/ Rai#a dMCISTA- (o$osesc o a4a.nu#it+ N$ocare 0entru actua$izareN ,u0date $ocE-/ care este un ni3e$ inter#ediar "ntre $ocarea 0arta7at+ 4i cea e5c$usi3+. Dac+ #ai #u$te tranzac!ii $oc<eaz+ 0arta7at ,0entru citire- un anu#it oiect/ una d"ntre e$e ,doar una- 0oate o!ine o $ocare 0entru actua$izare ,re#arca!i c+ o $ocare e5c$usi3+ nu 0oate (i o!inut+ "n aceste condi!ii-. De oicei uti$izarea $oc+rii 0entru actua$izare este 0osii$+ doar "n situa!ia unui #ecanis# de contro$ s0ecia$ ,azat "n 2enera$ 0e 3ersiuni #u$ti0$e a$e date$or- care s+ a3ertizeze o a$t+ tranzac!ie care so$icit+ o $ocare 0entru actua$izare c+ date$e au (ost #odi(icate. Deadloc$ *ro$e#a Nactua$iz+rii 0ierduteN/ (o$osind $oc+ri$e 0arta7ate 4i e5c$usi3e ar 0utea (i e50$icat+ "n (e$u$ ur#ator? $a #o#entu$ t1 tranzac!ia R1 so$icit+ o $ocare 0arta7at+ a $iniei Z 4i ,0resu0unBnd c+ $inia nu era $ocat+ 0entru scriere de o a$t+ tranzac!ie- o o!ine. La #o#entu$ t2/ tranzac!ia R2 so$icit+ 4i ea o $ocare 0arta7at+ a $iniei Z 4i o o!ine $a rBndu$ ei. A#e$e tranzac!ii $oc<eaz+ "n acest #o#ent 0entru citire $inia Z. La #o#entu$ t%/ tranzac!ia R1 so$icit+ $ocarea e5c$usi3+ a $iniei Z/ 0entru a (ace o actua$izare. Nu o!ine $ocarea/ deoarece $inia este $ocat+ 0entru citire de tranzac!ia R2/ deci este 0us+ "n stare de a4te0tare. Tranzac!ia R2 cere 4i ea $ocarea e5c$usi3+ 4i/ e3ident/ nu o o!ine din #oti3e si#i$are. Niciuna d"ntre tranzac!ii nu 0oate con!inua/ deoarece (iecare a4tea0t+ ca cea$a$t+ s+ e$iereze $inia Z. Aceast+ situatie se nu#este dead$ocE sau Ninter$ocareN. Este u4or de 3eri(icat c+ 4i "n situa!ia Nana$izei inconsistenteN se 3a a7un2e $a o inter$ocare. Rezu$tatu$ este c+ se rezo$3+ 0ro$e#a ano#a$ii$or ,"ntr.ade3+r/ acestea nu #ai a0ar- dar se o!ine o a$t+ 0ro$e#+/ cea a dead$ocE.uri$or. Rezo$3area noii 0ro$e#e cu0rinde dou+ as0ecte? Prevenirea deadloc$7ului. I#0$ic+ stai$irea unui 0rotoco$ de acces $a date care s+ (ac+ i#0osii$+ a0ari!ia situa!ii$or de dead$ocE. O 3ariant+ 0osii$+ este ca (iecare tranzac!ie s+ $oc<eze N"n $ocN toate $inii$e de care are ne3oie. A$ta 3ariant+ este stai$irea unei ordini a oiecte$or iar cereri$e de $ocare s+ (ie rezo$3ate "n con(or#itate cu aceast+ ordine. A#e$e #etode au deza3anta7u$ c+ $i#iteaz+ se#ni(icati3 0er(or#an!e$e 0rin $ocarea resurse$or 0e durate #ai $un2i decBt ce$e strict necesare. *e de a$t+ 0arte/ 0ri#a #etod+ nu este a0$icai$+ "ntotdeauna/ deoarece este 0osii$ ca o tranzac!ie s+ nu cunoasc+ de $a "nce0ut toate date$e de care are ne3oie. Pagina 13 Stefanescu Cristina-Gabriela, Master IISC, anul II Detectarea deadloc$7ului. Cea #ai si#0$+ #etod+ de detectare a unei situa!ii de dead$ocE este cea azat+ 0e un #ecanis# de ti#e.out? dac+ durata e5ecu!ei unei tranzac!ii de0+4e4te o 3a$oare 0restai$it+/ siste#u$ deduce c+ a a0+rut un dead$ocE. O a$t+ #etod+ se azeaz+ 0e construirea 4i #en!inerea dina#ic+ a unui N2ra( de a4te0tareN ,Lait.>or 8ra0<-. Noduri$e acestui 2ra( re0rezint+ tranzac!ii$e care se e5ecut+ ,T1/ T2/ .../ Tn- iar arce$e re0rezint+ re$a!ia de de0enden!+ ,a4te0tare-? e5isten!a unui arc de $a Ti $a T7 se#ni(ic+ (a0tu$ c+ tranzac!ia Ti a4tea0t+ ca tranzac!ia T7 s+ e$iereze anu#ite resurse. Detectarea unui dead$ocE re3ine $a detectarea e5isten!ei unui cic$u "n 2ra(u$ de a4te0tare. @n 0ractic+/ ce$ #ai adesea se uti$izeaz+ o #i5tur+ de te<nici? se i#0une un 0rotoco$ de acces care s+ reduc+ 0osii$itatea dead$ocE.u$ui,(+r+ s+ o 0re3in+ tota$/ dar 4i (+r+ s+ in<ieze se#ni(icati3 concuren!+-/ se i#0$e#enteaz+ un #ecanis# care s+ detecteze dead$ocEuri$e ce$e #ai uzua$e/ $+sBndu.$e 0e ce$e$a$te 0e sea#a unui #ecanis# de ti#e.out. Rezo$3area e(ecti3+ a unui dead$ocE re3ine $a stai$irea unei N3icti#eN dintre tranzac!ii$e i#0$icate "n dead$ocE 4i anu$area ei ,ROLLBACI-. Du0+ ce dead$ocE.u$ a (ost "n$+turat/ tranzac!ia 0oate (i $ansat+ din nou "n e5ecu!ie. Oser3a!ii? a. Desi2ur/ "ntr.un dead$ocE 0ot s+ inter3in+ #ai #u$t de dou+ tranzac!ii @n acest caz este 0osii$ ca #ai #u$te tranzac!ii s+ treuiasc+ anu$ate 0entru a de$oca e5ecu!a. . Ce$e #ai #u$te siste#e re0ro2ra#eaz+ auto#at 0entru e5ecu!e tranzac!ii$e anu$ate. E5ist+ "ns+ 4i siste#e care returneaz+ doar un cod de eroare a0$ica!iei/ acesteia re3enindu.i sarcina s+ se ocu0e de rezo$3area 0ro$e#ei. Serializare *ro$e#a care se 0une este? cu# se 0oate 4ti dac+ e5ecu!a concurent+ a unui 2ru0 de tranzac!ii este corect+ sau nuR De(ini!ie? Se nu#e4te 0$ani(icare ,sc<edu$e- oricare ordine 0osii$+ de e5ecut+re a o0era!ii$or 2ru0u$ui de tranzac!ii considerat. O 0ri#+ constatare este c+/ dac+ se 0resu0une c+ (iecare tranzac!ie "n 0arte din 2ru0 este corect+/ atunci orice 0$ani(icare seria$+ a tranzac!ii$or ,una du0+ a$ta/ indi(erent de ordine- este corect+. De4i a(ir#a!ia este intuiti3+/ se 0oate 7usti(ica u4or 0rin (a0tu$ c+ orice 0ro2ra# e5ecut+ o sec3en!+ de tranzac!ii ,deci niciodat+ dou+ tranzac!ii si#u$tan-. A4adar/ tranzac!ii$e din 2ru0u$ considerat sunt e5ecut+te de 0ro2ra#e di(erite ,sunt deci inde0endente-/ ordinea e5ecu!ei $or (iind ire$e3ant+ ,de re2u$+ >I>O? (irst in/ (irst out-. Pagina 14 Stefanescu Cristina-Gabriela, Master IISC, anul II @n cazu$ "n care se e5ecut+ o0era!ii a$e unei tranzac!ii "n ti#0 ce e5ecu!a a$tor tranzac!ii nu a (ost "nc+ "nc<eiat+ a3e# de.a (ace cu o 0$ani(icare interca$at+ ,inter$ea3ed-/ caz "n care este 0osii$ ca e5ecu!ia s+ nu (ie corect+ ,cu# a (ost cazu$ ce$or trei e5e#0$e 0rezentate $a "nce0ut-.Dou+ 0$ani(ic+ri a$e unui 2ru0 de tranzac!ii sunt ec<i3a$ente dac+ 3or 0roduce #ereu ace$a4i rezu$tat/ oricare ar (i starea ini!ia$+ a azei de date ,aceasta "nsea#n+/ de (a0t/ c+ o0era!ii$e con($ictua$e sunt "n aceeasi ordine-. O 0$ani(icare este seria$izai$+ dac+ este ec<i3a$ent+ cu o 0$ani(icare seria$+. Orice 0$ani(icare seria$+ (iind corect+/ "nsea#n+ c+ acesta este criteriu$ de corectitudine c+utat. E5ecu!a unui 2ru0 de tranzac!ii este corect+ dac+ s.a (+cut con(or# unei 0$ani(ic+ri seria$izai$e.O caracterizare #ai 0u!in ri2uroas+/ dar #u$t #ai intuiti3+ a caracteru$ui seria$izai$ este ur#+toarea? Oricare ar (i dou+ tranzac!ii A 4i B dintr.o 0$ani(icare a unui 2ru0 de tranzac!ii concurente/ (ie A 0recede $o2ic 0e B/ (ie B 0recede $o2ic 0e A. >a0tu$ c+ NA 0recede $o2ic 0e BN "nsea#n+ c+ B 0oate 3edea rezu$tate$e e5ecu!ei tranzac!iei A. Deci/ dac+ consider+# toate oiecte$e 3+zute de tranzac!ia A/ atunci B 3ede toate aceste oiecte (ie #odi(icate de7a de A/ (ie "n (or#a "n care erau "nainte ca #odi(ic+ri$e s+ se 0roduc+/ dar niciodat+ ca un a#estec de oiecte #odi(icate 4i oiecte ne#odi(icate. Teoria este/ desi2ur/ #u$t #ai o2at+ 4i s0eci(ic+ #ai #u$ti a$2orit#i de 3eri(icare a criteriu$ui enun!at. Rezu$tatu$ ce$ #ai i#0ortant din 0ers0ecti3+ 0ractic+ a acestei teorii este a4a. nu#ita Nteore#+ a seriai$it+tiiN ,sau Na $oc+rii "n dou+ (azeN-? ODac+ toate tranzac!ii$e unui 2ru0 de tranzac!ii concurente sunt ine (or#ate 4i res0ect+ 0rotoco$u$ de $ocare "n dou+ (aze/ atunci orice 0$ani(icare $e2a$+ este seria$izai$+.P De#onstra!ia nu este di(ici$+ ,o 3ariant+ se azeaz+ 0e 2ra(u$ de 0recedent+ a$ 0$ani(ic+rii 4i se des(+soar+ 0rin reducere $a asurd-. I#0ortante sunt "ns+ condi!ii$e? O tranzac!ie este Nine (or#at+N dac+ orice o0era!ie a tranzac!iei este aco0erit+ de o $ocare 4i toate $oc+ri$e sunt e$ierate. O o0era!ie ,citire sau scriere- este Naco0erit+ de o $ocareN dac+ tranzac!ia de!ine o $ocare su(icient de 0uternic+ a oiectu$ui asu0ra c+ruia se des(+soar+ o0era!ia. O 0$ani(icare este N$e2a$+N dac+ nu se des(+soar+ "n condi!ii$e unor $oc+ri con($ictua$e. Un N0rotoco$ de $ocareN const+ dintr.un set de restric!ii i#0use ordinii "n care tranzac!ii$e concurente $oc<eaz+ 4i de$oc<eaz+ oiecte$e azei de date. *rotoco$u$ de $ocare "n dou+ (aze ,t9o.0<ase $ocEin2- i#0une ur#+toare$e dou+ restric!ii? 1. @nainte de a o0era asu0ra oric+rui oiect a$ azei de date/ o tranzac!ie treuie s+ o!in+ $ocarea res0ecti3u$ui oiect. 2. Du0+ ce a e$ierat o $ocare/ o tranzac!ie nu 3a #ai "ncerca niciodat+ s+ otin+ noi $oc+ri. Se oser3+ cu usurin!+ e50$ica!ia denu#irii N"n dou+ (azeN ,care n.are ni#ic "n co#un cu co#iterea "n dou+ (aze-? con(or# acestui 0rotoco$ orice tranzac!ie trece #ai "ntBi 0rintr.o (az+ de o!inere a $oc+ri$or/ du0+ care trece "ntr.o (az+ de e$ierare a $oc+ri$or. Pagina 15 Stefanescu Cristina-Gabriela, Master IISC, anul II Sarcina asi2ur+rii res0ect+rii acestui 0rotoco$ re3ine LocE Mana2er.u$ui ,desi2ur/ dac+ siste#u$ $ucreaz+ 0e aza acestui 0rotoco$-. Mai oser3+# c+ 0rotoco$u$ 0re3ede Ne$ierarea $oc+ri$orN. O re2u$+ de Nun si#!N s0une c+ un oiect treuie $ocat cBt #ai 0u!in ti#0 cu 0utin!+/ 0entru a 0er#ite 4i accesu$ a$tor tranzac!ii $a acesta. Din 0+cate/ i#0$e#entarea acestui 0rotoco$ "n (or#a sa cea #ai e(icient+ din acest 0unct de 3edere este e5tre# de di(ici$+? LM treuie s+ N4tieN cBnd o tranzac!ie a o!inut toate $oc+ri$e 4i nu 3a #ai a3ea ne3oie de a$te$e ,0entru a identi(ica (aza "n care se a($+-A LM treuie s+ 4tie dac+ tranzac!ia 3a #ai a3ea ne3oie de un oiect asu0ra c+ruia a e(ectuat o o0era!ie/ deci dac+ 0oate sau nu s+.$ e$iereze ,din ace$a4i #oti3 a$ identi(ic+rii (aze$or-A "n (ine/ a0are 0ro$e#a e5tre# de di(ici$+ a Nanu$+rii "n cascad+N a tranzac!ii$or? "n cazu$ "n care o tranzac!ie a (ost anu$at+ "n (aza a doua/ este 0osii$ ca une$e date e$ierate de aceasta au (ost a0oi $ocate de a$te tranzac!ii/ caz "n care aceste tranzac!ii treuie $a rBndu$ $or anu$ate. Din cauza acestor di(icu$t+!i/ #a7oritatea siste#e$or i#0$e#enteaz+ o 3ariant+ #ai restricti3+ a 0rotoco$u$ui/ "n care toate e$ier+ri$e $oc+ri$or unei tranzac!ii sunt a#Bnate 0Bn+ $a ter#inarea tranzac!iei ,(ie 0rin COMMIT (ie 0rin ROLLBACI-. Este deci rezonai$ s+ se considere c+ $oc+ri$e o!inute de o tranzac!ie sunt 0+strate 0Bn+ $a ter#inarea acesteia/ cu toate c+ "n (e$u$ acesta inter3a$u$ de ti#0 "n care un oiect este $ocat este de re2u$+ #ai $un2 decBt #ini#u$ necesar. Co#0ro#isu$ este 4i aici 0rezent? si#0$i(icarea #ecanis#e$or i#0$e#entate "n LocE Mana2er co#0enseaz+ sc+derea ni3e$u$ui de concuren!+ 0rin $oc+ri de #ai $un2+ durat+. E5ist+ "ns+ situa!ii "n care se 0oate ad#ite un 2rad oarecare de inter(eren!+/ caz "n care ni3e$u$ concurentei 0oate (i crescut 0rin Nre$a5areaN 0rotoco$u$ui de $ocare ,"n s0et+ 0rin ad#iterea unor condi!ii "n care anu#ite $oc+ri 0ot (i e$ierate "naintea ter#in+rii tranzac!iei- +locarea ierar3ic1 Te<nica $oc+rii ierar<ice se re(er+ $a siste#e$e care ad#it #ai #u$te 2ranu$a!ii a$e $oc+rii 4i a (ost introdus+ de Si# 8ra= 4i co$aoratorii s+i "nc+ din 1TU1. Ideea de $a care se 0$eac+ este c+ 0entru o o!ine o $ocare $a ni3e$ de artico$ ,$inie de tae$+-/ o tranzac!ie treuie s+.4i #ani(este aceast+ inten!ie/ cerBnd #ai "ntBi o $ocare $a ni3e$ de tae$+. @n (e$u$ acesta se si#0$i(ic+ 0rocesu$ de detectare a unor cereri con($ictua$e de $ocare $a ni3e$ de $inie/ deoarece e$e treuie "ntBi s+ se #ani(este $a ni3e$ de tae$+. *rotoco$u$ azat 0e Ninten!ii de $ocareN ,intent $ocEin2- introduce trei noi ti0uri de $ocare ,$a ni3e$ de tae$+-/ a$+turi de ce$e dou+ ti0uri de $oc+ri uzua$e ,S.$ocE 4i K.$ocE- care/ a4a cu# a# ar+tat de7a/ au sens 4i $a ni3e$ de tae$+. A3e# ast(e$ cinci ti0uri de $oc+ri 0e care o tranzac!ie T $e 0oate so$icita $a ni3e$u$ "ntre2ii tae$e R/ 0rezentate "n ordinea cresc+toare a Nt+rieiN $or re$ati3e? IS 7 intent s3ared ? Tranzac!ia T inten!ioneaz+ s+ $oc<eze 0entru citire ,S $ocE- anu#ite $inii a$e tae$ei R/ 0entru a 2aranta stai$itatea acestora "n ti#0u$ 0roces+ri$or 0e care $e 3a e(ectua. I6 7 intent e5clusive ? La (e$ ca IS/ dar T s.ar 0utea s+ 3rea s+ #odi(ice anu#ite artico$e 4i deci s+ so$icite $ocarea e5c$usi3+ a acestora. Pagina 16 Stefanescu Cristina-Gabriela, Master IISC, anul II S 8 s3ared ? Este oi4nuita $ocare 0arta7at+. T ad#ite citiri concurente a$e tae$ei R/ dar nu 4i scrieri. T nu 3a (ace nici o scriere $a ni3e$u$ $inii$or tae$ei. SI6 7 s3ared intent e5clusive ? Co#in+ S 4i IK. @n 0$us (a!+ de S/ T s.ar 0utea s+ 3rea s+ #odi(ice anu#ite $inii din R 4i/ "n consecin!+/ s+ so$icite $ocarea e5c$usi3+ a acestora. 6 8 e5clusive ? T nu ad#ite citiri concurente "n tae$a R. T ar 0utea s+ actua$izeze anu#ite $inii a$e tae$ei R. CBte3a oser3atii? a. No!iunea de Nt+rieN a $oc+rii se re(er+ $a (a0tu$ c+ o cerere de $ocare de un anu#it ti0 care e4ueaz+/ 3a e4ua cu si2uran!+ 0entru orice ti0 #ai NtareN. . Ti0uri$e IK 4i S sunt e2a$e din 0unct de 3edere a$ Nt+rieiN. c. &i aceste ti0uri de $oc+ri sunt "n #od oi4nuit cerute "n #od i#0$icit. Cu toate acestea/ siste#e$e care i#0$e#enteaz+ aceste ti0uri de $ocare ,DB2/ O0enIn2res- o(er+ de oicei 4i o instruc!iune de $ocare e50$icit+ 0entru aceste ti0uri. d. Carianta 0e care a# 0rezentat.o este #u$t si#0$i(icat+. De (a0t $oc+ri$e se 0ot re(eri $a orice 2ranu$a!ii 4i orice oiecte a$e azei de date ,inc$usi3 indec4i-. @n (ine/ 0rotoco$u$ azat 0e inten!ii de $ocare ,intent $ocEin2 0rotoco$-/ i#0une dou+ re2u$i care "#in+ $oc+ri$e $a ni3e$ de tae$+ 4i de artico$ "ntr.o co#ina!ie care adesea s.a do3edit #ai e(icient+ "n a0$icatii? 1. @nainte de a o!ine o $ocare 0arta7at+ ,S- $a ni3e$ de $inie/ o tranzac!ie treuie s+ o!in+ o $ocare de ti0 IS ,sau #ai tare- $a ni3e$u$ "ntre2ii tae$e. 2. @nainte de a o!ine o $ocare de ti0 e5c$usi3 ,K- $a ni3e$ de $inie/ o tranzac!ie treuie s+ otin+ o $ocare de ti0 IK sau #ai tare $a ni3e$u$ "ntre2ii tae$e. Pagina 17 Stefanescu Cristina-Gabriela, Master IISC, anul II 9 PROTOCOU DE +OCARE IN DOU: 0A!E Rezu$tatu$ (ina$ a$ e5ecu!iei unei tranzac!ii treuie s+ "ntruneasc+ Oacordu$P tuturor noduri$or/ (a0t "n care const+ res0ectarea 0ro0riet+!ii de ato#icitate a tranzac!iei. *entru asi2urarea 0ro0riet+!ii de ato#icitate/ coordonatoru$ tranzac!iei #en!ionate este 0re3+zut cu un -rotocol de co#itere. Unu$ dintre siste#e$e de 0ro2ra#e ce$e #ai (rec3ent (o$osite/ din aceast+ c$as+/ este -rotocolul de co#itere ;n dou1 <aze 2-rescurtat= >PC4? O 3ariant+ #ai co#0$e5+ este re0rezentat+ de 0rotoco$u$ de co#itere "n trei (aze ,%*C-. %.1 *ROTOCOLUL DE COMITERE @N DOUV >AZE ,2* COMMIT- . STRUCTURV/ >UNCDIONARE @n ce$e ce ur#eaz+/ ;n conte5tul unei baze de date distribuite/ 3a (i descris+ acti3itatea 0rotoco$u$ui 2*C 0Bn+ $a (ina$izarea unei tranzac!ii/ res0ecti3 0Bn+ $a co#iterea acesteia. De ase#enea/ 0rotoco$u$ 2*C "nde0$ine4te (unc!ii s0eci(ice "n situa!ii$e de de(ect/ de re3enire du0+ de(ecte 4i de contro$ a$ concuren!ei tranzac!ii$or. Modu$ de rea$izare a acestor u$ti#e (unc!ii 3a (i 0rezentat u$terior. Aciunea de co#itere. >ie o tranzacie T care intr+ "n $ucru "n nodul Ni / unde coordonator este TCi. Co# distin2e dou+ (aze "n des(+4urarea 0rocesu$ui de "nc<eiere a e5ecu!iei tranzac!iei T. A4a cu# se 3a 3edea/ 0rocesu$ se 0oate s(Br4i (ie 0rin co#iterea tranzac!iei/ (ie 0rin aandonarea acesteia. *rotoco$u$ 2*C intr+ "n $ucru atunci cBnd/ 0rin decizia coordonatoru$ui TCi/ tranzac!ia T "nc<eie ,sau co#0$eteaz+- e5ecu!ia sa/ res0ecti3 atunci cBnd toate noduri$e "n care a (ost 0re$ucrat+ T anun!+ coordonatoru$ TCi c+ tranzac!ia a (ost co#0$etat+. Pri#a <az1. Odat+ cu intarea "n (aza de "nce0ut a 0rocesu$ui/ coordonatoru$ TCi introduce "n 7urna$ "nre2istrarea cu con!inutu$ W0re0are TX 4i/ totodat+/ "n#a2azineaz+ ,sau/ cu un ter#en (o$osit (rece3nt/ O(or!eaz+P- con!inutu$ 7urna$u$ui "n #e#oria Ostai$+P ,0e discuri #a2netice- a siste#u$ui. @n continuare/ TCi trans#ite #esa7u$ 0ri3ind 0re2+tirea tranzac!iei tuturor noduri$or "n care aceasta a (ost 0re$ucrat+. @n aceste noduri/ "n ur#a rece0!ion+rii #esa7u$ui/ (iecare contro$or de tranzac!ii asociat decide asu0ra co#iterii 0or!iunii de tranzac!ie care "i cores0unde. @n situa!ia "n care r+s0unsu$ este a(ir#ati3/ contro$oru$ de tranzac!ii din nod introduce "n 7urna$ "nre2istrarea cu con!inutu$ Wread= TX/ iar a0oi O(or!eaz+P con!inutu$ 7urna$u$ui "n #e#oria stai$+/ inc$usi3 toate "nre2istr+ri$e din 7urna$ care se re(er+ $a tranzac!ia T. A0oi/ contro$oru$ de tranzac!ii trans#ite coordonatoru$ui TCi #esa7u$ Oread= TP. Atunci cBnd decizia este ne2ati3+/ contro$oru$ de tranzac!ii din nod "nscrie "nre2istrarea Wno T X "n 7urna$/ "n continuare trans#i!Bnd coordonatoru$ui TCi #esa7u$ Oaort TP. Pagina 18 Stefanescu Cristina-Gabriela, Master IISC, anul II A doua <az1? Coordonatoru$ de tranzac!ii TCi 0oate stai$i dac+ tranzac!ia T 3a (i co#is+ sau aandonat+/ de "ndat+ ce a 0ri#it r+s0unsuri de $a toate noduri$e $a nesa7u$ s+u de 0re2+tire a tranzac!iei. Decizia res0ecti3+ 0oate (i $uat+ de TCi 4i atunci cBnd de $a trans#iterea #esa7u$ui W0re0are TX a trecut un ti#0 dat. Dac+ toate noduri$e ce 0artici0+ "n 0roces au r+s0und 0rin #esa7u$ Oread= TP/ tranzac!ia T 0oate (i co#is+/ "n 7urna$ se introduce "nre2istrarea Wco##it TX/ iar con!inutu$ 7urna$u$ui este "n#a2azinat "n #e#oria stai$+. @n situa!ia contrar+/ T este aandonat+/ ur#Bnd ca "n 7urna$ s+ (ie "nscris+ in(or#a!ia Waort TX/ iar 7urna$u$. (or!at "n #e#oria stai$+. *otri3it e50ri#+rii din $iteratura de s0ecia$itate ,3ezi Si$ersc<atz/ 02 21Q-/ "n acest #o#ent e3o$u!ia tranzac!iei este de(initi3+. Ca ur#are/ siste#u$ coordonator TCi trans#ite tuturor noduri$or ce au $uat 0arte $a e5ecu!ie #esa7u Oco##it TP sau Oaort TP. *ri#ind unu$ din aceste #esa7e/ noduri$e "$ "nscriu "n 7urna$. Co#entarii: @n 0ri#u$ rBnd/ de "ndat+ ce contro$or de tranzac!ii e#ite un #esa7 Oread= TP c+tre coordonator/ tranzac!ia se 3a 2+si "n situa!ia nu#it+ Oread= stateP "n nodu$ cores0unz+tor. @n (a0t/ #esa7u$ trans#is coordonatoru$ui este o O0ro#isiuneP (or#u$at+ $a ni3e$u$ nodu$ui 0ri3ind in3ita!ia de co#itere sau de aandonare e50ri#at+ de TCi. @n acest conte5t/ treuie re#arcat c+ 0entru a (or#u$a un ase#enea r+s0uns/ este necesar+ "nscrierea unei in(or#a!ii cores0unz+toare "n #e#oria stai$+. Dac+ in(or#a!ia #en!ionat+ nu 3a (i dis0onoi$+/ este 0osii$ ca "n situa!ia "n care/ "n ur#a a0ari!iei unui de(ect/ nodu$ "n cauz+ iese din (unc!iune du0+ ce a trans#is #esa7u$ Oread= TP/ inten!ia de co#itere sau aandonare s+ nu #ai 0oat+ (i rea$izat+ "n #od cores0unz+tor. @n a$ doi$ea rBnd/ dre0turi$e de "nc<idere a$e tranzac!iei r+#Bn 3a$ai$e 0Bn+ $a co#iterea acesteia/ 0recu# 4i (a0tu$ c+ T 0oate (i aandonat+ "n orice #o#ent/ anterior ce$ui "n care contro$oru$ de tranzac!ii din nod tri#ite coordonatoru$ui #esa7u$ Oread= TP. @n a$ trei$ea rBnd/ de "ndat+ ce un nod a dec$arat aandonarea tranzac!iei T 0rin r+s0unsu$ Oaort TP/ e3o$u!ia tranzac!iei este de(initi3+/ dre0t ur#are a condi!iei de unani#itate 0entru co#itere. @n $e2+tur+ cu aceasta/ oser3+# c+ decizia de aandonare a tranzac!iei T 0oate (i $uat+ "n #od uni$atera$ de c+tre coordonatoru$ TCi/ a$ nodu$ui "n care s.a 0rodus 0re$ucrarea tranzac!iei. Decizia (ina$+ asu0ra e3o$u!iei tranac!iei T este $uat+ "n #o#entu$ "n care TCi "nscrie <ot+rBrea de co#itere sau aandonare ado0tat+ "n 7urna$/ a0oi "n #e#oria stai$+. Une$e i#0$e#ent+ri a$e 0rotoco$u$ui 2*C 0re3+d ca/ $a s(Br4itu$ ce$ei de a doua (aze/ contro$oru$ de tranzac!ii din nod s+ trans#it+ coordonatoru$ui #esa7u$ OacEno9$ed2e TP/ ur#Bnd ca du0+ rece0!ionarea #esa7u$ui din 0artea tuturor noduri$or/ TCi s+ introduc+ "n 7urna$ "nre2istrarea Wco#0$ete TX. >unc!ionarea 0rotoco$u$ui de co#itere "n dou+ (aze 0oate (i descris+ "n o #anier+ a$ternati3+/ 0rezentat+ succint "n cotinuare. >ie o az+ de date distriuit+ "n N noduri. Mai 7os/ 3or (i (o$osite nota!ii$e? WYYX 0entru re0rezentarea "nre2istr+ri$or/ iar ZYY.P 0entru #esa7e. Pagina 19 Stefanescu Cristina-Gabriela, Master IISC, anul II Se ad#ite c+ din co#0onen!a unui nod ZiP (ac 0arte o unitate centra$+ de 0re$ucrare UC*i/ o #e#orie centra$+ MCi/ o #e#orie de ti0 cac<e MC[i/ "n nod (iind "n#a2azinat codu$ tranzac!ii$or $oca$e 4i sutranzac!ii$or ce a0ar!in unor tranzac!ii 2$oa$e/ 0recu# 4i siste#e$e de 0ro2ra#e cores0unz+toare contro$oru$ui Tctri/ res0ecti3 coordonatoru$ui de tranazac!i TCi. La e$e#ente$e de #ai sus se adau2+ #e#oria secundar+ MSECi. @n continuare/ este 0rezentat+ sc<e#atic o des(+4urare 0osii$+ a acti3it+!ii 0rotoco$u$ui 2* Co##it/ $a #o#ente$e de ti#0 t1/ t2/ etc. Pri#a <az1 t@ TCi W0re0areTX .X 7urna$ t> TCi W7urna$X .X #e#oria stai$+ MSECi t9 TCi W0re0areTX .X noduri tA Tctr7 decizie 0ri3ind co#iterea 0or!iunii 0ro0rii de tranzac!ie tB decizie \ Da/ Tctr7 Wread=TX .X #e#oria stai$+/ sau decizie \ Nu/ Tctr7 WnoTX .X 7urna$ tC decizie \ Da/ Tctr7 #esa7 Zread=TP .X TCi/ sau decizie \ Nu/ Tctr7 #esa7 ZaortP . X TCi. A doua <az1 tD TCi ana$izeaz+ r+s0unsuri$e Tctr7 din #o#entu$ tQ tE toate Tctr7 .X #esa7 Oread=TP/ TCi Wco##itTX .X 7urna$/ sau nu toate Tctr7 .X #esa7 Oread=P/ TCi WaortX .X 7urna$ tF TCi W7urna$X .X #e#oria stai$+ MSEC7 t@G TCi Wco##itTX "n toate noduri$e/ sau WaortTX "n toate noduri$e t@@ (iecare Tctr7 0artici0ant "n 0re$ucrarea tranzac!iei Wco##itTX .X 7urna$ sau WaortTX .X 7urna$. Pagina 20 Stefanescu Cristina-Gabriela, Master IISC, anul II @n i0oteza c+ unu$ sau #ai #u$te din noduri$e re!e$ei ,res0ecti3 dintre contro$oare$e de tranzac!ie- nu O3oteaz+P (a3orai$/ tranzac!ia nu 0oate co#ite. @n aceast+ situa!ie/ 0entru tranzac!ie treuie s+ se a7un2+ "n (ina$ $a decizia OAortMLorE,-P. Surna$u$ tranzac!iei 3a (i citit "na0oi/ su contro$u$ coordonatoru$ui de tranzac!ii. @n acest 0roces/ 0entru (iecare "nre2istrare din 7urna$ coordonatoru$ a0e$eaz+ nodu$ ,contro$oru$- care a o0erat u$ti#a actua$izare/ deter#inBndu. $ s+ ini!ieze o o0era!iune de Odistru2ereP a in(or#a!iei res0ecti3e. Atunci cBnd "n 0rocesu$ ins0ect+rii Oin3erseP a 7urna$u$ui se a7un2e "n 0unctu$ de "nce0ut a$ tranzac!iei/ res0ecti3 aco$o unde treuie s+ se a($e co#anda Be2inMLorE,-/ 3a (i e(ectuat+ o0era!iunea de Odistru2ereP a acestei u$ti#e co#enzi/ a0oi "n 7urna$ se introduce o "nre2istrare de aandonare. @n s(Br4it/ "n 7urna$ este introdus+ o nou+ "nre2istrare/ care conse#neaz+ Oco#0$etareaP aandon+rii. Mai #en!ion+# c+ 7urna$u$ui tranzac!iei i se asociaz+ un contro$or 0ro0riu/ a c+rui sarcin+ este de a 2estiona "nre2istr+ri$e din 7urna$/ 0rin inter#ediu$ unei $iste "n$+n!uite/ "n care (iec+rei "nre2istr+ri i se atriue o c<eie unic+. Unu$ din oiecti3e$e 0entru care "n 0rocesu$ de ins0ectare a con!inutu$ui 7urna$u$ui se (o$ose4te o $ist+ "n$+n!uit+ este asi2urarea e(icien!ei o0era!iuni$or de Odistru2ereP e3ocate #ai sus. %.2 *ROTOCOLUL DE BLOCARE @N DOUV >AZE ,2.*L- *rotoco$u$ de $ocare "n dou+ (aze,t9o.0<ase $ocEin2- i#0une ca (iecare tranzac!ie s+ res0ecte 0rotoco$u$ de uti$izare a $oc+ri$or? toate o0era!ii$e de $ocare s+ 0recead+ 0ri#a o0era!ie de de$ocare. O ast(e$ de tranzac!ie 0oate (i di3izat+ "n dou+ (aze? (aza de cre4tere ,2ro9in2 0<ase-/ "n care se 0ot (ace noi $oc+ri/ dar nu se (ac de$oc+riA (aza de descre4tere ,s<rinEin2 0<ase-/ "n care se (ac toate de$oc+ri$e/ dar nu se #ai 0ot (ace $oc+ri noiA Dac+ o tranzac!ie 0oseda o $ocare de ti0 K asu0ra unui oiect/ nici o a$t+ tranzac!ie nu 3a 0utea 0re$ua o a$t+ $ocare asu0ra sa. @naintea unei o0era!ii de citire se 3a otine o $ocare S/ iar a unei o0eratii de scriere o $ocare de ti0 K. O tranzactie treuie sa o!ina o $ocare "naintea e5ecu!iei o0era!iei dorite / o tranzactie ce a o!inut o $ocare nu 3a #ai 0utea o!ine a$te$e. S.a de#onstrat c+/ dac+ (iecare tranzac!ie a unei 0$ani(ic+ri res0ect+ 0rotoco$u$ de $ocare "n dou+ (aze/ atunci 0$ani(icarea este seria$izai$+. :U; Acest 0rotoco$ ne 2aranteaz+ seria$izai$itatea? dac+ toate tranzac!ii$e res0ect+ cerin!e$e 0rotoco$u$ui se 0oate de#onstra c+ orice 0$ani(icare a $or e seria$izai$+. De ase#enea se 0oate Pagina 21 Stefanescu Cristina-Gabriela, Master IISC, anul II de#onstra c+ dac+ o tranzac!ie nu res0ect+ 0rotoco$u$ 0ot e5ista e5ecu!ii neseria$izai$e a$e ace$ei tranzac!ii "n con7unc!ie cu a$te tranzac!ii. *entru o tranzactie care contine sec3en!+? UNOC( A OC( + *ute# a3ea o 0$ani(icare care contine? T1 T2 UNOC( A 77777777777777777777777777777777777777777777777777777777777 OC( A OC( + UNOC( A UNOC( + 7777777777777777777777777777777777777777777777777777777777777 OC( + Care are un 2ra( de 0receden!+ care con!ine un cic$u. *rotoco$u$ de $ocare "n 2 (aze i#0$ic+ "nsa uneori o0era!ii de ro$$.acE "n cascad+? T@ H T> OC( A OC( + READ A 'RITE A UNOC( A 77777777777777777777777777777777777777777777777777777777777777777777777 OC( A READ A 'RITE A Pagina 22 Stefanescu Cristina-Gabriela, Master IISC, anul II UNOC( A 77777777777777777777777777777777777777777777777777777777777777777777777 READ + 'RITE + 777777777777777777777777777777777777777777777777777777777777777777777777 RO+AC( @n #o#entu$ Ro$$acE 0entru T1 este necesar Ro$$acE 4i 0entru T2 deoarece T2 a citit date scrise de T1/ date care 0rin o0era!ia de Ro$$acE se 0ierd. O ast(e$ de 0$ani(icare se nu#este 0$ani(icare cu ro$$acE "n cascad+ ,en2.? cascadin2 aorts- . Dac+ (ace# un 2ra(ic a$ nu#+ru$ui de "ncuietori 0osedate de o tranzac!ie/ e$ treuie s+ arate ca# ca "n (i2ura ur#+toare? s+ ai+ o (az+ de cre4tere ,2ro9in2 0<ase- 4i una de descre4tere ,s<rinEin2 0<ase-. growing shrinking ^ ____ | / \ numar de | / \____ blocri | __/ | | / \ 0-----------------------> Timp Protocolul de blocare strict1 ;n dou1 <aze E5ist+ 0entru a e3ita 4i ast(e$ de cazuri 3arianta -rotocolului de blocare strict1 ;n dou1 <aze care i#0$ic+ e$ierarea toturor artico$e$or $ocate $a s(ar4itu$ tranzac!iei. @n acest caz tranzac!ia T2 din e5e#0$u$ anterior 0orne4te aia du0a ter#inarea co#0$et+ a tranzac!iei T1. De#onstra!ie 0entru 2aran!ia seria$izai$it+!ii? S+ 0resu0une# ,0rin asurd- c+ o serie de tranzac!ii T1/ T2/ ... Tn/ care res0ect+ 0rotoco$u$ 2*L/ au a3ut o e5ecu!ie ne.seria$izai$+. Asta "nsea#n+ c+ "n 2ra(u$ $or de de0enden!e e5ist+ un cic$u/ T1 T2 ...Tn T1. Ce "nsea#n+ c+ a3e# un arc de $a T1 $a T2R @nsea#n+ c+ T1 a o0erat asu0ra unei 3a$ori "nainte de T2/ cu o o0era!ie care nu co#ut+ cu cea a $ui T2. Dar noi 4ti# c+ T1 nu are 3oie s+ o0ereze asu0ra unei 3a$ori ne$ocate. Asta "nsea#n+ c+ T2 a $ocat acea 3a$oare du0+ ce T1 a de$ocat.o. Arcu$ T2 T% indic+ un $ucru ase#+n+tor/ 4i anu#e c+ T% a $ocat o 3a$oare ,nu necesar aceea4i- du0+ ce T2 a descuiat.o. Din a0roa0e "n a0roa0e o!ine# c+/ "n (ine/ T1 a $ocat o 3a$oare du0+ ce T1 a de$ocat o a$t+ 3a$oare/ ceea ce este asurd. Conc$uzia ini!ia$+ era deci 2re4it+. @n conc$uzie 2*L 2aranteaz+ seria$izai$itatea. Se oser3+ c+ 2*L nu este ace$a4i $ucru cu seria$izai$itatea/ ci c+ 2*L doar o i#0$ic+. Pagina 23 Stefanescu Cristina-Gabriela, Master IISC, anul II E5ist+ un deza3anta7 a$ $ui 2*L 4i o i#0$e#entare care "$ e3it+. S+ consider+# ur#+toru$ scenariu? o tranzac!ie T1 $oc<eaz+ o 3a$oare 5/ o #odi(ic+ 4i a0oi o de$oc<eaz+. T2 3ine $a r"nd/ $oc<eaz+ 4i cite4te 5. Dac+ acu# T1 3rea s+ e5ecute Aort/ 3a$oarea $ui 5 treuie 0us+ cu# era "nainte ca T1 s+ o (i #odi(icat. Dar T2 a citit.o de7a] Asta "nsea#n+ ni#ic a$tce3a dec"t c+ dac+ T1 e5ecut+ Aort/ T2 treuie s+ (ie ^^ucis+__ de siste#/ 0entru a res0ecta 0ro0rietatea de izo$are] E c$ar c+ $an!u$ 0oate (i #ai $un2? T% 0oate a citit $a r"ndu$ ei 5/ 4i atunci treuie ucis+ 4i ea. O ast(e$ de situa!ie (oarte ne0$+cut+ ,0entru c+ o #u$!i#e de o0era!ii treuie ^^4terse__- se nu#e4te cascaded abort ,aort "n cascad+-. O a$t+ consecin!+ ne0$+cut+ este c+ T2 nu se 0oate ter#ina "nainte de T1/ 0entru c+ dac+ T2 (ace Commit iar T1 Aort se stric+ tranzac!ia/ c+ci T2 a 0ro#is c+ 3a$oarea $ui 5 este 0er#anent+/ dar nu a3ea 3oie s.o citeasc+] Deci T2 treuie s+ a4te0te ca T1 s+ se ter#ine. So$u!ia este si#0$+? se restr"n2e concuren!a/ dar ni#eni nu este $+sat s+ 3ad+ #odi(ic+ri$e. Nu se de$oc<eaz+ ni#ic 0"n+ $a s("r4it/ c"nd se de$oc<eaz+ totu$ dintr.o #i4care ,de e5e#0$u (o$osind End Transaction/ care e$iereaz+ $oc<+ri$e-. 8ra(icu$ ar ar+ta atunci ca# a4a? growing shrinking ^ _________ | / | numar de | / | blocri | __/ | | / |terminare 0-----------------------> timp :`; 3.3 COM*ARADIE @NTRE 2 *C SI 2 *L AtBt 0rotoco$u$ de co#itere in dou+ (aze,2 *C- cBt i 0rotoco$u$ de $ocare "n dou+ (aze,2 *L- sunt 0rotocoa$e (o$osite in con7unctura siste#e$or de aze de date distriuite. *rotoco$u$ de $ocare in dou+ (aze ,2*L- se ocu0a doar de #ana2e#entu$ $oc+ri$or "n ti#0u$ unei tranzac ii/ "n ti#0 ce 0rotoco$u$ de co#itere "n dou+ (aze,2*C- decide daca o anu#it+ tranzac ie este scrisa,se co#ite- sau nu ,se (ace aord-. Pagina 24 Stefanescu Cristina-Gabriela, Master IISC, anul II *rotoco$u$ 2*L s0une c+ e5ist+ #ai "ntBi o (az+ in care se (ac toate $oc+ri$e ,(aza de cre tere- i a0oi e5ista o (aza "n care se (ac toate de$oc+ri$e,(aza de descre tere-. Odat+ "nce0ut+ (aza de descre tere/ nu se #ai 0ot (ace $oc+ri 0e 0arcursu$ res0ecti3ei tanzac ii. >aza de descre tere are $oc de oicei du0a ce s.a (+cut aord sau co#it "n siste#u$ de aze de date. *rotoco$u$ 2*C s0une/ "n esen +/ c+ odata (ina$izat+ o tranzac ie si se a tea0ta co##itarea acesteia/ "nce0e O3otu$P. >iecare nod care (ace 0arte din tranzac!ie trece "ntr.o stare a0re0are to co##itP. Nodu$ 3eri(ic+ daca este 0osii$ s+ se (aca un co##it $oca$/ i "n acest caz 3oteaz+ Oread= to co##itP ,RTC-/ insa $a acest #o#ent nu sunt "nc+ scrise #odi(ic+ri$e "n aza de date. Odata ce un nod a 3otat cu RTC/ siste#u$ treuie 0+strat "ntr.o stare "n care tranzac ia res0ecti3a s+ (ie #ereu oE 0entru co##it. Atunci cand toate noduri$e 3oteaz+ cu RTC/ se (ace co##it/ ins+ daca un sin2ur nod nu 3oteaz+ RTC/ toate tranzac ii$e $oca$e 3or (i aordate. :T;/:1F; 3.4 CONCLUZII *rotoco$u$ 2*L i#0$ic+ seria$izai$itatea. @n sc<i# acest 0rotoco$ nu 0oate 2aranta recu0erai$itatea/ deoarece tranzac ii$e ar 0utea (i de$ocate 0e atriute a$e azei de date #odi(icate/ "nainte de a se (ace co##it sau aord/ ceea ce 0er#ite a$tor tranzac ii s+ (o$oseasc+ 3a$ori instai$e 0e care s+ (ac+ a0oi co##it. *rotoco$u$ care asi2ur+ atat seria$izai$itatea cBt i recu0erai$itatea este 0rotocu$u$ 2 *L strict/ care #en ine $ocate tranzac ii$e 0Bn+ cBnd acestea sunt (ina$izate cu succes. Acest 0rotoco$ 0oate (i (o$osit "n #edii dina#ice/ unde #ode$e$e de acces $a date nu sunt cunoscute de dinainte. Pagina 25 Stefanescu Cristina-Gabriela, Master IISC, anul II A +I+IOIRA0IE :1; *ro(. An2e$ Ca!aron/ curs Baze de date/ <tt0?JJ3e2a.unit3.roJbcataronJCoursesJBDJBDMCa0M1.0d( $a1)J12J2F12 :2; *ro(. >e$icia Ionescu/ curs Baze de date 0entru a0$ica!ii 4tiin!i(ice :%; Ionescu >./ Baze de date re$ationa$e si a0$icatii / Editura Te<nica/ Bucuresti/ 2FF) :); <tt0?JJ$o2u.$uJEassaEJ2estiunea.tranzac!ii$orJ $a 11J12J2F12 :1; Do$$in2er R./ Baze de date 4i 2estiunea tranzac!ii$or/ Editura A$astr+/ C$u7.Na0oca/ 1TTT :Q;Na3rosc<i.Szcsz A./ curs? B$oc+ri/ #+rci de ti#0 4i uti$izarea $or in Orac$e :U; Ionescu >. / curs *roiectarea aze$or de date ,*BD- :`; <tt0?JJ999.cs.c#u.eduJb#i<aiJartic$esJtranzactiiJtranzactii.<t#$.<t#$ $a 21J12J2F12 :T; <tt0?JJ9iEi.ans9ers.co#J'JDi((erenceMet9eenM2.0<aseM$ocEin2MandM2.0<aseMco##it $a 2UJ12J2F12 :1F; Dr. Irien2Erai *orEae9/ DBMS? Concurrenc= Contro$ Pagina 26