Sunteți pe pagina 1din 7

Elemente generale privind sistemul de prelucrare a tranzaciilor. Tranzacii distribuite. Protocolul de comitere n dou faze.

(text preliminar) Vom ncepe cu prezentarea unei definiii mai largi a conceptului de tranzacie, dect cea formulat mai nainte (unitate de prelucrare secvenial care respect coerena bazei de date). Potrivit nelegerii adoptate n ( carte Gray, Reuter), o tranzacie este o colecie de operaiuni efectuate asupra strii fizice i strii abstracte a unei aplicaii. S remarcm, n acest context, c prin aplicaie se nelege de obicei actul punerii n practic a unor principii sau idei. Definiii oarecum diferite pentru noiunea de tranzacie corespund fie utilizatorilor finali, fie operatorilor sistemului de calcul n care sunt gzduite tranzaciile. Sistemul de prelucrarer a tranzaciilor (prescurtat sistemul PT) pune la dispoziie mijloacele da facilitare sau de automatizare a programrii legate de aplicaii, a execuiei i administrrii tranzaciilor. Aplicaiile de prelucrare a tranzaciilor evolueaz n interiorul unei dispozitive, subsisteme reele de i programe care formuleaz fraze de interogare i-sau operaiuni de

actualizare adresate aplicaiei. Desigur, aplicaiile pot fi asociate unei baze de date distribuite. Pornind de la intrrile menionate, aplicaia ntreine o baz de date ce reprezint o stare a sistemului din lumea real care este modelat. Firete, ne putem imagina c ieirile furnizate de aplicaie, sau reaciile acesteia, pot conduce la schimbri ale sistemului real, respectiv a strii acestuia. Un sistem PT conine generatoare de aplicaii, reele, baze de date, precum i aplicaii. Pentru coordonarea i dirijarea fluxului de tranzacii prin sistem, este folosit un ansamblu de funcii- sau servicii-, denumit monitor de prelucrare a tranzaciilor, care face parte din sistemul PT. Este util de reamintit c sistemele de prelucrare a tranzaciilor au avut un rol important n evoluia calculului distribuit i a calculului tolerant la defecte. Prin intermediul acestor sisteme a fost iniiat utilizarea informaiilor distribuite n vederea asigurrii fiabilitii sistemelor i aplicaiilor, a disponibilitii i performanelor acestora. Modelul client-server, foarte rspndit pn nu demult, ca i apelul de la distan al procedurilor destinat calculului distribuit, au fost de asemenea propulsate de sistemele PT. Totodat, se consider c principalele idei unificatoare din domeniul calculului distribuit, respectiv atomicitatea, consistena, izolarea i durabilitatea, care mpreun poart numele de proprieti ACID ale tranzaciilor, au aprut n procesul de evoluie a

sistemelor de prelucrare a tranzaciilor. Datorit nsemntii lor, aceste proprieti sunt succinct definite mai jos: Atomicitate: schimbrile strii unei tranzacii sunt atomice, n sensul c acestea au loc toate, sau nu are loc nicio schimbare. Schimbrile sunt modificri ale bazei de date, mesaje i aciuni asupra subsistemelor din mediul extern. Consisten: o tranzacie constitue o transformare corect a strii bazei de date. Aciunile ntreprinse n grup nu ncalc niciuna din restriciile de integritate specifice strii menionate. De aici rezult c tranzaciei trebuie s i corespund un program corect. Izolare: chiar dac tranzaciile sunt executate n mod concurent, fiecare tranzacie T vede execuia celorlalte tranzacii ca fiind produs fie anterior fa de T, fie dup T, dar nu ambele. Durabilitate: odat ce o tranzacie a fost executat cu succes (deci a fost completat sau a comis), schimbrile pe care ea le-a produs n starea bazei de date nu vor fi afectate de defeciuni. Evoluia global a unei tranzacii, cu respectarea proprietilor ACID, poate fi descris dup cum urmeaz. Programul de aplicaie declar debutul unei tranzacii noi prin comanda Begin-Work(). n continuare, toate operaiile efectuate de program vor face parte din aceast tranzacie. n acelai timp, toate operaiunile executate de alte programe n legtur cu programul de aplicaie sunt parte a tranzaciei de baz. Prin iniierea comenzii Commit_Work, programul declar c tranzacia constitue o transformare complet i corect. Rezultatele execuiei tranzaciei sau efectele acesteia- devin durabile, de ndat ce tranzacia comite. Pe de alt parte, este posibil ca pe parcursul execuiei tranzaciei unele operaiuni s fie eronate. n acest caz, aplicaia poate distruge toate operaiunile, prin comanda Rollback_Work(). Mai observm c atunci cnd n timpul execuiei unei tranzacii are loc o defeciune de natur tehnic, sistemul de gestiune poate trimite napoi, sau returna tranzacia. Pentru ncadrarea transformrilor ACID se folosesc comenzile Begin-Commit sau Begin-Rollback. Elementele de mai sus reprezint o abordare convenabil pentru realizarea aplicaiilor distribuite. Fiecare modul al aplicaiei va fi o tranzacie sau o sub-tranzacie. Atunci cnd execuia se desfoar cu succes, tranzacia comite i toate modulele trec n o stare durabil nou.. n situaia n care apar erori sau alte incidente, modulele tranzaciei vor fi readuse automat n starea iniial, cea de la nceputul execuiei tranzaciei. ntruct operaiunile de comitere i de revenire se bazeaz pe o logic automat, realizarea modulelor reclam folosirea de metode cu semantic elementar pentru descrierea defeciunilor.

Tranzacii distribuite n cadrul unei baze de date distribuite n nodurile unei reele, accesul la multitudinea de obiecte de date se realizeaz de obicei prin intermediul tranzaciilor. Se nelege c tranzaciile trebuie s respecte regulile ACID. Deoarece tranzaciile care sunt executate ntr-un sistem distribuit pot prelucra fie date rezidente ntr-un singur loc, fie date amplasate n sisteme distincte, vom distinge tranzacii locale i tranzacii globale. Primele au acces la informaiile coninute n o singur baz de date local i pot prelucra aceste informaii. Tranzaciile globale realizeaz accesul la informaii amplasate n mai multe baze de date locale i, desigur, pot prelucra aceste informaii. Respectarea proprietilor ACID n procesul execuiei tranzaciilor locale reclam, practic, participarea tuturor componentelor sistemului de gestiune a bazei de date implicate n gestiunea tranzaciilor. Asigurarea consistenei unei tranzacii oarecare trebuie dat de programatorul de aplicaie, care codific tranzacia. Pentru respectarea atomicitii tranzaciei, chiar dac apar defeciuni, se poate folosi tehnica de modificare amnat, sau tehnica modificrii imediate a bazei de date. n primul caz, modificrile aduse bazei de date sunt nregistrate ntr-un jurnal, ns execuia tuturor operaiunilor de nregistrare din tranzacie este amnat pn la comiterea parial a tranzaciei (reamintim c prin comitere parial nelegem situaia n care aciunea final a tranzaciei a fost executat). Modificarea imediat a bazei de date const n efectuarea schimbrilor bazei de date atunci cnd tranzacia este nc n stare activ; schimbrile aduse de tranzacii ce se gsesc n stare activ se numesc modificri ne-comise. Responsabilitatea operaiunilor de mai sus revine controlorului (sau manager-ului) de tranzacii. n fapt, acest controlor, prin observarea memoriei secundare (disc), urmrete valorile vechi ale tuturor obiectelor de date asupra crora tranzacia a efectuat nregistrri, iar dac tranzacia nu a completat execuia sa, restaureaz vechile valori astfel nct aparent tranzacia nu ar fi fost niciodat executat. Durabilitatea este n sarcina controlorului de revenire (sau de recuparare). Prin grja acestui sub-sistem, modificrile aduse bazei de date de ctre o tranzacie sunt nregistrate pe disc naintea completrii tranzaciei. De asemenea, este asigurat disponibilitatea unei informaii suficiente privind modificrile efectuate i nregistrate pe disc, astfel nct actualizrile fcute s poat fi reconstruite atunci cnd sistemul de baze de date este repornit dup o defeciune. n sfrit, controlorul concurenei este sub-sistemul care, printre altele, asigur respectarea proprietii de izolare. Printre tipurile de planificare ce contribue la sigurarea acestei proprieti menionm serializabilitatea de conflict i serializabilitate de vedere. n cazul tranzaciilor globale, meninerea proprietilor ACID este sensibil mai complicat, avnd n vedere faptul c la execuia unei planificri de tranzacii iau parte mai multe noduri ale unei 3

reele. Defeciunile aprute n unul sau mai multe din noduri, ca i defeciunile canalelor de comunicaie, vor conduce aproape sigur la prelucrri incorecte ale informaiilor. Din arhitecura unei baze de date distribuite fac parte dou componente principale: controlorul de tranzacii i coordonatorul tranzaciilor. Aceste sub-sisteme sunt amplasate n nodurile reelei de calculatoare. Funciunea controlorului de tranzacii const n respectarea proprietilor ACID ale tranzaciilor care prelucreaz informaii memorate n nodul cu care controlorul este asociat. Deoarece avem n vedere o baz de date distribuit, se nelege c n reea vor fi executate i tranzacii globale, care efectueaz operaiuni asupra datelor depuse n mai multe noduri. n acest proces vor colabora controloare de tranzacii amplasate n nodurile corespunztoare. ntr-un nod dat al reelei, n care se desfoar prelucrarea concurent a unui numr de tranzacii, controlorul de tranzacii ocup un loc specific n activitatea algoritmului de control al concurenei. De asemenea, acest sub-sistem are responsabilitatea coninutului jurnalului meninut n vederea revenirii dup defeciuni. La rndul su, coordonatorul de tranzacii asociat unui nod, dirijeaz execuia tranzaciilor locale i globale ce sunt iniiate i funcioneaz n nodul respectiv. Funcia de coordonare menionat este specific numai mediului distribuit. n sarcina coordonatorului intr iniierea execuiei fiecrei tranzacii, segmentarea tranzaciilor n scopul distribuirii sub-tranzaciilor obinute n noduri adecvate, precum i coordonarea ncheierii activitii fiecrei tranzacii. Subliniem faptul c tranzaciile globale fie comit n toate nodurile n care sunt executate subtranzaciile din care sunt formate, fie sunt abandonate n toate nodurile. n legtur cu defectele ce apar uneori n sistemele centralizate, inclusiv n cele care prelucreaz baze de date, menionm erorile de echipament (hardware), erorile programelor, deterioararea sistemelor de discuri magnetice. Tema defeciunilor posibile ntr-un sistem distribuit care gzduete o baz de date are particulariti evidente. Deterioarea componentelor unui nod, defeciuni ale liniilor de comunicaie, perturbarea manierei iniiale de partiionare a reelei, coruperea mesajelor prin erori sunt tipurile principale de defecte ce au loc n mediu distribuit. Atunci cnd se defecteaz mediul de comunicaie, mesajele transmise ntre noduri sunt de obicei rerutate. n ipoteza dispariiei conexiunii ntre dou noduri, reeaua va fi partiionat din nou. Erorile care apar n mesaje sunt tratate de protocoalele de control al procesului de comunicaie, de exemplu TCP/IP. ntr-un paragraf imediat precedent, am afirmat c la sfritul execuiei unei tranzacii globale- sau distribuite-, aceasta trebuie fie s comit, fie s fie abandonat n toate nodurile reelei. n o 4

formulare mai puin tehnic, rezultatul final al execuiei tranzaciei trebuie s ntruneasc acordul tuturor nodurilor, fapt n care const respectarea proprietii de atomicitate a tranzaciei. Pentru asigurarea proprietii de atomicitate, coordonatorul tranzaciei menionate este prevzut cu un protocol de comitere. Unul dintre sistemele de programe cele mai frecvent folosite, din aceast clas, este protocolul de comitere n dou faze (prescurtat, 2PC). O variant mai complex este reprezentat de protocolul de comitere n trei faze (3PC). Protocolul de comitere n dou faze (2P Commit) - structur, funcionare. n cele ce urmeaz, n contextul unei baze de date distribuite, va fi descris activitatea

protocolului 2PC pn la finalizarea unei tranzacii, respectiv pn la comiterea acesteia. De asemenea, protocolul 2PC ndeplinete funcii specifice n situaiile de defect, de revenire dup defecte i de control al concurenei tranzaciilor. Modul de realizare a acestor ultime funcii va fi prezentat ulterior. Aciunea de comitere. Fie o tranzacie T care intr n lucru n nodul Ni , unde coordonator este TCi. Vom distinge dou faze n desfurarea procesului de ncheiere a execuiei tranzaciei T. Aa cum se va vedea, procesul se poate sfri fie prin comiterea tranzaciei, fie prin abandonarea acesteia. Protocolul 2PC intr n lucru atunci cnd, prin decizia coordonatorului TCi, tranzacia T ncheie (sau completeaz) execuia sa, respectiv atunci cnd toate nodurile n care a fost prelucrat T anun coordonatorul TCi c tranzacia a fost completat. Prima faz. Odat cu intarea n faza de nceput a procesului, coordonatorul TCi introduce n jurnal nregistrarea cu coninutul <prepare T> i, totodat, nmagazineaz (sau, cu un termen folosit frecevnt, foreaz) coninutul jurnalului n memoria stabil (pe discuri magnetice) a sistemului. n continuare, TCi transmite mesajul privind pregtirea tranzaciei tuturor nodurilor n care aceasta a fost prelucrat. n aceste noduri, n urma recepionrii mesajului, fiecare controlor de tranzacii asociat decide asupra comiterii poriunii de tranzacie care i corespunde. n situaia n care rspunsul este afirmativ, controlorul de tranzacii din nod introduce n jurnal nregistrarea cu coninutul <ready T>, iar apoi foreaz coninutul jurnalului n memoria stabil, inclusiv toate nregistrrile din jurnal care se refer la tranzacia T. Apoi, controlorul de tranzacii transmite coordonatorului TCi mesajul ready T. Atunci cnd decizia este negativ, controlorul de tranzacii din nod nscrie nregistrarea <no T > n jurnal, n continuare transmind coordonatorului TCi mesajul abort T. A doua faz. Coordonatorul de tranzacii TCi poate stabili dac tranzacia T va fi comis sau abandonat, de ndat ce a primit rspunsuri de la toate nodurile la nesajul su de pregtire a 5

tranzaciei. Decizia respectiv poate fi luat de TCi i atunci cnd de la transmiterea mesajului <prepare T> a trecut un timp dat. Dac toate nodurile ce particip n proces au rspund prin mesajul ready T, tranzacia T poate fi comis, n jurnal se introduce nregistrarea <commit T>, iar coninutul jurnalului este nmagazinat n memoria stabil. n situaia contrar, T este abandonat, urmnd ca n jurnal s fie nscris informaia <abort T>, iar jurnalul- forat n memoria stabil. Potrivit exprimrii din literatura de specialitate (vezi Silberschatz, pg 216), n acest moment evoluia tranzaciei este definitiv. Ca urmare, sistemul coordonator TCi transmite tuturor nodurilor ce au luat parte la execuie mesaju commit T sau abort T. Primind unul din aceste mesaje, nodurile l nscriu n jurnal. S adugm cteva comentarii fa de elementele de mai sus. n primul rnd, de ndat ce controlor de tranzacii emite un mesaj ready T ctre coordonator, tranzacia se va gsi n situaia numit ready state n nodul corespunztor. n fapt, mesajul transmis coordonatorului este o promisiune formulat la nivelul nodului privind invitaia de comitere sau de abandonare exprimat de TCi. n acest context, trebuie remarcat c pentru a formula un asemenea rspuns, este necesar nscrierea unei informaii corespunztoare n memoria stabil. Dac informaia menionat nu va fi disponobil, este posibil ca n situaia n care, n urma apariiei unui defect, nodul n cauz iese din funciune dup ce a transmis mesajul ready T, intenia de comitere sau abandonare s nu mai poat fi realizat n mod corespunztor. n al doilea rnd, tot aici vom mai observa c drepturile de nchidere ale tranzaciei rmn valabile pn la comiterea acesteia, precum i faptul c T poate fi abandonat n orice moment, anterior celui n care controlorul de tranzacii din nod trimite coordonatorului mesajul ready T. n al treilea rnd, vom sublinia faptul c de ndat ce un nod a declarat abandonarea tranzaciei T prin rspunsul abort T, evoluia tranzaciei este definitiv, drept urmare a condiiei de unanimitate pentru comitere. n legtur cu aceasta, observm c decizia de abandonare a tranzaciei T poate fi luat n mod unilateral de ctre coordonatorul TCi, al nodului n care s-a produs prelucrarea tranzaciei. Decizia final asupra evoluiei tranaciei T este luat n momentul n care TCi nscrie hotrrea de comitere sau abandonare adoptat n jurnal, apoi n memoria stabil. Unele implementri ale protocolului 2PC prevd ca, la sfritul celei de a doua faze, controlorul de tranzacii din nod s transmit coordonatorului mesajul acknowledge T, urmnd ca dup recepionarea mesajului din partea tuturor nodurilor, TCi s introduc n jurnal nregistrarea <complete T>. Funcionarea protocolului de comitere n dou faze poate fi descris n o manier alternativ, prezentat succint n cotinuare. Fie o baz de date distribuit n N noduri. Mai jos, vor fi folosite notaiile: <> pentru reprezentarea nregistrrilor, iar . pentru mesaje. Admitem c din 6

componena unui nod i fac parte o unitate central de prelucrare UCPi, o memorie central MCi, o memorie de tip cache MCHi, n nod fiind nmagazinat codul tranzaciilor locale i subtranzaciilor ce aparin unor tranzacii globale, precum i sistemele de programe corespunztoare controlorului Tctri, respectiv coordonatorului de tranazaci TCi. La elementele de mai sus se adaug memoria secundar MSECi. n continuare, este prezentat schematic o desfurare posibil a activitii protocolului 2P Commit, la momentele de timp t1, t2, etc. Prima faz t1 t2 t3 t4 t5 t6 TCi <prepareT> -> jurnal TCi <jurnal> -> memoria stabil MSECi TCi <prepareT> -> noduri Tctrj decizie privind comiterea poriunii proprii de tranzacie decizie = Da, Tctrj <readyT> -> memoria stabil, sau decizie = Nu, Tctrj <noT> -> jurnal decizie = Da, Tctrj mesaj readyT -> TCi, sau decizie = Nu, Tctrj mesaj abort - > TCi.

A doua faz t7 t8 TCi analizeaz rspunsurile Tctrj din momentul t6 toate Tctrj -> mesaj readyT, TCi <commitT> -> jurnal, sau nu toate Tctrj -> mesaj ready, TCi <abort> -> jurnal t9 TCi <jurnal> -> memoria stabil MSECj t10 TCi <commitT> n toate nodurile, sau <abortT> n toate nodurile t11 fiecare Tctrj participant n prelucrarea tranzaciei <commitT> -> jurnal sau <abortT> -> jurnal.

n ipoteza c unul sau mai multe din nodurile reelei (respectiv dintre controloarele de tranzacie) nu voteaz favorabil, tranzacia nu poate comite. n aceast situaie, pentru tranzacie trebuie s se ajung n final la decizia Abort_Work(). Jurnalul tranzaciei va fi citit napoi, sub controlul coordonatorului de tranzacii. n acest proces, pentru fiecare nregistrare din jurna coordonatorul apeleaz nodul (controlorul) care a operat ultima actualizare, determinndu-l s iniieze o operaiune de distrugere a informaiei respective. Atunci cnd n procesul inspectrii inverse a jurnalului se ajunge n punctul de nceput al tranzaciei, respectiv acolo unde trebuie s se afle comanda Begin_Work(), va fi efectuat operaiunea de distrugere a acestei ultime comenzi, apoi n jurnal se introduce o nregistrare de abandonare. n sfrit, n jurnal este introdus o nou nregistrare, care consemneaz completarea abandonrii. Mai menionm c jurnalului tranzaciei i se asociaz un controlor propriu, a crui sarcin este de a gestiona nregistrrile din jurnal, prin intermediul unei liste nlnuite, n care fiecrei nregistrri i se atribue o cheie unic. Unul din obiectivele pentru care n procesul de inspectare a coninutului jurnalului se folosete o list nlnuit este asigurarea eficienei operaiunilor de distrugere evocate mai sus.

S-ar putea să vă placă și