Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
Prezentare generala
Pana in acest moment baza de date a fost privita static fara sa intereseze operatiile de transfer a datelor. Viziunea statica asupra bazei de date ascunde insa multe probleme a caror rezolvare este fundamentala pentru o utilizare corecta a bazei de date.
Prin prelucrarea datelor, baza de date trece din starea prezenta Sp intr-o stare urmatoare Su.
Se spune ca o baza de date se afla intr-o stare stabila daca si numai daca in aceasta stare sunt rezolvate toate restrictiile de integritate impuse bazei de date
Se spune ca o baza de date se afla intr-o stare instabila daca in aceasta stare cel putin o restrictie de integritate nu este satisfacuta
Prelucrarile asupra bazei de date trebuie astfel realizate incat baza de date sa ajunga intotdeauna intr-o stare stabila
Exista insa numeroase cauze care pot determina ca o baza de date sa evolueze dintr-o stare stabila intr-o stare instabila ceea ce evident nu poate fi acceptat.
Pentru intelegerea acestei situatii vor fi considerate mai multe exemple:
E1 Presupunem ca intr-o baza de date exista doua relatii R1 si R2 avand schemele R1(A, B, . ) respectiv R2(A, C, . ). In baza de date se impune urmatoarea regula de integritate regula de integritate:
" Pentru orice valoare a din A, orice valoare v care se aduna la B trebuie sa fie scazuta din C. Rezultatul scaderii trebuie sa fie pozitiv. Daca rezultatul scaderii este negativ nu se accepta operatia de actualizare. "
Evident, pentru realizarea operatiei de actualizare a atributului B xista mai multe variante posibile:
a) citeste B
B=B+v
scrie B
citeste C
C=C-v
Daca C≥0 scrie C.
b) citeste B
citeste C
B=B+v
C=C-v
scrie B
Daca C≥0 scrie C.
c) citeste C
C=C-v
Daca C≥0 (scrie C
citeste B
B=B-v
scrie B).
Daca toate operatiile decurg normal, in final trebuie sa se ajunga pentru toate variantele intr-o stare Su stabila adica o stare pentru care V+C=constant si C≥0.
Evolutia dintr-o stare in alta se realizeaza in momentul scrierii intr-o relatie deoarece numai scrierea modifica valorile atributelor care definesc starea bazei de date. Evolutia starilor pentru fiecare dintre cele trei variante considerate este prezentata in figura 6.1. Se observa ca in fiecare caz in parte tranzitia implica trecerea printr-o stare instabila Si in care numai o parte a regulii de integritate este respectata. Starile Sp si Su sunt stari stabile.
In continuare vor fi analizate cateva anomalii ce pot sa apara in derularea procesului de actualizare a datelor:
A1) Presupunem ca in fiecare caz, inaintea realizarii primei scrieri apare o cadere a sistemului. In acest caz continutul bazei de date nu este afectat si baza de date ramane in starea stabila Sp.
A2) Presupunem ca sistemul cade dupa realizarea primei scrieri. In acest caz baza de date ramane instarea instabila Si ceea ce reprezinta o eroare.
A3) Sistemul functioneaza corect dar C-v<0. Pentru variantele a) si b) acest lucru conduce la plasarea bazei de date in starea instabila Si, deci rezultatul este eronat. Pentru varianta c) baza de date ramane in starea stabila Sp ca si cum nu ar fi avut loc nici o operatie asupra bazei de date (operatiile de adunare si scadere se realizeaza in memoria tampon deci nu afecteaza continutul bazei de date).
Din analiza efectuata se observa ca in cazul in care prelucrarea datelor implica mai multe operatii de actualizare conectate logic printr-o regula de actualizare a datelor, pot sa apara anomalii care conduc la plasarea bazei de date intr-o stare instabila ceea ce nu poate fi acceptat. Tocmai pentru a evita astfel de situatii a fost introdusa notiunea de tranzitie.
Prin tranzitie se intelege un set de operatii de actualizare a continutului bazei de date, conectate logic printr-o regula de integritate, care ori se executa toate ori sunt anulate toate astfel incat in final baza de date se va afla intr-o stare stabila indiferent ce evinimente apar pe durata executarii acestor operatii.
E2 Se presupune ca asupra relatiei R1(A, . ) se initializeaza simultan doua tranzactii T1 si T2 de la doi utilizatori diferiti, U1 si U2. Fiecare tranzactie trebuie sa citeasca aceeasi valoare din A si sa inlocuiasca vechea valoare cu valoarea A+10. Este evident ca rezultatul corect dupa realizarea celor doua tranzactii trebuie sa fie A+20.
Se iau in considerare doua scenarii pentru desfasurarea celor doua procese de actualizare a datelor.
Scenariul 1:
T1 |
READ A |
A:=A+10 |
WRITE A |
|||
T2 |
READ A |
A:=A+10 |
WRITE A | |||
Valoarea lui A la U1 | ||||||
Valoarea lui A la U1 | ||||||
Valoarea lui A in baza de date |
Scenariul 2:
T1 |
READ A |
A:=A+10 |
WRITE A | |||
T2 |
|
READ A |
A:=A+10 |
WRITE A |
||
Valoarea lui A la U1 | ||||||
Valoarea lui A la U1 | ||||||
Valoarea lui A in baza de date |
Desigur o asemenea situatie in care rezultatul depinde de ordinea in care sunt executate tranzactiile (necontrolabila de catre utilizatori) nu poate fi acceptata.
Concluzia care seimpune in urma analizei efectuate este accea ca executia intretesuta a unor tranzactii poate sa conduca in anumite situatii la rezultate eronate deci cea mai simpla metoda de protectie ar consta in executarea serie a tranzactiilor prin blocarea accesului la baza de date pe tot timpul executiei unei tranzactii. Se poate arata (vezi exemplul E3) ca aceasta este o conditie suficienta dar nu neaparat necesara pentru obtinerea unor rezultate corecte.
E3. Se considera tranzactia T1 care executa operatia A:=A+1 pentru valoarea lui A din inregistrarea I1 si tranzactia T2 care executa aceeasi operatie asupra valorii lui A din inregistrarea I2. Se considera executia intretesuta a celor doua tranzactii dupa urmatorul scenariu:
T1 |
READ A |
|
|
A:=A+1 |
WRITE A | |
T2 |
|
READ A |
A:=A+1 |
|
WRITE A |
|
Valoarea lui A la U1 | ||||||
Valoarea lui A la U1 | ||||||
Valoarea luiA (I1) | ||||||
Valoarea luiA (I2) |
Rezulta imediat ca in cazul in care tranzactiile nu afecteaza aceleasi date, nu are importanta in ce ordine se executa actualizarea datelor.
Exista multe alte situatii care pun in evidenta necesitatea utilizarii unor mijloace speciale de gestiune a tranzactiilor pentru a asigura pe de o parte integritatea datelor iar pe de alta parte o executie optima a tranzactiilor in sensul scaderii timpului de servire a tranzactiilor.
Proprietatile tranzactiilor
Toate tranzactiile, indiferent de operatiile pe care le realizeaza trebuie sa posede urmatoarele caracteristici:
Copyright © 2024 - Toate drepturile rezervate