Home - qdidactic.com
Didactica si proiecte didacticeBani si dezvoltarea cariereiStiinta  si proiecte tehniceIstorie si biografiiSanatate si medicinaDezvoltare personala
referate stiintaSa fii al doilea inseamna sa fii primul care pierde - Ayrton Senna





Aeronautica Comunicatii Drept Informatica Nutritie Sociologie
Tehnica mecanica

Baze de date


Qdidactic » stiinta & tehnica » informatica » baze de date
Controlul accesului concurent la date



Controlul accesului concurent la date




In aceasta sectiune ne vom ocupa de modalitatile de prevenire a obtinerii unor rezultate incorecte din executia concurenta a unor prelucrari in regim multiutilizator.

Cea mai mare parte a aplicatiilor trebuie concepute pentru a putea functiona in regim de lucru multiutilizator si implementate pe sisteme care prezinta aceasta caracteristica.

In astfel de sisteme, sistemul de operare asigura accesul concurent al programelor in executie la resurse dupa o anumita disciplina interna. In cazul aplicatiilor care utilizeaza o aceeasi BD, intreruperea executarii unui proces pentru inceperea sau continuarea altora poate conduce la alterarea datelor. Asigurarea integritatii datelor, in acest context, presupune existenta unor facilitati speciale pentru controlul accesului concurent la date la nivelul SGBD.

Cateva dintre problemele care conduc la necesitatea controlului accesului concurent la date sunt: mentinerea consistentei multiplelor copii ale unor date, caderi ale unor statii sau ale unor linii de comunicatie care pot conduce la partitionarea retelei, realizarea unor tranzactii care acceseaza date de pe mai multe statii, interblocarea distribuita a tranzactiilor.

Pe langa solutii eficiente care sa raspunda problemelor de mai sus, un bun mecanism de control al concurentei trebuie sa asigure realizarea intr-un timp finit a fiecarei actiuni atomice si impunerea a cat mai putine constrangeri asupra structurii acestor actiuni, trebuie sa actioneze satisfacator intr-un mediu de retea care are intarzieri semnificative si sa permita paralelismul pentru a satisface cerintele de performanta.



Conceptul de tranzactie


In cazul celor mai multe sisteme de gestiune a bazelor de date unitatea de lucru in asigurarea consistentei datelor este tranzactia.

Tranzactia este o secventa de operatii care din punctul de vedere al SGBD constituie o unitate de prelucrare (proprietatea de atomicitate), aceasta insemnand ca se va accepta fie executarea ei completa fie, in situatia in care acest lucru nu este posibil, nu va trebui retinuta nici o modificare facuta de ea asupra bazei de date, SGBD efectuand (automat sau la comanda) derularea inapoi a tranzactiei.

O tranzactie este caracterizata de punctele sale de inceput si de sfarsit. Dupa modul in care acestea sunt definite, tranzactiile se pot clasifica in:

Tranzactii implicite – sunt acelea pentru care punctele de inceput si sfarsit sunt automat definite. Pentru unele limbaje toate comenzile de modificare a datelor (INSERT, UPDATE, DELETE) sunt tratate ca tranzactii implicite. In consecinta, nici una dintre aceste comenzi nu poate lasa baza de date intr-o stare de inconsistenta.

Tranzactii explicite – acestea presupun folosirea unor comenzi speciale pentru stabilirea punctelor de inceput si sfarsit ale tranzactiei. In SQL-SERVER, de exemplu, tranzactiile explicite permit utilizatorului sa grupeze un set de comenzi SQL intr-o tranzactie folosind comenzile BEGIN TRANSACTION si COMMIT TRANSACTION pentru precizarea punctelor de inceput si de sfarsit. De asemenea, utilizatorul poate defini puncte de salvare (utile in cazul tranzactiilor foarte mari) folosind comanda SAVE TRANSACTION sau sa deruleze inapoi tranzactia pana la punctul de inceput sau pana la punctul de salvare anterior, folosind comanda ROLLBACK TRANSACTION.

Executia concurenta necontrolata a tranzactiilor poate avea efecte nedorite.

Pentru exemplificare, sa presupunem ca avem un cont in banca de 5000$ (DISP) asupra caruia doua tranzactii vor efectua modificari:


T1 – retragerea sumei de 500$;

T2 – depunerea sumei de 1000$.

Fiecare tranzactie presupune efectuarea a trei actiuni:

citirea continutului campului DISP intr-o zona de memorie;

modificarea valorii citite;

scrierea in campul DISP a valorii modificate.

Daca cele doua tranzactii se vor efectua concurent putem avea urmatoarea secventa de actiuni in timp:


In final, BD va contine in campul DISP valoarea 6000 in loc de 5500, cat ar fi corect. Se observa ca actualizarea realizata de T1 s-a pierdut ca efect al intercalarii lui T1 si T2.

Asemenea probleme pot fi evitate daca SGBD ofera posibilitatea blocarii datelor utilizate la un moment dat de o tranzactie, intelegand prin aceasta interzicerea accesului celorlalte tranzactii concurente la aceste date. O alta metoda de rezolvare a conflictelor generate de concurenta este metoda “etichetelor de timp” (timestamps).


2 Tehnica blocarii


Inconsistenta BD din exemplul anterior este consecinta executiei concurente necontrolate a tranzactiilor.O tehnica utilizata de SGBD pentru a asigura executia serializabila a tra0nzactiilor este tehnica blocarii.

Efectiv, blocarea se realizeaza prin emiterea de catre o tranzactie a unei cereri (implicite sau explicite) de blocare pentru SGBD. Daca cererea este admisa, tranzactia va continua. Altfel, cererea va fi pusa intr-o lista de asteptare pana ce resursa vizata va fi eliberata.

Situatiile in care o cerere pentru o anumita resursa poate fi admisa, in conditiile in care exista deja o blocare pentru resursa respectiva sunt ilustrate de matricea compatibilitatii blocarilor partajabile si exclusive:

Considerand doua situatii extreme (baza de date si campul) putem sintetiza urmatoarele aspecte:

blocarea intregii BD la o anumita operatie a utilizatorului ii pune pe ceilalti utilizatori in imposibilitatea de a accesa concurent datele, in timp ce gestiunea informatiilor de blocare se simplifica foarte mult;

blocarea unui singur camp al unei inregistrari da posibilitatea de acces concurent celorlalti utilizatori chiar la campuri ale aceleiasi inregistrari, insa face ca gestionarea informatiilor de blocare sa fie foarte complexa.

Cele mai multe SGBD ofera posibilitatea blocarii la nivel de inregistrare, la nivelul unui grup de inregistrari si la nivel de fisier.

Pentru administrarea blocarilor se poate recurge la unul din urmatoarele moduri:

setarea unui bit pentru resursa blocata;

mentinerea unei liste a resurselor blocate;

mentinerea resurselor blocate intr-o zona speciala a memoriei





Contact |- ia legatura cu noi -| contact
Adauga document |- pune-ti documente online -| adauga-document
Termeni & conditii de utilizare |- politica de cookies si de confidentialitate -| termeni
Copyright © |- 2024 - Toate drepturile rezervate -| copyright