Sunteți pe pagina 1din 236

c1_pbd.

pdf
c2_pbd.pdf
c3_pbd.pdf
c4_pbd.pdf
c5_pbd.pdf
c6_pbd.pdf
c7_pbd.pdf
c8_pbd.pdf
c9_pbd.pdf
Proiectarea bazelor de date
Curs 1
Scopul cursului:
 nelegerea i deprinderea modului de proiectare
a bazelor de date i a aplicaiilor de baze de date

Mod de evaluare:
- 50% activitatea din timpul anului
- 50% nota la examenul final

October 15, 2004 1


Capitolul I - Informaii generale
 Cunotine anterioare necesare:
 Noiuni fundamentale de baze de date
 Structuri de date
 Noiuni abordate pe parcurs:
 Diferite aspecte ale proiectrii conceptuale, logice i fizice ale bazelor de date
 Gestiunea tranzaciilor
 Optimizarea interogrilor
 Securitatea n sistemele de baze de date
T cu particularizare n ORACLE 9i

 Bibliografie:
- Baze de date. Proiectare. Gestiune. Implementare. Thomas Connolly, Carolyn Begg, Anne Strachan
Ed. Teora 2001
- Baze de date relationale M. Fotache
- Baze de date si gestiunea tranzactiilor R. Dollinger, Ed. Albastr

October 15, 2004 2


Recapitularea noiunilor fundamentale
Scurt istoric al organizrii i prelucrrii datelor
 Sisteme tradiionale bazate pe fiiere (1950-1960)
 SGBD bazate pe modelul de date ierarhic sau reea (1970)
 SGBD relaionale
 Apariia modelului relaional (1970)
 Dezvoltarea SGBD relaionale (1970)
 Apariia SGBDR comerciale (1980)
 Maturizarea tehnolohgiei relationale pentru SGBD (1990)
 Sisteme de baze de date obiect-relationale
 Sisteme de baze de date deductive i sisteme de baze de date orientate obiect.
 Sisteme de baze de date orientate spre aplicaii
 Baze de date spaiale, temporale, multimedia, Web...
 Sisteme de depozitare a datelor (Data warehousing) i sisteme de explorare a
datelor (data mining) (pentru analiza datelor)

October 15, 2004 3


Ce este o baz de date?
 Baza de date
 Definiii:
 O colecie partajat de date ntre care exist relaii logice mpreun cu descrierea acestor date, proiectat
pentru a satisface necesitile informaionale ale unei organizaii.
 O colecie autodescris de nregistrri integrate
 Conine:
 Datele operaionale
 Descrierea datelor (meta-datele) reunite n catalogul (dicionarul) de date

 Avantaje: memorarea convenabil i eficient a datelor i posibilitatea generrii de informaii din volume
mari de date
 Eficien i scalabilitate n ceea ce privete accesul la date i regsirea acestora
 Independena datelor
 Redundan controlat
 Posibilitatea de a asigura integritatea i securitatea datelor
 Faciliti de acces concurent asupra datelor i posibilitatea recuperrii acestora n cazul unui defect
 ncurajarea introducerii standardelor
 Administrarea uniform a datelor
 Analiza datelor ( tehnici OLAP i Data Mining)

October 15, 2004 4


Independena datelor
T Delimitare net ntre aplicaii i modul de structurare i memorare a
datelor
 Abilitatea de a modifica definiia schemei la un anumit nivel fr a afecta
definiia schemei la un nivel superior
T Independena fizic a datelor - imunitatea aplicaiilor fa de
modificrile n structura fizic de memorare a datelor
 Unul din avantajele majore ale utilizrii unui SGBD!
T Independena logic a datelor - imunitatea modelului propriu al
fiecrui utilizator fa de modificrile n structura logic global
(schema conceptual) a bazei de date
U Independena logic este greu de obinut dac aplicaiile sunt puternic dependente de
structura logic a datelor

October 15, 2004 5


Instane i scheme
T Bazele de date se schimb n timp
T Datele coninute ntr-o baz de date la un moment dat reprezint
instana bazei de date
T Structura proiectat pentru o baz de date reprezint schema acesteia
T Analogia cu limbajele de programare :
 Definiia tipului de dat schema
 Valoarea unei variabileinstana

T Corespunztor nivelurilor de abstractizare exist:


 schema fizic,
 schema conceptual,
 subschemele (vederile sau schemele externe)(pot fi mai multe)

October 15, 2004 6


Sistemul de gestiune a bazelor de
date
T SGBD un sistem de programe care permite utilizatorului definirea, crearea i
ntreinerea bazei de date i accesul controlat la aceasta.
T Ofer:
T Faciliti de definire a datelor (DDL)
T Faciliti de manipulare a datelor (DML)
T Un sistem de securitate a datelor
T Posibiliti de gestiune a tranzaciilor, etc.

October 15, 2004 7


Mediul SGBD

Date Proceduri Persoane


Hardware Software

Proiectanii bazei Administratorul Utilizatorii bazei


de date de baze de date de date

Pr. b.d. logice Pr. b.d. fizice Programatorii Utilizatorii


de aplicaii finali

Specialiti Nespecialiti

October 15, 2004 8


Proiectanii bazei de date

 Proiectantul bazei de date logice:


 Identific datele (entiti i atribute)
 Identific legturile ntre date
 Stabilete constrngerile asupra datelor stocate n baza de date
T Cunoate n detaliu datele organizaiei i regulile sale comerciale
Proiectarea conceptual a bazei de date este independent de detaliile de
implementare (SGBD, programe aplicaie, limbaje de programare, etc...)
Proiectarea logic a bazei de date ndreptat spre un anumit model de date
 Proiectantul bazei de date fizice
 Transpune modelul logic ntr-un set de tabele
 Selecteaz structurile de stocare i metodele de acces specifice
 Stabilete msurile de protecie i securitate a datelor

October 15, 2004 9


Modelul relaional
 Cel mai utilizat n practic, baza a numeroase SGBD-uri comerciale
 Model orientat pe mulimi
 Are ca unic element de structur - relaia
 Practic relatia, este un tabel cu rnduri i coloane
 Fiecare relaie are o schem, care descrie cmpurile (coloanele)
Domeniu ansamblu de valori
Exemplu: baza de date a Universitii admisibile pentru o component
Schema conceptual :
a unei relaii
Studeni (sid: string, nume: string, adresa:
string, ddn: date) Atribut utilizarea sub un
Cursuri (cid: string, cnume: string, credite: nume oarecare a unui domeniu
integer)
Atribute
Inscrieri (sid: string, cid: string)
Schema fizic:
Relaiile sunt memorate ca fiiere cid cnume credite
neordonate
EDT.SFT.101 TPT 5
Se creaz un index dup prima coloan
din Studeni Cardina- EDT.HRD.307 CN 6
Schema extern ( vederea -View): litate
ELT.GEN.502 Managemant 4
 Curs_info (cid: string, inscrii: integer)

grad
October 15, 2004 10
Chei relaionale
 Supercheie un atribut sau un set de atribute care identific n mod unic un tuplu
(nregistrare) din cadrul unei relaii.
 Cheie candidat supercheie pentru care nici o submulime nu este supercheie n
relaia respectiv.
 Cheie primar cheia candidat selectat pentru a identifica tuplurile unei relaii
 Cheie strin un atribut sau o mulime de atribute din cadrul unei relaii provenite
din propagarea unei chei candidat a unei alte relaii.

Integritate relaional
Integritatea domeniului constrngeri de domeniu
Integritatea entitilor ntr-o relaie de baz nici un atribut al unei chei primare
nu poate fi null
Integritatea referenial orice valoare a unei chei strine dintr-o relaie trebuie
s se gseasc printre valorile cheii candidat din care provine.

October 15, 2004 11


Capitolul II - Introducere n proiectarea bazelor
de date
 Etapele proiectrii bazelor de date
 Proiectarea conceptual a bazelor de date cu ajutorul modelului ER
 Trecerea de la diagrama ER la schema relaional
 Modelarea constrngerilor n diagrama ER
 Entiti slabe n diagrama ER
 Principii de proiectare
 Proiectarea conceptual cu ajutorul modelului ER

October 15, 2004 12


Etapele proiectrii bazelor de date
1) Analiza solicitrilor
S Ce date, aplicaii i operaii sunt necesare
2) Proiectarea Conceptual a bazei de date:
S Descrierea la nivel nalt a datelor i constrngerilor dintre acestea
utiliznd modelul ER sau un model similar de nivel nalt
3) Proiectarea Logic a bazei de date:
S Convertirea modelului conceptual ntr-o schem de baze de date
4) Rafinarea schemei
S Normalizarea relaiilor: controlul schemei din punct de vedere al
redundanei i a anomaliilor asociate acesteia.
5) Proiectarea fizic a bazei de date:
S Indexare, grupare (clustering) ...
6) Proiectarea sistemului de securitate :
S Identificarea diferitelor grupuri de utilizatori i a rolurilor acestora

October 15, 2004 13


Proiectarea conceptual a bazei de date

 Probleme ale proiectrii conceptuale: ( etap n care se


utilizeaz modelul ER)
U Care sunt entitile i legturile dintre acestea n ntreprindere
(organizaie)?
U Ce informaii despre aceste entiti i legturi vor fi memorate n baza de
date?
U Ce constrngeri de integritate i ce reguli de afacere trebuie luate n
considerare?
U Cum se reprezint grafic schema bazei de date ( diagrama ER).
U Cum se transpune diagrama ER ntr-o schem relaional?

October 15, 2004 14


Modelul Entitate-Relaie
 Model de date conceptual de nivel nalt
 Dezvoltat de Chen (1976)
 Model de date conceptual - set de concepte care descriu structura unei baze de date
precum i tranzaciile de regsire i de reactualizare asociate.

Idee Model ER Schema SGBD


relaional relaional
-tipuri de entiti
Elementele modelului E-R -tipuri de legturi
-atribute

Este un graf:
 nodurile reprezint tipuri de entiti, tipuri de
legturi i atribute,
Diagrama ER  arcele leag tipurile de entiti de atributele lor,
respectiv tipurile de entiti cu simbolurile asocierilor
corespunztoare
Notaie simbolic ce descrie schema unei baze de date
October 15, 2004 15
Exemple de diagrame ER
Constrangere
de cardinalitate
Tip de Cheie
Legatura
Atribut (binara)

nume prenume Nr_cont Id_caseta titlu gen

sold
Tip de
entitate
telefon Client inchiriaza Videocasete
Atribut cu
valori multiple

pret
Nu_inchirieri adresa Data rating
Data_retur
achiz
Data_inch termen lungime

str
Atribut
derivat Atribut
localit compus
Cod_postal

October 15, 2004 16


Roluri

sotie copil
Nume alternativ
1 M pt. asociere

Casatorit Copilul
Persoana
cu lui
Parinte al
1 1..2
sot cnp parinte

October 15, 2004 17


nume
cnp sex
Legtur ISA
Angajai

Salariu_ora Ore_lucrate
ISA
contractid

Colab_extern Ang_contract

 Legturile isa sunt ntotdeauna legturi 1:1

October 15, 2004 18


Trecerea de la diagrama E/R la schema
relational
T Tipul de entitate relaie

T Legtura ntre tipurile de entiti relaie

October 15, 2004 19


Transformarea tipului de entitate n relaie

nume categorie

pre

Produs

Produs(nume, categorie, pre)

nume categorie pre

Camer foto foto 50

October 15, 2004 20


Transformarea legturilor ntre entiti n relaii
 Orice tipuri de legturi: utilizarea tabelelor de jonciune
 Legturi 1:N propagarea cheilor primare ca i chei strine
pre nume categorie
An_lans numef
pre_prod
Produs Fabricat de Firm
Cum se poate transforma o
Fabricat_de(nume,categorie,numef, an_lansare) legtur de grad superior n
(atenie la posibilele conflicte de nume de cmpuri) relaie?
pre nume categorie
An_lans numef
pre_prod
Produs Fabricat de Firm

Produs (nume,categorie, pre, an_lansare,numef)

October 15, 2004 21


Transformarea ierarhiilor ISA n relaii
T Exist dou alternative:
U Cte o relaie pentru fiecare tip de entitate
 Manipularea datelor din tabele trebuie s in cont de constrngerile de integritate:
dac se terge un tuplu din tabelul parinte trebuie obligatoriu ters tuplul din tabelul
de referin corespunztor
 Interogrile care implic toate tuplurile sunt simple, cele care se refer doar
la una din subclase presupune un join pentru a regsi anumite atribute
U Cte o relaie pentru fiecare din subclase, care sa conin att atributele
proprii ct i cele ale clasei printe.
I. Angajai (cnp, nume,sex)
Colab_ext (cnp, sal_ora, ore_lucr)
nume
cnp sex Ang_contr (cnp, contractid)

Angajai

Sal_ora Ore_lucr
ISA
contractid

Colab_ext Ang_contr II. Colab_ext (cnp,nume,sex,sal_ora, ore_lucr)


Ang_contr (cnp,nume,sex, contractid)

October 15, 2004 22


Proiectarea bazelor de date
Curs 2

Modelarea constrngerilor
Entiti slabe
Principii de proiectare conceptuala
October 15, 2004 1
Modelarea constrngerilor n diagrama ER
 Constrngerile - informaii adiionale asupra acelor aspecte ale
realitii care nu pot fi modelate prin entiti i prin legturile
dintre acestea
 Constrngeri structurale - restricii impuse asupra legturilor:
 constrngeri de cardinalitate
 constrngeri de participare
 Alte tipuri de constrngeri - legate de atribute
 chei
 constrngeri de valoare unic
 constrngeri de integritate referenial
 constrngeri de domeniu
 constrngeri generale

October 15, 2004 2


Constrngeri de cardinalitate
 sunt impuse de raportul de cardinalitate
 raportul de cardinalitate descrie numrul de asocieri posibile pentru fiecare
entitate participant
 regulile care definesc cardinalitatea - reguli de afacere
 ex. pentru o legtur binar rapoartele de cardinalitate sunt: 1:1, 1:N, M:N

Constrngeri de participare
Determin dac existena unei entiti depinde de faptul c aceasta este
asociat unei alte entiti printr-o legtur
constrngeri -
totale - existena unei entiti necesit existena unei entiti asociate
pariale
n diagrame ER constrngerile de participare total sunt simbolizate prin
linii duble (sau ngroate)

October 15, 2004 3


Constrngeri de participare-exemplu
 Este obligatoriu ca fiecare departament s aib un manager?
 Dac DA, atunci este o constrngere de participare
 constrngerea: participarea entitilor din tipul Departamente n
asocierea Administreaz este total
 n acest caz fiecare valoare did din tabelul Departamente trebuie s
apar ntr-un rnd din tabelul Administreaz (pentru valorile cnp non-
null!)

Din_data
name
nume dnume
cnp sex did buget

Angajai Admin. Departamente

Lucreaza_in

Din_data
October 15, 2004 4
Constrngeri de participare in SQL
 Constrngerile de participare pot fi descrise in SQL
 pot fi surprinse constrngerile de participare care implic un tip de
entitate dintr-o legtur binar chiar fr a recurge la clauza CHECK
CREATE TABLE Dep_Adm(
did INTEGER,
dnume CHAR(20),
buget REAL,
cnp CHAR(11) NOT NULL,
din_data DATE,
PRIMARY KEY (did),
FOREIGN KEY (cnp) REFERENCES Angajati ,
ON DELETE NO ACTION)

October 15, 2004 5


Chei
nume dnume
 Se consider c n
cazul legturii cnp sex did buget
Lucreaz_In: un
angajat poate lucra n Angajai lucreaz_In Departamente
mai multe
departamente; un
departament poate
Din_data
avea mai muli angajai
nume dnume
 Fiecare departament
are cel mult un cnp sex did buget
manager, conform
constrngerii de cheie Angajai Admin Departamente
din Admin

 Cum se face translatarea n modelul relaional?


October 15, 2004 6
Translatarea diagramelor ER cu constrngeri
de cheie
 Maparea unei legturi CREATE TABLE Admin(
cnp CHAR(11),
n tabel: did INTEGER,
 Cheia este did ! din_data DATE,
 Exist tabele PRIMARY KEY (did),
separate pentru FOREIGN KEY (cnp) REFERENCES Angajati,
FOREIGN KEY (did) REFERENCES Departamente)
Angajai i
Departamente
CREATE TABLE Dep_Adm(
 Deoarece fiecare did INTEGER,
departament are un dnume CHAR(20),
manager unic,pot fi buget REAL,
combinate tabelele cnp CHAR(11),
Admin i din_data DATE,
Departamente PRIMARY KEY (did),
FOREIGN KEY (cnp) REFERENCES Angajati)
October 15, 2004 7
Constrngeri de cheie pentru legturi ternare
Din_data
nume dnume
cnp sex did buget

Angajati Lucreaz_In Departamente

addres Locatie capacit

 Pentru a indica o constrngere de cheie a unui tip de entitate


E in legtura R,se deseneaz o sgeat de la E ctre R
 Diagrama ER indic faptul c fiecare angajat lucreaz cel
mult ntr-un departament i ntr-o singur locaie

October 15, 2004 8


Constrngeri de valoare unic
Indic faptul c cel mult o valoare joac un anumit rol.
Sgeata indic faptul c cel mult o entitate din tipul ctre care este
ndreptat, este asociat cu entiti din tipul (tipurile) legate.

produce

v s.

produce

October 15, 2004 9


Alte constrngeri

<100
Produse produce Companie

Cum se poate interpreta diagrama dat ?

October 15, 2004 10


Entiti slabe
 Sunt tipuri de entiti ale cror chei sunt compuse din atribute
care provin parial sau n totalitate din alte tipuri de entiti
 dou surse de tipuri de entiti slabe:
 ierarhii pe baz de clasificare (fr legturi cu ierarhiile isa)- pentru
anumite subuniti ale unor tipuri de entiti, este posibil ca numele s
nu fie unice atta timp ct nu se ia n considerare i numele entitilor
crora le sunt subordonate
 tipurile de entiti de conectare care elimin tipurile de legturi de
grad superior - de regul nu au propriile lor atribute, iar cheile lor sunt
formate din atributele care sunt chei n tipurile de entiti legate

October 15, 2004 11


Entiti slabe
 O entitate slab poate fi identificat unic numai dac se ia n
considerare cheia primar a altei entiti (entitate proprietar -
owner)
 Tipurile de entitile slabe i tipurile de entiti proprietar trebuie
s fie pri ale unei legturi 1:N (partea unu - entitatea
proprietar,partea N- mai multe entiti slabe)
 Tipul de entitate slab trebuie s aib o participare total n tipul de
legtur care o asociaz cu tipul de entitate proprietar - tip de legtur de
identificare sau de susinere
nume
pret nume ddn
cnp sex

Angajati Intrein Pers_intret

October 15, 2004 12


Translatarea tipurilor de entiti slabe
 Entittea slab i legtura de identificare sunt
translatate ntr-un singur tabel.
CREATE TABLE pers_intret (
nume CHAR(20),
ddn DATE,
pret REAL,
cnp CHAR(11) NOT NULL,
PRIMARY KEY (nume, cnp),
FOREIGN KEY (cnp) REFERENCES Angajati,
ON DELETE CASCADE)

Stergerea cascadat impune ca dac o entitate proprietar este tears,


atunci toate entitile slabe asociate trebuie terse.
October 15, 2004 13
Principii de proiectare
T Corectitudinea
T Evitarea redundanei
T Evitarea introducerii n proiect a mai multor
elemente dect sunt strict necesare
T Stabilirea corect a legturilor
T Alegerea tipurilor corecte de elemente

October 15, 2004 14


Corectitudinea
Care sunt erorile din diagramele de mai jos?
nume Nr_locuitori
cnp

Produs Cumpr Persoan

ar Preedinte Persoan

Concluzii:
tipurile de entiti i atributele trebuie s reflecte realitatea.
legturile trebuie stabilite a.. s aib un sens dat de ceea ce se cunoate
despre realitatea modelat.

October 15, 2004 15


Corectitudinea
data
Produs

Cumpr Magazin

Adresa_pers Nume_pers

Concluzia: folosii tipurile adecvate de entiti.

October 15, 2004 16


Evitarea introducerii n proiect a mai multor
elemente dect sunt strict necesare
Date data

Produs

Cumpr Magazin

Persoan

Concluzia: nu v complicai viaa mai mult dect este deja!!!

October 15, 2004 17


Stabilirea corect a legturilor
 Tipurile de entiti pot fi legate ntre ele n diverse moduri prin
legturi
 nu este necesar adugarea la un proiect a tuturor legturilor
posibile
 redundan
 incoeren
 spaiu suplimentar de stocare

October 15, 2004 18


Alegerea tipurilor corecte de elemente

T Entitate vs atribut
T Entitate vs legtur
T Legturi binare vs legturi ternare

October 15, 2004 19


Entitate vs. Atribut
 Este posibil ca adresa s fie un atribut asociat entitii Angajai
sau o entitate conectat la Angajai printr-o legtur?
 Soluia depinde de modul de utilizare a informaiilor despre
adres u de semnificaia datelor:
 dac exist mai multe adrese pentru un angajat, adresa
trebuie s fie o entitate (deoarece atributele nu pot avea
valori multiple)
 dac structura (ora, strad, etc.)este important (ex. se
dorete regsirea angajailordintr-un ora), adresa
trebuie modelat ca o entitate (chiar dac valorile
atributelor sunt atomice)

October 15, 2004 20


Entitate vs. Atribut (II)
T Lucr_In2 nu permite ca
un angajat s lucreze
ntr-un departament
dou sau mai multe De_la pn
nume dnume
perioade cnp sex did buget
T Similar cazului n care
Angajai Lucr_in2 Departament
se dorete
nregistrarea mai
multor adrese pentru
un angajat: se dorete
nregistrarea mai nume dnume
cnp sex did buget
multor valori ale
atributelor descriptive
Angajai Lucr_In3 Departament
pentru fiecare instan
a acestei legturi
De_la Durata pn

October 15, 2004 21


Entitate vs. Legtur
Din dbuget
nume dnume
cnp sex did buget

Angajai Administr.2 Departament

T Corect dac fiecare manager primete cte un buget separat


pentru departamentul pe care l administreaz.
T Ce se ntmpl dac se obine un buget care acoper toate
departamentele administrate?
U Redundan: dbudget este memorat pentru fiecare departament
administrat de un manager
U Semnificaie greit: Sugereaz c dbudget este asociat cu combinaia
departament-angajat

October 15, 2004 22


Entitate vs. Legtur

nume
cnp sex
din dname
Angajai did budget

Administr2 Departament
ISA

Manageri dbuget

Este un mod de rezolvare a problemelor!!!

October 15, 2004 23


Legturi binare vs.legturi ternare
T Se presupune c fiecare pensie este asigurat exact de un angajat:

nume
cnp sex cnume ddn

Angajai Asigur Pensionar

Pensie

pid valoare

O eventual constrngere de cheie pentru tipul de entitate Pensii, ar putea


avea ca semnificaie faptul c o pensie poate asigura cel mult un pensionar!

Proiectare gresita

October 15, 2004 24


Legturi binare vs.legturi ternare (II)
nume pnume ddn
cnp sex

Pensionar
Angajai

Furnizor
Beneficiar

Pensie

pid valoare

T Care sunt constrngerile adiionale n diagrama din


imagine?

October 15, 2004 25


Legturi binare vs.legturi ternare(III)
T Constrngerile de CREATE TABLE Pensii (
cheie permit pid INTEGER,
combinarea dintre valoare REAL,
Furnizor i Pensie cnp CHAR(11) NOT NULL,
i dintre Beneficiar PRIMARY KEY (pid).
i Pensionar FOREIGN KEY (cnp) REFERENCES Angajati,
ON DELETE CASCADE)
T Constrngerile de
participare conduc
la constrngeri de CREATE TABLE Pensionar (
pnume CHAR(20),
NOT NULL
ddn DATE,
T Ce se ntmpl pid INTEGER,
dac Pensii este PRIMARY KEY (pnume, pid).
o entitate slab? FOREIGN KEY (pid) REFERENCES Pensii,
ON DELETE CASCADE)

October 15, 2004 26


Legturi binare vs.legturi ternare(IV)
T Exemplul dat ilustreaz un caz n care dou legturi binare
au fost mai indicate dect o legtur ternar.
T Fie legtura ternar Contracte care asociaz tipurile
de entiti Piese, Departamente i Furnizori, i care
are atributul descriptiv cantitate. Aceasta nu poate fi
substituit corespunztor de nici o combinaie de
legturi binare:
UF pot furniza P, D au nevoie de P, i D lucreaza cu
F nu implic faptul c D au agreat s cumpere P de la F.
U Cum poate fi nregistrat atributul cantitate?

October 15, 2004 27


Proiectarea conceptual utiliznd
modelul ER
T Decizii n proiectare:
U Poate fi un concept modelat printr-o entitate sau prin atribute?
U Poate fi un concept modelat printr-o entitate sau printr-o legtur?
U Identificarea legturilor: Binare sau ternare? Agregarea?
T Constrngeri n modelul ER:
U Permit specificarea nelesului datelor
U Anumite constrngeri nu pot fi surprinse prin diagramele ER
T Necesitatea rafinrii ulterioare a schemei:
U Schema relaional obinut din diagrama ER este un prim pas
important dar proiectarea conceptul este subiectiv i nu poate
exprima anumite constrngeri; astfel nct schema relaional trebuie
rafinat

October 15, 2004 28


Constrngeri dincolo de modelul ER
 Dependene funcionale:
U ex. Un departament nu poate comanda dou piese diferite de la acelai
furnizor.
 Nu poate fi exprimat prin legruri ternare
U Normalizarea rafineaz proiectarea conceptual prin luarea n
considerare a dependenelor funcionale
 Dependene de incluziune:
U Cazuri speciale: cheile strine
U ex. , Cel puin o persoan trebuie s se subordoneze fiecrui manager.
(Mulimea valorilor cnp din tabelul Administreaz trebuie s fie o
submulime a valorilor cnp_supervizor din tabelul Subordonat)
 Constrngeri generale:
U ex. Bugetul la dispoziia managerului mai mic de 10% din bugetul total al
departamentului pe care l administreaz

October 15, 2004 29


Concluzii
 Proiectarea conceptual urmeaz fazei de analiz a cererilor,
U furnizeaz o descriere la nivel nalt a datelor ce vor fi stocate
 modelul ER este cel mai popular pentru proiectarea conceptual
U Constructiile sunt expresive, apropiate de modul n are oamenii i gndesc
aplicaiile
 Elementele de baz: entiti, legturi i atribute (corespunztoare entitilor i
legturilor)
 Elemente adiionale: entiti slabe, ierarhii ISA , i agregri.
 Not: Exist mai multe variante de model ER.
 Modelul ER poate exprima o serie de constrngeri de integritate, printre
care:constrngeri de chei, constrngeri de participare i constrngeri de acoperire
sau constrngeri de suprapunere, pentru ierarhiile ISA. Anumite constrngeri de
chei strine sunt de asemenea implicite n definirea unui tip de legtur.
 O parte a acestor constrngeri pot fi exprimate n SQL
 Anumitre constngeri ( dependene functionale) nu pot fi exprimate n modeul
ER.
 Constrngerile joac un rol important n determinarea celui mai bun proiect de
baze de date pentru o ntreprindere.
October 15, 2004 30
Concluzii
 Modelul ER este subiectiv. Adesea exist mai multe
metode de a furniza un scenariu: entitate vs. atribute,
entitate vs. legtur, legtur binar sau n-ar,dac sau nu
se vor folosi ierarhiile isa,i cnd se va utiliza agregarea.
 Pentru a asigura o proiectare corect pentru baza de date,
schema referitoare la schema relaional va fi analizat i
rafinat. Tehnicile de normalizare sunt utilizate pe scar
larg.

October 15, 2004 31


Proiectarea bazelor
de date

GESTIUNEA TRANZACIILOR 1
Curs 3

January 5, 2005 1
Gestiunea tranzaciilor
 Ce sunt tranzaciile? Exemple
 Proprietile ACID
 Planificarea tranzaciilor
 Execuia concurent a tranzaciilor
 Controlul concurenei bazat pe blocri
 Controlul concurenei prin marci de timp
 Gestiunea interblocrilor n baze de date centralizate

January 5, 2005 2
Ce sunt tranzaciile?
 Tranzacia - o aciune sau o serie de aciuni efectuate de ctre un singur
utilizator sau de ctre un program aplicaie, prin care se acceseaz sau se
modific coninutul bazei de date.
 unitatea logic de prelucrare din baza de date -asigur coerena i
sigurana.
 O baz de date este coerent (consistent) dac respect toate
constrngerile de integritate a datelor definite asupra sa.
 garantat indiferent de faptul c tranzacia a fost executat concurent cu alte
tranzacii sau c au aprut defecte n timpul execuiei acesteia.
 Sigurana bazei de date se refer la tolerana acesteia fa de defecte
i la capacitatea de recuperare dup apariia unui defect.

 tranzacia - imaginea abstract a unui SGBD asupra unui program


 poate fi considerat ca o secven de operaii de citire (read) respectiv de
scriere (write)

January 5, 2005 3
Exemple:
Profesor (pid, nume, funcie, salariu)
Cursuri (codc, numec, pid)
Actualizarea salariului unui profesor, cunoscndu-se
identificatorul acestuia (pid=x).

Read(pid=x, salariu)
Salariu= salariu*1,5
Write (pid=x, salariu)

January 5, 2005 4
tergerea unui profesor, cu identificatorul pid=y (pe lng tergerea
tuplului din relaia Profesor este necesar gsirea tuturor tuplurilor din
relaia Cursuri pe care le susine profesorul respectiv i atribuirea lor altui
profesor - posibil unuia nou, care are pid=z). Secvena operaiilor este
urmtoarea :
Delete(pid=y)
For toate nregistrrile din Cursuri, codcurs
Begin
Read(codc=codcurs, pid)
If (pid=y) then
Begin
Pid=z
Write (codc=codcurs, z)
End
End.
 dac nu sunt efectuate toate aceste actualizri baza de date se va afla ntr-o
stare incoerent.

January 5, 2005 5
Urmrirea vnzrilor respectiv stocurilor pentru produsele unei ntreprinderi:
STOC(codpr,den, pret, cant)
CLIENTI (codc, nume,adresa)
VNZRI(codc, codpr, cantv)
-nregistrarea unei vnzri - introduc codc, codpr i cantv n relaia Vnzri.
- secven SQL integrat ntr-un mediu de programare (Pascal), astfel:
Begin_transaction Vinzari
Begin
Input(codprod, codcli, cantit)
Exec SQL
Tranzacia este corect?
UPDATE Stoc; Realitatea este reprezentat
SET cant=cant-cantit; corespunztor?
WHERE codp=codprod
Exec SQL
INSERT INTO Vnzari (codc, codp, cantv);
VALUES (codcli, codprod, cantit)
Output (Vanzare efectuata)
End

January 5, 2005 6
Begin_transaction Vnzari
Begin
Input(codprod, codcli, cantit)
Exec SQL
SELECT cant FROM Stoc WHER codp=codprod INTO temp
If temp.cant=0 then
Begin
Output( Nu mai exist produsul in stoc)
ABORT
End
else
begin
Exec SQL
UPDATE Stoc SET cant=cant-cantit WHERE codp=codprod
Exec SQL
INSERT INTO Vnzari (codc, codp, cantv);
VALUES (codcli, codprod, cantit)
COMMIT
Output (Vanzare efectuata)
End
End

January 5, 2005 7
Caracteristici ale unei tranzacii
 tranzacia poate avea dou rezultate
 dac aceasta execut cu succes toate operaiile prevzute:
 tranzacia a fost efectuat,

 baza de date ajunge ntr-o nou stare coerent.

 tranzacia se termin printr-o operaie de validare (commit).

 dac tranzacia nu reuete s execute cu succes toate operaiile


prevzute (este abandonat):
 este obligatoriu ca baza de date s fie refcut n starea coerent n
care se afla nainte de nceperea acesteia.
 tranzacia este rulat napoi sau anulat (rollback sau abort)

 implic oprirea execuiei


 anularea efectelor tuturor operaiilor executate pn n momentul
respectiv

January 5, 2005 8
 O tranzacie efectuat nu mai poate fi abandonat. Efectul
su, n cazul n care este greit, va fi anulat printr-o alt
tranzacie numit tranzacie compensatoare.
 Comanda de validare a unei tranzacii are rol dublu.
 indic SGBD-ului momentul de la care efectele tranzaciei pot fi
reflectate n baza de date i devin vizibile altor tranzacii.
 marcheaz momentul de la care efectele tranzaciei nu mai pot fi
anulate.
 validare este important n cazul sistemelor concurente
previne o serie de fenomene nedorite cum ar fi efectul de domino


 abandonarea n cascad a tranzaciilor.

 BEGIN TRANSACTION, COMMIT i ROLLBACK sau echivalentele lor


sunt folosite pentru delimitarea tranzaciilor, .

January 5, 2005 9
 Dac o tranzacie Tj ieste abandonat, toate operaiile executate trebuie
anulate. Mai mult, dac Tj citete un obiect care a fost scris de tranzacia Ti,
Ti trebuie de asemenea abandonat

 cele mai multe sisteme evit astfel de abandon n cascad prin meninerea
datelor blocate pn n momentul validrii tranzaciei.
 dac Ti scrie un obiect , Tj l poate citi numai dup ce Ti este validat.

 Pentru a anula operaiile unei tranzacii abandonate, un SGBD folosete un


fiier jurnal n care este nscris fiecare tranzacie Acest mecanism este
folosit i pentru recuperarea bazei de date: toate tranzaciile active n
momentul unui defect sunt abandonate la repornirea sistemului.

January 5, 2005 10
Tranzacii - concluzii
 O tranzacie este o aciune a unui utilizator sau a unui program, care este
vzut de SGBD ca o succesiune a urmtoarelor operaii:
 READ (citire): obiectul bazei de date este citit de pe disc n pagina de
buffer
 WRITEs (scriere) obiectul bazei de date este scris din buffer pe disc
 ABORT (abandon):ultima aciune a unei tranzacii care a euat
 COMMIT (validare): ultima aciune a unei tranzacii care a fost
efectuat cu succes
 efectele unei tranzacii abandonate trebuie anulate complet;
 baza de date este modificat permanent numai n urma unor tranzacii
validate.

January 5, 2005 11
Proprietile tranzaciilor (ACID)
 Atomicitate: orice tranzacie este o unitate elementar de prelucrare
execuia se face dup regula totul sau nimic -
 dac tranzacia este ntrerupt, sistemul trebuie s asigure terminarea
tranzaciei
 fie prin completarea execuiei operaiilor rmase de efectuat
 fie prin anularea efectului operaiilor deja executate

 Consisten: se refer la corectitudinea unei tranzacii


 Orice tranzacie trebuie s transforme o baz de date dintr-o stare
consistent n alt stare consistent
 este imposibil verificarea individual a tuturor condiiilor unicul
criteriu de stabilire a consistenei este corectitudinea sa d.p.d.v. logic.

January 5, 2005 12
Proprietile tranzaciilor (ACID)
 Izolare: orice tranzacie are acces doar la strile consistente ale bazei de
date
 modificrile fcute de o tranzacie sunt inaccesibile altor tranzacii concurente
pn n momentul validrii acesteia,
T creaz iluzia c fiecare tranzacie este executat singur n sistem.
 este asigurat prin algoritmii de control al concurenei.
 elimin efectul de domino.

 Durabilitate: odat tranzacia validat, rezultatele sale devin permanente


i sunt nscrise n baza de date.
 rezultatele unei tranzacii validate vor supravieui unor cderi de sistem.
 mecanismul prin care se realizeaz durabilitatea are la baz conceptul
de jurnal.
 Jurnalul este un fiier secvenial n care sunt nregistrate toate
operaiile efectuate de tranzaciile din sistem.

January 5, 2005 13
Gestiunea tranzaciilor

 problematica meninerii ntr-o stare consistent a bazei de date n


condiiile n care accesul la date se face n regim concurent i este
posibil apariia unor defecte.
 dou domenii de sine stttoare
U controlul concurenei - se ocup cu mecanismele de
sincronizare a acceselor astfel nct s fie meninut
integritatea bazei de date;
U rezistena la defecte - se refer la tehnicile prin care se
asigur att tolerana sistemului fa de apariia unor defecte,
ct i capacitatea de recuperare a acestuia.

January 5, 2005 14
Admin de Planificato-
- administratorul de tranzacii tranzacii rul
- coordoneaz executarea
tranzac. n numele programelor
de aplicaie; Admin. Admin de
de buffer refacere
- planificatorul -
implementeaz o anumit
strategie de control al
concurenei. Admin de Admin de fiiere
acces
- maximizeaz concurena
fr a permite ca tranzaciile Admin de
efectuate concurent s subsisteme
interfereze.
- administratorul de refacere -garanteaz c, n cazul apariiei unei
pene, baza de date va fi restaurat n starea n care se afla nainte de
nceperea tranzaciei.
- administratorul de buffer - utilizat pentru a transfera datele ntre
capacitatea de stocare pe disc i memoria principal

January 5, 2005 15
Controlul concurenei
 Controlul concurenei - procesul de administrare a operaiilor simultane
din baza de date astfel nct acestea s nu interfereze unele cu altele.
T dac cererile de acces sunt de tipul regsire, - secvenializarea
accesului la mediul de memorare
U bazele de date statice, unde mai muli utilizatori interogheaz baza de date
simultan.
T dac unele cereri sunt de tipul actualizare este necesar aplicarea unor
strategii adecvate de tratare a cererilor de acces.
 Cea mai simpl cale de a evita interaciunile -execuia independent a
tranzaciilor
 minimizeaz eficiena sistemului.
 nivelul de concuren - numrul de tranzacii executate concurent
mecanismele de control al concurenei urmresc un compromis ntre
meninerea consistenei bazei de date i obinerea unui nivel de concuren
ct mai ridicat.

January 5, 2005 16
Anomalii de interferen
 dou tranzacii Ti i Tj sunt susceptibile la interferen dac
rezultatul execuiei concurente a acestora poate fi diferit de
rezultatul execuiei seriale
 dou tranzacii Ti i Tj sunt conflictuale dac ele sunt
concurente i susceptibile la interferen.
 anomalii de interferen.
 anomalia de actualizare pierdut;

 anomalia de citire improprie;

 anomalia de citire nereproductibil.

January 5, 2005 17
Actualizarea pierdut
- corespunde unui conflict de tip scriere-scriere
- rezultatul actualizrii efectuate de o tranzacie se
pierde ca urmare a reactualizrii aceleiai date de
ctre o alt tranzacie, fr ca reactualizarea realizat
prin aceata s fie influenat de rezultatul primei
reactualizri.
T1 T2 Valoarea lui A
READ A A
READ A A
A=A-10 A-10
WRITE A A-10
A=A+10 A+10
WRITE A A+10

January 5, 2005 18
Citirea improprie
- corespunde unui conflict de tip scriere-citire i
- apare atunci cnd o tranzacie surprinde o stare temporar
inconsistent a bazei de date

T1 T2 Valoarea
A B C
READ A A
A=A-10 A-10
WRITE A A-10
READ A A-10
READ B A-10 B
C=A+B A-10 B A-10+B
WRITE C B A-10+B
READ B A-10 B
B=B+10 B+10
WRITE B B+10

January 5, 2005 19
Citirea nereproductibil
T corespunde unui conflict de tip citire-scriere i apare atunci cnd aceeai
tranzacie gsete valori diferite la citiri repetate ale aceleiai date

T1 T2 Valoarea
A B C
READ A A
B=A A A
WRITE B A A
READ A A A
A=A+10 A+10 A
WRITE A A+10 A
A
READ A A+10 A
C=A A A+10
WRITE C A

January 5, 2005 20
Primitivele LOCK i UNLOCK
T Permit blocarea temporar, respectiv deblocarea unor valori de ctre o
tranzacie- cel mai simplu mecanism care asigur excluderea mutual.
T LOCK() i UNLOCK() permit sincronizarea tranzaciilor

T Fie dou tranzaciii T1 i T2 care execut diferit urmtoarea succesiune de


operaii:
 READ A; A= A*2 ; WRITE A.

T Dac se utilizeaz primitivele LOCK() i UNLOCK():


 WHILE NOT(LOCK(A));LOCK(A); READ A; A=A*2 ; WRITE
A; UNLOCK(A)

situaie inacceptabil n practic




T Uniti de acces - poriuni ale unei baze de date care pot constitui obiectul
unei operaii de blocare

January 5, 2005 21
Proiectarea bazelor
de date

GESTIUNEA TRANZACIILOR 2
Curs 4

January 5, 2005 1
Planificare
T Planificarea unui set de tranzacii -ordinea de execuie a pailor
elementari (LOCK, READ, WRITE, etc) ai setului de tranzacii
 este vorba despre pai din tranzacii diferite
T Dac pentru fiecare tranzacie exist un abort sau commit planificarea
este complet

T1 T2

R(A)
W(A)
R(B)
W(B)
R(C)
W(C)

 dac tranzaciile nu interfer- planificare serial


January 5, 2005 2
Exemplu
 Se consider dou tranzacii:

T1: BEGIN A=A+100, B=B-100 END


T2: BEGIN A=1.06*A, B=1.06*B END

 prima tranzacie transfer 100$ din contul B n contul A, iar


cea de-a doua nregistreaz un adaos de dobnd de 6%.
 nu exist nici o garanie c T1 se va executa naintea lui T2
sau vice-versa, dac ambele sunt lansate n execuie n acelai
timp.
 efectul trebuie s fie echivalent cu cel obinut prin execuia
serial a celor dou tranzacii

January 5, 2005 3
Exemplu
 Se consider urmtoarele planificri posibile
T1: A=A+100, B=B-100
T2: A=1.06*A, B=1.06*B

 Rezultatul este corect. Ce se poate spune despre:


T1: A=A+100, B=B-100
T2: A=1.06*A, B=1.06*B

 SGBD-ul vede cea de-a doua planificare ca:


T1: R(A), W(A), R(B), W(B)
T2: R(A), W(A), R(B), W(B)

January 5, 2005 4
Planificri echivalente i planificri
serializabile
 Planificri echivalente: Pentru orice stare a bazei de date, efectul (asupra
unei mulimi de obiecte din baza de date) al execuiei primei planificri este
identic cu efectul execuiei celei de-a doua planificri.

 STARE INIIAL + PLANIFICARE STARE FINAL

 Planificare serializabil a unui set de tranzacii: este o planificare al crei


efect asupra unei baze de date consistente este identic cu cel el oricrei
planificri seriale a tranzaciilor validate din setul considerat.
 un SGBD garanteaz c toate planificrile ce vor fi executate sunt
serializabile, dar nu specific ce ordine serial a setului de tranzacii
este simulat
 efectele tuturor tranzaciilor incomplete sau abandonate trebuie s fie
complet anulate pentru ca serializabilitatea s fie o proprietate util!

January 5, 2005 5
Algoritmi de control al concurenei
 Funcia principal pentru un mecanism de control al concurenei este de a
genera o planificare serializabil pentru execuia tranzaciilor active din
sistem.
 Controlul concurenei prin blocare - accesul mutual exclusiv al
tranzaciilor la datele partajate
 controlul concurenei prin mrci de timp- ordoneaz execuia
tranzaciilor conform unui set de reguli

 algoritmi de control al concurenei:


 n bazele de date centralizate
 n bazele de date distribuite

January 5, 2005 6
Controlul concurenei prin blocare
 Perevenirea executriii unor secvene incorecte de operaii prin punerea n
ateptare a tranzaciilor care execut operaii conflictuale (acceseaz
aceeai dat i cel puin una dintre ele este de tip scriere)
 folosete LOCK () i UNLOCK () plus o serie de restricii care elimin
planificrile neserializabile (protocol)
 reguli:
 o unitate de acces blocat de o tranzacie trebuie deblocat de aceeai
tranzacie
 o tranzacie nu ncearc s blocheze o unitate de acces blocat deja
 o tranzacie nu ncearc s deblocheze o unitate de acces blocat de o
alt tranzacie
 o unitate de acces poate fi blocat la un moment dat de o singur
tranzacie care are acces exclusiv la aceast unitate
 planificrile care respect regulile de mai sus = planificri legale

January 5, 2005 7
Exemplu
T1: LOCK A, LOCK B, UNLOCK A, UNLOCK B
T2: LOCK A, UNLOCK A
Ce se poate spune (din punct de vedere al legalitii) despre urmtoarea
planificare:
T1 T2
LOCK A
LOCK B
LOCK A
UNLOCK A
UNLOCK A
UNLOCK B

January 5, 2005 8
Algoritm de testare a serializabilitii
 stabilete dac o anumit planificare a unui set de tranzacii este sau nu
serializabil.
 examineaz ordinea n care diferitele tranzacii blocheaz fiecare
unitate de acces n cadrul planificrii date.
 se poate exprima ca o problem de gsire a ciclurilor dintr-un graf
orientat numit graf de preceden.
 1. nodurile grafului sunt tranzaciile
 2. arcul orientat de la nodul Ti la nodul Tj, TiTj are
semnificaia c exist o unitate de acces pentru care tranzacia
Ti obine blocarea (LOCK UNLOCK) naintea tranzaciei Tj,
iar ntre Ti i Tj nici o alt tranzacie nu blocheaz aceast
unitate de acces.
 TiTj arat c n orice planificare serial echivalent cu planificarea
iniial P, tranzacia Ti se execut naintea tranzaciei Tj.
 Dac n graful de preceden exist un ciclu care include tranzaciile Ti i
Tj nu poate exista o planificare serial echivalent cu planificarea dat.

January 5, 2005 9
Algoritm de testare a serializabilitii
 Dac graful de preceden nu are cicluri, atunci exist o planificare serial
echivalent
 se poate determina o ordonare a tranzaciilor astfel nct Ti se execut
naintea lui Tj dac exist un arc TiTj.
 Ordonarea se realizeaz cu ajutorul algoritmului de sortare topologic:
 P1. dac graful de preceden nu are cicluri, atunci exist un nod care
nu este extremitate a nici unui arc. Se localizeaz acest nod, se elimin
din graf mpreun cu arcele adiacente iar tranzacia corespunztoare se
trece n lista de tranzacii a planificrii seriale.
 P2. se reia P1 pn la epuizarea tuturor nodurilor.
 Ordinea de eliminare a nodurilor din graful de preceden este chiar
ordinea de execuie a tranzaciilor n planificarea serial.

January 5, 2005 10
Algoritm de testare a serializabilitii
T1 T2 T3 T4
LOCK A
LOCK B
LOCK C
UNLOCK C
LOCK C
UNLOCK B
UNLOCK C T2
LOCK B
UNLOCK A
UNLOCK B T1
LOCK B T3
UNLOCK B
LOCK A
UNLOCK A T4

January 5, 2005 11
Ce se poate spune despre urmtoarea
planificare?
T1 T2 T3 T4
LOCK A
UNLOCK A
LOCK B
UNLOCK B
LOCK A
UNLOCK A
LOCK C
UNLOCK C
LOCK B
UNLOCK B
LOCK C
UNLOCK C

Este serializabil?
Dac NU de ce?
Dac DA, care este ordinea de execuie a tranzaciilor?

January 5, 2005 12
Forarea serializabilitii unui set de
tranzacii
 Protocolul de blocare n dou faze (2PL):
 toate operaiile de blocare preced prima operaie de deblocare
 nu este necesar ca toate blocrile s se fac simultan
 Teorem: Orice planificare legal a unei mulimi de tranzacii n dou faze
este serializabil.
 Demo: prin reducere la absurd
 Potentiale probleme interblocrile: poate exista un ciclu al tranzaciilor T1,
T2, ... , Tn, n care fiecare Ti ateapt de la predecesoarea sa s deblocheze
unitile de care are nevoie

January 5, 2005 13
Blocarea n dou faze (2PL)
 2PL:
 dac T acceseaz n scriere sau citire o unitate, obine mai
nti blocarea acesteia
 dac T deblocheaz o unitate de acces, nu mai poate obine
o nou blocare
 Blocrile sunt realizate automat de SGBD.
 De ce este garantat serializabilitatea?
Punct de
blocare

Faza de
descretere
Faza de cretere
January 5, 2005 Timp 14
Tranzacii cu accese de tip read-only i read-write
 se pot formula protocoale cu un grad mai nalt de concuren a operaiilor
 - RLOCK cerere de blocare pentru citire (read-lock, shared lock)
 dac o tranzacie blocheaz o unitate de acces n citire, atunci nici o alt
tranzacie nu poate obine blocarea n scriere a unitii respective, n
schimb, oricte tranzacii pot obine n acest timp blocarea n citire a
aceleiai uniti.
 - WLOCK cerere de blocare pentru citire-scriere (read-write lock,
exclusive-lock).
 este echivalent cu primitiva LOCK.
 dac o tranzacie blocheaz n citire-scriere o unitate de acces, nici o alt
tranzacie nu va putea obine blocarea acestei uniti nici pentru citire nici
pentru citire scriere.
 Ambele tipuri de blocare sunt anulate prin executarea primitivei
UNLOCK.

January 5, 2005 15
Mecanismul de blocare:
 orice tranzacie care trebuie s acceseze o unitate de acces trebuie ca mai
nti s o blocheze n citire pentru a avea acces la citire sau n citire-scriere
pentru a avea acces att la citirea datelor ct i la modificarea lor;
 dac unitatea de acces nu este blocat de alt tranzacie, cererea de blocare
va fi onorat;
 dac unitatea de acces este blocat sistemul SGBD stabilete dac cererea
este compatibil cu modul de blocare existent.
U dac este cerut blocarea n citire pentru o unitate care este blocat cu
primitiva RLOCK cererea va fi aprobat. In caz contrar tranzacia trebuie s
atepte pn cnd unitatea de acces este eliberat;
 o tranzacie blocheaz o unitate de acces pn cnd o elibereaz n mod
explicit n timpul execuiei sau pn cnd este terminat (efectuat sau
abandonat). Efectele operaiei de scriere vor deveni vizibile pentru alte
tranzacii numai dup ce unitatea de acces a fost deblocat pentru citire-
scriere.

January 5, 2005 16
Planificri legale

T orice unitate de acces blocat de o tranzacie trebuie s fie


deblocat de aceeai tranzacie nainte de terminarea acesteia;
T nici o tranzacie nu ncearc deblocarea unei uniti de acces
pe care nu o blocheaz n citire sau n citire-scriere;
T nici o tranzacie nu ncearc blocarea n citire a unei uniti de
acces pe care o blocheaz deja ;
T nici o tranzacie nu ncearc blocarea pentru citire-scriere a
unei uniti de acces pe care o blocheaz deja n citire-scriere;
T o tranzacie poate obine blocarea n citire-scriere a unei uniti
de acces pe care o blocheaz pentru citire, deoarece blocarea
n citire-scriere este mai restrictiv dect blocarea pentru citire.

January 5, 2005 17
Planificri echivalente
T produc aceeai valoare final pentru toate
datele accesate;
T valorile datelor asupra crora se execut o
primitiv RLOCK sunt aceleai n ambele
planificri.
U valorile citite de diferitele tranzacii sunt aceleai
pentru ambele planificri.

January 5, 2005 18
Algoritmul de testare a serializabilitii
 trebuie respectat o anumit ordine relativ a cuplurilor de accese:
 se va ine seama de ordonarea relativ a urmtoarelor cupluri de acces:
read-write cu read-write, read-write cu read-only, read-only cu read-write.
Ordinea a dou accese de tip read-only este arbitrar.
 Fie Ti i Tj dou noduri ale grafului G. Graful va conine un arc TiTj
dac:
 Ti blocheaz n citire-scriere o unitate de acces , iar Tj este prima
tranzacie care blocheaz n citire-scriere aceeai unitate de acces dup
Ti;
 Ti blocheaz n citire o unitate de acces , iar Tj este prima tranzacie
care blocheaz n citire-scriere aceeai unitate de acces dup Ti;
 Ti blocheaz n citire-scriere o unitate de acces , iar Tj este oricare
dintre tranzaciile care blocheaz n citire aceeai unitate de acces
dup Ti;
 Dac cele dou tranzacii blocheaz succesiv aceeai unitate de acces n
citire, ntre ele nu se traseaz nici un arc.

January 5, 2005 19
Exemplu
T1 T2 T3 T4
WLOCK A
RLOCK B
UNLOCK A
RLOCK A
UNLOCK B
WLOCK B
RLOCK A
UNLOCK B
WLOCK B
UNLOCK A
UNLOCK A
WLOCK A
UNLOCK B
RLOCK B
UNLOCK A
UNLOCK B
T1 T2 cicluri:
T1-T4 T3 T1,
T2 T4 T3 T2 i
T4 T1- T2 T4 T3 T1
T3
January 5, 2005 20
Exerciiu
Stabilii dac planificarea tranzaciilor prezentate mai jos este sau nu serializabil.
Dac NU indicai care sunt ciclurile n graful de preceden.
Dac DA gsii planificarea serial echivalent.

T1 T2 T3 T4
RLOCK A
UNLOCK A
RLOCK A
RLOCK B
RLOCK B
UNLOCK B
UNLOCK A
UNLOCK B
RLOCK A
UNLOCK A
WLOCK B
UNLOCK B
WLOCK A
UNLOCK A
January 5, 2005 21
Protocolul de blocare strict n dou faze
 Dac T dorete s citeasc o unitate de acces trebuie s obin
mai nti o blocare RLOCK (SLOCK)
 dac T dorete modificarea unei uniti de acces obine o
blocare WLOCK (XLOCK)
 Pstreaz unitile de acces blocate pn la finalizare, cnd
le deblocheaz pe toate odat.
 Garanteaz planificri serializabile i recuperabile!
 Evit anomaliile de interferen!

January 5, 2005 Timp 22


Implementarea componentei Lock Manager

 Problema 1: Ce trebuie blocat?


 Tupluri, pagini sau tabele?
 Granularitatea mai fin crete nivelul de concurena

 Problema 2:Cum se poate bloca o unitate de acces??


 Blocarea nscris ntr-un fiier hash al intrrilor de blocare
 Intrare pentru o blocare:

 OID - identificatorul obiectului


 Mod de blocare
 List: tranzaciile care blocheaz

 List: coad de ateptare

January 5, 2005 23
Tratarea unei cereri de blocare

Cerere blocare (TID, OID, Mod)


Mod==W Mod==R

Unitate blocat? Coad de ateptare goal?


Da
Nu
Da
Unitate blocat n scriere?
Da
Nu
Pune n coada Nu

Accept blocarea

January 5, 2005 24
Mai mult despre logica componentei Lock Manager

 La deblocarea unei uniti de acces (OID, TID):


 se actualizeaz lista tranzaciilor care blocheaz
uniti de acces
 se examineaz coada de ateptare
 dac sunt tranzacii care pot rula, se vor aduga n
lista tranzaciilor care blocheaz obiecte (la nevoie se
poate schimba modul de blocare)
 se repet operaiile anterioare pn cnd n coada de
ateptare nu mai sunt tranzacii care se pot executa

January 5, 2005 25
Alte aspecte legate de blocare
 Se presupune c T1 blocheaz un set de nregistrri
care satisfac o anumit condiie
 ipoteza este valabil dac nu este adugat nici o
nregistrare care respect condiia dat n timp ce se
execut T1!
 Sunt necesare mecanisme care garanteaz
validitatea acestei ipoteze blocarea indexului
 Serializabilitatea la conflicte garanteaz
serializabilitatea numai n cazul n care mulimea de
obiecte este fix!

January 5, 2005 26
Date
Blocarea indexului Index
cond
 Dac exist un index definit pe cmpul pe care se
impune condiia, T1 ar trebui s blocheze pagina de
index care conine intrrile care satisfac condiia
impus
 dac nu exist nregistrri care satisfac condiia
dat, T1 trebuie s blocheze pagina de index
unde ar fi putut exista astfel de intrri!
 Dac nu exist un index corespunztor, T1trebuie s
blocheze toate paginile i blocheaz fiierul / tabelul
pentru a preveni adugarea de noi pagini i pentru a
garanta c nu vor fi adugate nregistrri care
satisfac condiia impus.
January 5, 2005 27
Protocoale conservative
 fiecare tranzacie emite toate cererile de blocare la nceputul execuiei sale
 Avantaj:previne apariia interblocrilor
 Dezavantaj: reduce nivelul de concuren al sistemului
 nfomatare a tranzaciilor
 o tranzacie T poate obine blocrile solicitate i poate intra n
execuie dac i numai dac:
 toate unitile de acces pe care T dorete s le blocheze sunt deblocate,
 nici o alt tranzacie aflat n coada de ateptare nu solicit blocarea unei
uniti de acces solicitate de T.
 blocri cu predicat ( blocarea unui subset de tuple satisfcnd o anumit
condiie).
 aceast condiie ar putea fi determinat doar n mod dinamic, n timpul
execuiei tranzaciei subsetul de tuple care se cere a fi blocat nu
este cunoscut la nceputul execuiei tranzaciei.

January 5, 2005 28
i protocoale agresive
 - fiecare cerere de blocare este emis doar n
momentul cnd se dorete o scriere sau o citire n/din
unitatea de acces corespunztoare.
U Avantaj:un nivel mai ridicat de concuren al sistemului.
U Dezavantaj: nu se previne apariia interblocrilor.
 rezolvare:
 printr-o metod de detecie i ieire din interblocare;
 prevenind interblocarea prin metoda ordonrii.

 Alegerea tipului de protocolul depinde de natura


unitilor de acces i a tranzaciilor din sistem

January 5, 2005 29
Grade de izolare

 2PL -singurul care garanteaz serializabilitatea,


 restriciile impuse de acesta - inacceptabile din cauza
impactului asupra nivelului de concuren al sistemului
 Izolare de gradul 0
 nu blocheaza nici o unitate de acces in citire

 blocheaz unittile de acces in scriere numai pe durata


operatiei de scriere.
 In acest caz sunt ignorate toate tipurile de conflicte
posibile

January 5, 2005 30
 Izolare de gradul 1
 tranzactia blocheaz pe toata durata executiei sale unitatile de acces in care
face scriere, dar nu blocheaz deloc unittile de acces din care face numai
citiri.
 sunt tratate corect conflictele de tip scriere-scriere eliminata anomalia
de actualizare pierdut.
 Nivelul de concurenta este ridicat.
 tranzactia poate citi datele unor tranzactii nevalidate anomalia de citire
improprie sau de citire nereproductibil.
 Izolare de gradul 2
 blocheaz unitile de acces in care face scrierea pe toat durata execuiei
sale, in schimb datele care sunt doar citite se blocheaz numai pe durata
operaiei de citire.
 trateaz corect conflictele de tip scriere-scriere si scriere-citire.
 Nivelul de concurent este mediu.

January 5, 2005 31
 Izolare de gradul 3
 blocheaz pe toat durata executiei lor orice unitate de acces pe care o
acceseaz fie in scriere fie in citire.
 sunt tratare corect toate tipurile de conflict si garanteaz
serializabilitatea planificrilor.
 nivelul de concurenta este cel mai redus ( tranzactiile pot fi puse in
asteptare atat pentru operatiile de scriere cat si pentru cele de citire).
 implicit in limbajele SQL si SQL2.
 Intr-un sistem se pot executa tranzacii cu grade diferite de
izolare.

January 5, 2005 32
Proiectarea bazelor
de date

GESTIUNEA TRANZACIILOR 3
Curs 5

January 5, 2005 1
Controlul concurenei prin mrci de timp
 tranzaciile se execut fr a folosi primitivele LOCK i
UNLOCK dac dou sau mai multe tranzacii se execut
concurent pot s apar planificri neserializabile ale acestora.
T nu se ncearc prevenirea apariiei unor planificri neserializabile
 se folosesc mecanisme prin care s se poat detecta violarea
ordonrii seriale n cazul unei execuii concurente a unui set de
tranzacii.
 dac apare o astfel de situaie, se abandoneaz tranzacia care a
ncercat execuia acelei operaii care ncalc ordinea serial.
 pe baza informaiilor din jurnal se anuleaz efectele pariale ale
acestei tranzacii (operaii de tip UNDO) i se pune ntr-o coad
de ateptare n vederea relansrii ulterioare.
 tranzacia va fi reluat imediat ce acest lucru este posibil.

January 5, 2005 2
Controlul concurenei prin mrci de timp
 Idea: se aloc fiecrui obiect o marc de timp
U sunt asociate att tranzaciilor n curs la un moment dat ct i unitilor
de acces.
U o marc de timp este un numr unic generat de sistem pentru fiecare
cuant de timp pe durata funcionrii acestuia .
U dac se asociaz fiecrei tranzacii marca de timp a momentului
lansrii acesteia, atunci fiecare tranzacie va avea o marc unic.
 dubl funcionalitate:

 identific n mod unic fiecare tranzacie


 permit ordonarea tranzaciilor deoarece ordinea de lansare a
tranzaciilor corespunde valorilor cresctoare ale mrcilor de
timp asociate.
U Valoarea mrcii de timp asociat unei tranzacii se pstreaz
nemodificat pe toat durata execuiei acesteia.

January 5, 2005 3
 Valoarea mrcii de timp asociat unei uniti de
acces i poate schimba valoarea atunci cnd o
tranzacie acceseaz unitatea.
 aceast valoare este dat de cea mai mare valoare
a unei mrci de timp asociat oricrei tranzacii
care a accesat unitatea respectiv.
T o unitate de acces poart marca celei mai noi
tranzacii care a citit/scris o dat din/n unitatea
respectiv.

January 5, 2005 4
T Mrcile de timp sunt utilizate pentru a fora
serializarea operaiilor efectuate de tranzacii,
T dac acest lucru nu este posibil la depistarea
unei tentative de violare a acestei ordini se
declaneaz procedura de abandonare a
tranzaciei care a cauzat incidentul
T algoritmi de ordonare:
 algoritmul de ordonare total
 algoritmul de ordonare parial.

January 5, 2005 5
Algoritmul de ordonare total
T Nu face distincie ntre operaiile de citire i cele de scriere.
 Condiia de realizare a unei execuii concurente a
tranzaciilor care s fie echivalent cu o planificare serial
este ca accesul la unitile de acces s se fac n ordinea
apariiei acestora n sistem.
 o tranzacie poate accesa o unitate de acces dac i numai
dac are o valoare a mrcii de timp asociate mai mare sau
egal cu valoarea mrcii de timp a unitii de acces

January 5, 2005 6
T Ti i Tj - dou tranzacii care vizeaz aceeai unitate de acces i i<j . (i i j
sunt valorile mrcilor asociate tranzaciilor)
T Iniial, toate unitile de acces au asociat o valoare a mrcii mai mic
dect valoarea mrcii oricrei tranzacii n curs.- m.
T m<i<j. Se pot distinge dou cazuri:
 Prima tranzacie care face acces la unitate este Ti.
 m<i deci se execut operaia cerut de Ti, iar noua valoare a mrcii
unitii de acces devine i.
 urmeaz o cerere a tranzaciei Tj.
 i<j operaia cerut de aceasta poate fi de asemenea executat.
 valoarea mrcii asociate unitii de acces este j
 Prima tranzacie care face acces la unitate este Tj.
 m<j, se execut operaia cerut de Tj, iar noua valoare a mrcii unitii de
acces devine j.
 Ti dar j>i deci operaia cerut de Ti nu poate fi executat. Se suspend
execuia lui Ti , se anuleaz efectele acesteia i se pune ntr-o coad de
ateptare

January 5, 2005 7
Exemplu

T1 T2 Marca valorii A
0
READ A 1
READ A 2
A=A+1 2
A=A+1 2
WRITE A 2
WRITE A Suspendare T1

January 5, 2005 8
Algoritmul de ordonare parial
 face distincie ntre operaiile de citire i cele de scriere.
 structura mrcilor asociate unitilor de acces este compus
din dou elemente:
 - marca de citire ( r ) cea mai mare valoare de marc a
unei tranzacii care a fcut o citire din unitatea de acces:
 - marca de scriere ( w ) cea mai mare valoare de marc a
unei tranzacii care a fcut o scriere n unitatea de acces.

January 5, 2005 9
T folosite pentru depistarea unor situaii care nu ar
putea s apar n cazul unei execuii seriale.
 Nu este posibil ca o tranzacie s citeasc o valoare care
nu a fost scris nc.
 o tranzacie Ti nu poate citi o dintr-o unitate de acces avnd marca
de scriere w>i. Aceast tentativ duce la abandonarea tranzaciei
Ti i la reluarea ei ulterioar.
 Nu este posibil ca o tranzacie s scrie o valoare care deja
a fost citit.
 o tranzacie Ti nu poate scrie ntr-o unitate de acces cu marca de
citire r>i. In acest caz tranzacia ti va fi abandonat.

January 5, 2005 10
 Fie o tranzacie Ti care dorete efectuarea unei operaii op
asupra unei uniti de acces avnd marca de citire r i marca
de scriere w.
 dac op=READ i i>=w atunci citete i actualizeaz
marca r la valoarea i.
 dac op = WRITE i i>=r i i>=w atunci scrie i
actualizeaz marca w la valoarea i
 dac op=WRITE, i>r i i<w atunci nu se face nimic
 dac op=READ i i<w atunci abandoneaz Ti
 dac op= WRITE i i<r atunci abandoneaz Ti.

January 5, 2005 11
Exemplu
T20 T15 T18 Mrci A Mrci B Mrci C
R=0 R=0 R=0
W=0 W=0 W=0
READ B R=20
READ A R=15
READ C R=18
WRITE B W=20
WRITE A W=20
WRITE C Suspend T15
WRITE A Fr efect
READ B Suspend T18

Execuia celor trei tranzacii.

January 5, 2005 12
Gestiunea interblocrilor n bazele de date centralizate

 Interblocarea tranzactiilor interferente are loc atunci cand tranzaciile sunt


n ateptarea unor date care nu le vor fi alocate niciodat. Interblocarea se
produce n situaia n care ntr-un grup de tranzacii sunt satisfcute
urmtoarele condiii:
 fiecare tranzacie a grupului este blocat ateptnd o unitate de
acces
 execuia oricror tranzacii care nu aparin grupului nu permite
deblocarea vreunei tranzacii din grup
 o interblocare poate fi rezolvat numai printr-o intervenia strin :
 a unui utilizator sau a operatorului de sistem,
 a sistemului de operare.
 Exemplu:
 WLOCK1(A), WLOCK2(B), RLOCK1(B), RLOCK2(A)

January 5, 2005 13
 Graful ateptrilor - graf unde nodurile sunt reprezentate de
mulimea tranzaciilor concurente care i mpart acelai set de
uniti de acces,
 arcele Ti Tj ( cu semnificaia c Ti ateapt pe Tj) - n situaia n care
Ti cere blocarea unei uniti de acces i aceast cerere nu poate fi
acceptat deoarece unitatea respectiv este blocat deja de tranzacia Tj.
 conine cicluri dac i numai dac exist interblocri.

 WLOCK1(A), WLOCK2(B), RLOCK1(B), RLOCK2(A)

T1 T2

January 5, 2005 14
Metodele pentru rezolvarea interblocrilor...

T pot fi mprite n trei clase:


metode de prevenire a interblocrii
metode de evitare a interblocrii
metode de detecie i ieire din interblocare.

January 5, 2005 15
Metode de prevenire a interlocrilor
 Metoda cererilor anticipate (utilizarea protocoalelor de blocare
conservative): fiecare tranzacie blocheaz toate unitile de acces de care
are nevoie n avans (metod neaplicabil n practic)
 dac o unitate de acces nu poate fi obinut, nu va fi blocat nici o alt
unitate. Tranzacia ateapt i ncearc la un momemt ulterior blocarea
tuturor unitilor de acces.
 Dezavantaj:unitile de acces pot fi blocate o perioad mai
mare dect este necesar -> scade nivelul de concuren n
sistem
 apare fenomenul de amnare nedefinit a tranzaciilor
 imposibilitatea precizrii anticipate a tuturor unitilor de acces
necesare

January 5, 2005 16
Metode de prevenire a interlocrilor
 Metoda ordonrii: stabilirea unei relaii de ordine peste mulimea
unitilor de acces i imposibilitatea tranzaciilor de a bloca unitile altfel
dect n aceast ordine prestabilit.
 Se neag condiia de ateptare circular
 dezavantaje:
 impune restricii programatorilor n elaborarea tranzaciilor -
cererile de acces la date trebuie s respecte ordinea impus de
sistem
 se reduce nivelul de concuren al sistemului

 pentru bazele de date complexe este dificil de realizat ordonarea


unitilor de acces, datorit posibilitilor variate de divizare a
unitilor de acces
 este exclus posibilitatea blocrilor prin predicat

January 5, 2005 17
Metode de prevenire a interlocrilor
 Metoda ateptrii condiionate: se presupune c Ti ncearc
blocarea unei uniti A, dar acest lucru nu este posibil
deoarece aceasta este blocat de Tj.
 ateptarea condiionat : dac Tj nu ateapt s blocheze uniti de
acces blocate de alte tranzaci, atunci Ti este pus n coada de ateptare,
n caz contrar Ti este abandonat.

January 5, 2005 18
Metode alternative...

 teoretic, interblocrile pot implica un numr mare de


tranzacii:
 T1 ateapt T2 ateapt T3 ateapt T1
 practic majoritatea ciclurilor de interblocare implic numai
dou tranzacii.
 Nu este necesar prevenirea interblocrilor!
 Ce probleme apar n cazul prevenirii?

January 5, 2005 19
Metode de evitare a interlocrilor
 nu impun restricii permanente,
 acioneaz in momentul cnd este iminent producerea unei interblocri.
 mpiedicarea apariiei unui lan circular de ateptare.
 se bazeaz pe decizii luate dinamic in momentul in care se detecteaz faptul
c alocarea unei resurse ar putea duce la interblocare. Acest lucru permite
un nivel mai ridicat de concuren n sistem.
 sistemele tranzacionale folosesc mrcile de timp asociate tranzaciilor:
 realizeaz o prioritate a acestora
 rezolv interblocrile prin abandonarea tranzaciilor n raport de

prioritatea acordat.
 doi algoritmi de evitare a interblocrilor:
 WAIT - DIE
 WOUND - WAIT

January 5, 2005 20
Algoritmul WAIT- DIE
 Nu abandoneaz niciodat o tranzacie care blocheaz o
unitate de acces solicitat de alt tranzacie
 este un algoritm nonpreemtiv
 fie tranzaciile Ti i Tj
 dac i < j (Ti este mai veche dect Tj) Ti este pus n ateptare
 dac i>j (Ti mai recent dect Tj) se abandoneaz Ti (Ti dies)
i se reia mai trziu cu aceeai marc de timp
 favorizeaz terminarea tranzaciilor mai tinere cu resursele
deja alocate, in timp ce tranzaciile anterioare acestora ( mai
btrne) pot fi puse n ateptare atunci cnd solicita resurse.
 favorizeaz fenomenul de mbtrnire a tranzaciilor - accesul
acestora la resurse este mai dificil dect al tranzaciilor tinere.

January 5, 2005 21
Algoritmul WOUND-WAIT
 Versiunea preemptiv a metodei
 dac i < j (Ti este mai veche dect Tj) atunci Tj este
abandonat (Ti wounds Tj) i este reluat ulterior cu
aceeai marc de timp
 dac i>j (Ti este mai recent dectTj) Ti este pus n
ateptare
 favorizeaz tranzaciile mai vechi care pot elimina tranzaciile
mai noi dac acestea controleaz resurse solicitate de primele.

January 5, 2005 22
Cei doi algoritmi:
 garanteaz att evitarea interblocrilor (deadlock) cat si
relurile repetate de tranzacii (livelock).
 WAIT-DIE
if i<j then Ti asteapt
else abandoneaz Ti
 WOUND-WAIT
if i<j then abandoneaza Tj
else Ti asteapt

January 5, 2005 23
Metode de detecie i ieire din interblocare
 nu impun nici un fel de restricii n funcionarea sistemului,
 cererile de resurse sunt satisfcute oridecte ori acest lucru este posibil.
 sistemul funcioneaz la nivelul de concuren maxim i fr costuri
suplimentare de execuie ct timp nu se detecteaz nici o interblocare.
 la apariiei unei interblocri (a unei situaii suspecte de interblocare) se
activeaz mecanismul de ieire din interblocare - selectarea uneia sau a
mai multor tranzacii care vor fi abandonate (ruperea lanurilor circulare
de ateptare).
U metod extern: folosirea unui ceas de gard fixat la o valoare prestabilit.
Orice tranzacie care este in ateptare pe o durat mai lunga dect cea
prestabilit va fi abandonata (suspect de implicarea ntr-o interblocare).
T Dezavantaj:este posibil s fie abandonate i tranzacii care pot fi n
ateptare din alte motive dect interblocarea.
U mecanismul intern: examinarea cererilor de blocare. Se construiete graful de
ateptare al tranzaciilor. In cazul depistrii unui ciclu, cel puin una din
tranzaciile implicate n interblocare trebuie suspendat.

January 5, 2005 24
Alegerea ...victimei n interblocri
T Problema :dac se cunoate costul suspendrii oricreia dintre
tranzaciile implicate ntr-o interblocare trebuie ales subsetul
de tranzacii care vor fi suspendate a.. s fie minimizat costul
pe ansamblul operaiei de ieire din interblocare.
T Exist mai multe metode alternative de alegere a tranzaciei
care trebuie suspendat:
U cea care a blocat ultima
U cea mai tnr tranzacie
U tranzacia care utilizeaz cele mai puine resurse
U tranzacia care a realizat cele mai puine blocri
U tranzacia care a fost reluat de cele mai puine ori
U dac s-au format mai multe cicluri, tranzacia care rezolv
mai mult de un ciclu

January 5, 2005 25
Preventie vs. Detectie
 Preventia poate duce la abandonarea prea multor tranzacii
 Detectia poate permite interblocrilor s consume resurse nejustificat
U acestea pot fi detectate dar sunt consumatoare de timp
 Rezultatul:
U este preferat detecia -> interblocrile sunt relativ rare
U dac se manifest interblocri frecvente trebuie reconsiderat schema

de execuie a tranzaciilor!

January 5, 2005 26
Infometarea tranzaciilor
 1. O tranzacie este nfometat dac nu se poate executa pe o perioad
nedefinit, n timp ce alte tranzacii din sistem continu mormal.
U Poate s apar dac schema de ateptare a unitilor de acces blocate
nu este corect i acord prioritate unor tranzacii n defavoarea altora.

 2.se mai poate manifesta n algoritmii de rezolvare a interblocrilor - dac


algoritmii selecteaz aceeai tranzacie ca victim, n mod repetat, ceea ce
duce la abandonarea acesteia i la imposibilitatea validrii sale.

January 5, 2005 27
Metode de prevenire a nfometrii tranzaciilor

 1. Utilizarea unei cozi primul venit-primul servit


U o schem de ateptare corect
U tranzaciile pot bloca unitile de acces n ordinea n care le-au
solicitat;
 2. Posibilitatea ca anumite tranzacii s aib prioritate n faa altora, dar
nivelul de prioritatea crete cu ct o tranzaciile ateapt mai mult, pna ce,
respectivele tranzacii vor avea prioritate maxim i vor fi executate
 3. Algoritmul de selecie al victimei poate utiliza cea mai ridicat prioritate
pentru tranzaciile care au fost abandonate d mai multe ori nscopul de a nu
fi selectate ca victime permanente
 algoritmii wait-die i wound-wait evit nfometarea tranzaciilor

January 5, 2005 28
Proiectarea bazelor
de date

GESTIUNEA TRANZACTIILOR 4
Curs 6

1
REZISTENTA LA DEFECTE
? - toleranta fata de defecte a sistemului - capacitatea unui
sistem de a continua sa functioneze corect n ciuda
manifestarii unor defecte
? - capacitatea de recuperare a unui sistem dupa aparitia unui
defect care a cauzat scoaterea sa temporara din functiune - se
refera la posibilitatea sistemului de a reveni la o stare
consistenta anterioara manifestarii defectului si de a-si relua
functionarea pornind de la aceasta stare, ca si cnd defectul nu
ar fi aparut.

2
Toleranta fata de defecte
? Fiabilitatea unui sistem este probabilitatea ca acesta sa functioneze
fara defecte un interval de timp dat.
? utilizata pentru caracterizarea sistemelor pentru care nu sunt acceptate
ntreruperi in functionare
? Disponibilitatea unui sistem este probabilitatea ca la un moment dat
acesta sa fie n stare de buna functionare.
? este o functie de timp si caracterizeaza acele sisteme care pot fi scoase
temporar din functiune.
? este afectata de doi factori, si anume:
? frecventa de aparitie a defectelor

? timpul necesar repunerii in functiune dupa un defect.

? defecte ale tranzactiilor (abandon)


? defecte de sistem (pana de curent)
? defecte ale memoriei secundare (discurilor)
? defecte ale sistemului de comunicatii ( pentru sistemele distribuite)

3
Capacitatea de recuperare (refacere) a bazei de date
? Recuperarea bazei de date este procesul de restaurare a bazei da date
ntr-o stare corecta, n cazul aparitiei unui defect.
? 1. Defecte ale calculatorului (system crash): erori soft sau hard aparute
pe durata executarii tranzactiilor.
? este posibila pierderea continutului memoriei interne.
? 2. Erori de sistem sau erori ale tranzactiilor :
? erori n sistem (depasirea de format sau mpartirea la zero).
? eroarea n tranzactii se poate manifesta datorita parametrilor eronati sau
datorita erorilor logice de programare.
? utilizatorul poate ntrerupe executia unei tranzactii.
? 3. Erori locale sau conditii exceptionale detectate de o tranzactie:
? ?conditii care necesita abandonarea tranzactiilor (stocul de produse solicitate
nu acopera cererea sau este zero)
? -un abandon prin program (ABORT) al tranzactiei poate cauza o eroare

4
? 4. Restrictii impuse de controlul concurentei:
? metodele de control al concurentei pot decide abandonarea unei
tranzactii, pentru a fi reluata mai trziu, datorita violarii serializabilitatii
sau datorita interblocarilor.
? 5. Defecte ale discurilor:
? anumite date pot fi pierdute de pe disc datorita erorilor de citire/scriere
din cadrul unei tranzactii
? 6. Catastrofe naturale sau conditii nefavorabile:
? defecte ale surselor de alimentare,
? defecte ale sistemelor de aer conditionat,
? incendii,
? sabotaje,
? suprascrierea sau stergerea accidentala a discurilor
? recuperarea dupa dezastre

5
Facilitati oferite de un SGBD
? sistemul SGBD pune la dispozitie urmatoarele facilitati de
asistenta a refacerii:
? un mecanism de salvare de siguranta, care sa faca copii de
siguranta periodice ale bazei de date si ale fisierului jurnal;
? facilitati de urmarire a sesiunilor de lucru, care sa pastreze
evidenta starii curente a tranzactiilor si modificarilor din baza de
date;
? facilitati de creare a punctelor de reluare (control) care sa
permita ca reactualizarile n curs din baza de date sa fie facute
permanente
? un administrator de recuperare (refacere) care permite
sistemului sa refaca baza de date ntr-o stare coerenta n urma unei
pene.

6
Administratorul de recuperare (AR)
? functiuni prin care se realizeaza rezistenta la defecte.
? proprietatile de atomicitate si durabilitate a tranzactiilor.
? orice transfer n si din baza de date se face prin intermediul buffer-elor
(memorii tampon)->controlate de catre administratorul de buffer ( pastreaza
in memorie cele mai recente date accesate).
? Fizic, memoria tampon - parte a memoriei principale a calculatorului
(memorie volatila) => partea din baza de date care se gaseste n memoria
tampon este baza de date volatila.
? Restul bazei de date, aflata pe suportul de memorie secundara este baza de
date stabila.
? Memoria tampon ca si baza de date stabila, este mpartita n unitati de
memorare si de acces -> paginile.

7
? Administratorul de recuperare executa operatii de acces la
date n numele tranzactiilor:
? sunt facute din baza de date volatila, iar la un moment
ulterior, acestea sunt transferate n/ din baza de date stabila
de catre administratorul de buffer conform algoritmului
sau propriu de functionare.
? poate solicita administratorului de buffer scrierea fortata a
continutului memoriei tampon n baza de date stabila.
? comanda de tip flush care are ca efect golirea partiala sau
totala a memoriei tampon.

8
Functiuni:
-COMMIT (T) - Transfera permanent si irevocabil paginile actualizate de
T n baza de date. Operatia trebuie sa fie atomica, chiar si n cazul aparitiei
unui defect. Validarea este o operatie irevocabila pentru o tranzactie.
-ABORT(T) - Restaureaza toate datele actualizate la valoarea avuta
anterior lansarii tranzactiei. Este de asemenea o operatie irevocabila.
-RECOVER - recuperare:
?se abandoneaza toate tranzactiile aflate n curs de executie n
momentul aparitiei defectului si care nu au fost validate
?se reconstituie si se transfera n baza de date stabila toate
actualizarile tranzactiilor validate nainte de aparitia defectului.
9
Jurnalul
? Jurnalul este un fisier secvential care contine o istorie a tuturor
actualizarilor pe care tranzactiile le-au facut asupra bazei de date.
? porneste de la ultima arhivare si
? este pastrat ntr-o memorie stabila, care, de regula este diferita de cea n care
este pastrata baza de date.
? ? tranzactie, n paralel cu efectuarea unei operatii de actualizare va scrie o
nregistrare n jurnal, care trebuie sa contina suficiente informatii pentru a
permite fie anularea operatiei de actualizare fie reconstituirea acesteia.
? jurnalul trebuie sa permita administratorului de recuperare sa determine
care sunt tranzactiile existente n sistem, mai precis care dintre acestea
sunt validate si care nu.
? Jurnalul poate fi dublat sau triplat.
? Copiile sunt pastrate pe medii diferite astfel nct daca una este deteriorata
sa se poata folosi o alta.

10
Informatiile minimale din jurnal :
? o nregistrare de tip begin_transaction pentru fiecare tranzactie care intra
n sistem (contine si identificatorul tranzactiei -TRID)
? cte o nregistrare pentru fiecare modificare a bazei de date, care contine:
? identificatorul tranzactiei care a lansat operatia
? un indicator care precizeaza natura operatiei : actualizare, stergere sau
adaugare
? adresa nregistrarii care se modifica
? copia nregistrarii care se modifica -se poate retine copia dinaintea
modificarii ( imagine nainte), copia dupa modificare (imagine dupa) sau
ambele.
? informatii privind momentul lansarii tranzactiei si momentul
executarii operatiei.
? o nregistrare de tip commit sau abort pentru fiecare tranzactie validata
sau abandonata.

11
Abandonarea unei tranzactii
? informatiile din jurnal sunt folosite pentru a anula efectele
tranzactiei n cauza =>pentru o activitate de tip UNDO.
? administratorul de recuperare va parcurge jurnalul n sens
invers, de la coada la cap.
? cnd ntlneste o nregistrare care corespunde unei operatii de
modificare ceruta de tranzactia T, modulul de recuperare va folosi
'imaginea nainte' din jurnal pentru a restaura data corespunzatoare.
? parcurgerea jurnalului se va opri la ntlnirea nregistrarii
begin_transaction corespunzatoare tranzactiei abandonate T.

12
Defect de sistem
? tranzactiile n curs de executie n momentul aparitiei defectului se pot
gasi n una din urmatoarele categorii:
? tranzactii validate (winners) - cele ale caror modificari, desi ncheiate n
memoria volatila nu au fost transferate n baza de date stabila si s-au pierdut n
momentul caderii sistemului.
? trebuie reconstituite toate actiunile tranzactiilor validate pentru a reface valorile
pierdute.
? se parcurge jurnalul nainte si se folosesc 'imaginile dupa' pentru
permanentizarea modificarilor n baza de date stabila. aceasta este o activitate
de tip REDO.
? tranzactii nevalidate (loosers) - nu si-ai ncheiat n totalitate operatiile de
efectuat, dar este posibil ca unele modificari sa se fi propagat n baza de date
stabila.
? nu-si vor putea continua executia dupa o cadere de sistem -> vor trebui
abandonate.
? o activitate de tip UNDO
? se parcurge jurnalul n sens invers si seanuleaza toate efectelor operatiilor
efectuate de tranzactiile nevalidate.
13
Defect al suportului de
memorare
? Actiunile de recuperare - similare celor de dupa o cadere de
sistem.
? Se porneste de la ultima copie arhivata a bazei de date si cu ajutorul
jurnalului se vor reconstitui toarte modificarile efectuate asupra
acesteia.
? Jurnalul folosit si pentru monitorizarea si auditarea
performantelor,
? n jurnal vor fi nregistrate informatii suplimentare ( citiri din baza de
date, nceputul si sfrsitul sesiunilor de lucru ale utilizatorilor etc)

14
TRID Ora Operatia Ob Imagine Imagin Ptr A Ptr U Adr
Inainte e dupa .
T1 BEGIN_TRS 0 2 1
T1 UPDATE R1.C1 val val 1 8 2
veche noua
T2 BEGIN_TRS 0 4 3
T2 INSERT val 3 5 4
noua
T2 DELETE val 4 6 5
veche
T2 UPDATE val val 5 9 6
veche noua
T3 BEGIN_TRS 0 10 7
T1 COMMIT 2 0 8
CHECKPOIN T2, T3
T
T2 COMMIT 6 0 9
T3 INSERT val 7 11 10
noua
T3 COMMIT 10 0 11

15
Protocoale pentru actualizarea jurnalului
Memorie principala

Jurnal read Buffer de


Stabil Modul de recuperare jurnal.
(Jurnalul
volatil)

write read
Flush
Buffer de
date
write
( Baza de
read Administrator de buffer read date volatila)

write
Baza de
date stabila write

Periodic, paginile din jurnalul volatil sunt salvate n jurnalul stabil.


-sincron (fortat) daca nregistrarea scrisa n jurnalul volatil se
transfera imediat n jurnalul stabil.
- executia tranzactiei este suspendata pna la terminarea
operatiei - ntrzieri n executia tranzactiilor si diminuarea
performantelor sistemului.
-asincron , continutul jurnalului volatil se transfera n jurnalul
stabil periodic sau atunci cnd buffer-ul este plin.
-valorifica superior banda de trecere a dispozitivelor de I/E.
16
Protocolul Write_Ahead_Log WAL

? Salvarea n baza de date stabila a rezultatului unei


actualizari, trebuie sa fie precedata de salvarea n jurnalul
stabil a imaginii nainte corespunzatoare acesteia.
? daca la salvarea unei nregistrari n baza de date stabila se
constata ca nregistrarea corespondenta se afla nca n
memoria volatila, atunci aceasta din urma va fi fortata, printr-
o operatie de scriere sincrona n jurnalul stabil. Numai dupa
aceea va fi salvata n baza de date stabila.

17
Regula Force_at_Commit
? O tranzactie poate fi validata doar dupa ce
toate imaginile dupa ale nregistrarilor
actualizate se gasesc n baza de date stabila
sau n jurnalul stabil.
? Daca aceasta regula nu ar fi respectata s-ar
mpiedica desfasurarea activitatii de tip
REDO n procesul de recuperare.

18
Tehnici de refacere
? depind de gradul de deteriorare al bazei de date.
? daca baza de date a fost grav deteriorata (distrusa fizic)
? este necesar sa se restaureze ultima copie de siguranta a acesteia
si sa se aplice din nou operatiile de reactualizare a tranzactiilor
efectuate cu ajutorul fisierului jurnal, daca nu a fost distrus
? daca baza de date nu a fost deteriorata fizic ci a devenit
incoerenta
? este necesar sa se anuleze modificarile care au cauzat incoerenta.
? poate fi necesar sa se reia unele tranzactii pentru a garanta ca
reactualizarile efectuate de catre acestea au ajuns pe capacitatea de
stocare secundara.
? se folosesc doua tehnici de refacere si anume :
? reactualizarea amnata
? reactualizarea imediata

19
Tehnici de refacere cu ajutorul reactualizarii amnate

? reactualizarile nu sunt scrise n baza de date dect dupa ce tranzactia a


ajuns pe punctul de a fi efectuata.
? daca tranzactia esueaza nainte de a ajunge n acest punct ea nu va
modifica baza de date si ca urmare nu vor fi necesare anulari
? poate totusi sa fie necesara reluarea reactualizarilor tranzactiilor efectuate
deoarece este posibil ca efectul acestora sa nu fi ajuns la baza de date.

20
? fisierul jurnal este utilizat pentru protejarea bazei de date mpotriva penelor
de sistem n urmatorul mod:
? cnd se ncepe o tranzactie se trece n jurnal o nregistrare de nceput;
? cnd se efectueaza o operatie de scriere, se trece n jurnal o nregistrare
care contine datele corespunzatoare (exclusiv imaginea anterioara a
reactualizarii). Reactualizarea nu se scrie n bufferele bazei de date sau
n baza de date nsasi;
? cnd tranzactia este pe punctul de a fi efectuata, se trece n jurnal o
nregistrare de efectuare a tranzactiei, se scriu pe disc toate
nregistrarile din jurnal corespunzatoare tranzactiei, apoi se efectueaza
tranzactia. nregistrarile din jurnal sunt folosite pentru a efectua
adevaratele reactualizari n baza de date
? daca o tranzactie este anulata se ignora nregistrarile din jurnal
corespunzatoare acesteia si nu se efectueaza actualizarile.

21
? Orice tranzactie care are nregistrari de ncepere a
tranzactiei si de efectuare a tranzactiei trebuie reluata. In
acest scop se efectueaza toate scrierile n baza de date
folosind "imaginile dupa " din jurnal, n ordinea n care au
fost scrise acestea.
? Pentru tranzactiile care au nregistrari de ncepere a
tranzactiei si de abandonare a tranzactiei nu se face nimic,
din moment ce nu a fost efectuata nici o scriere n baza de
date,

22
Tehnici de refacere cu ajutorul reactualizarii imediate

? reactualizarile sunt aplicate bazei de date imediat ce au loc fara a astepta ca


tranzactia sa ajunga pe punctul de a fi efectuata
? o pana ar putea necesita att reluarea reactualizarilor efectuate ct si anularea
efectelor tranzactiilor care nu au fost efectuate. Fisierul jurnal va fi utilizat astfel:
? atunci cnd ncepe tranzactia se trece n jurnal o nregistrare de ncepere
a tranzactiei;
? cnd este efectuata o operatie de scriere, se trece n jurnal o nregistrare
care contine datele necesare
? o data nregistrarea scrisa n jurnal, reactualizarile se trec n bufferele
bazei de date
? reactualizarile bazei de date nsasi sunt scrise cnd bufferele sunt golite
data viitoare n capacitatea de stocare secundara
? pt. o tranzactie efectuata se trece n jurnal o nregistrare de efectuare a
tranzactiei
? foarte important - nregistrarile din jurnal trebuie sa fie scrise nainte de scrierea
corespunzatoare n baza de date ( protocol de scriere n avans n jurnal)

23
Tehnici de refacere cu ajutorul reactualizarii imediate -
continuare

? Orice tranzactie pentru care n jurnal apare att o


nregistrare de nceput a tranzactiei ct si una de efectuare
a acesteia va fi reluata utiliznd nregistrarile din jurnal
pentru a scrie cmpurile "imaginii dupa".
? Orice tranzactie pentru care jurnalul contine o
nregistrare de ncepere a tranzactiei dar nu si una de
efectuare a acesteia, va trebui anulata, caz n care jurnalele
sunt folosite pentru a scrie "imaginea nainte" a cmpurilor
afectate.

24
Puncte de reluare
? Un punct de reluare = starea sistemului la un moment dat, salvata n
memoria secundara.
? stare este coerenta n raport cu un anumit criteriu a.. n eventualitatea unui
defect poate fi utilizata ca stare initiala pentru procesul de recuperare.
? Frecventa punctelor de reluare:
? este un compromis ntre durata procesului de recuperare si timpul necesar
crearii fiecarui punct de reluare.
? Pt. bazele de date mari, punctele de reluare sunt create la cteva minute, astfel nct
se mentine durata procesului de recuperare sub un minut.
? este data de intensitatea folosirii jurnalului (se va realiza cte un punct de
reluare oridecte ori numarul de nregistrari adaugate n jurnal ajunge la o
valoare prestabilita (1000 nregistrari) sau marimea jurnalului creste cu o
valoare data)
? Exista doua tipuri de puncte de reluare:
? puncte de reluare simple
? puncte de reluare fuzzy

25
Puncte de reluare simple
? presupune salvarea periodica a ntregului continut al memoriei volatile n
memoria stabila.
? se realizeaza sub forma unei operatii sincrone care transfera n memoria
stabila o stare consistenta a sistemului. Presupune urmatorii pasi:
? 1. se suspenda activitatea sistemului prin blocarea tuturor cererilor
referitoare la operatii de actualizare, validare sau abandon
? 2. se construieste o lista a tuturor tranzactiilor active din sistem,
asociind fiecarei tranzactii un pointer la cea mai recenta nregistrare din
jurnal scrisa de acea tranzactie
? 3. se salveaza continutul memoriei volatile n memoria stabila.
? 4. se scrie n jurnal o nregistrare corespunzatoare punctului de reluare.
Aceasta contine lista de tranzactii si pointeri construita la punctul 2.
? 5. se reia activitatea sistemului prin acceptarea de noi cereri pentru
operatii de actualizare, validare sau abandon.

26
Puncte de reluare fuzzy
? Numele de fuzzy provine din faptul ca datele salvate n memoria
stabila s-ar putea sa nu fie mutual consistente.
? Ele nu reprezinta starea sistemului la un moment dat, parti diferite ale
bazei de date corespunznd unor stari din momente diferite de timp.
? orice punct de reluare fuzzy are proprietatea ca poate fi convertit
ntr-un punct de reluare simplu prin aplicarea asupra sa a tuturor
modificarilor nscrise n jurnal pe durata executarii sale. Aceasta
activitate este parte implicita a procesului de recuperare.

27
Generarea unui punct de reluare fuzzy

? 1.se suspenda activitatea sistemului prin blocarea tuturor cererilor


referitoare la operatii de actualizare, validare sau abandon
? 2.se construieste o lista a tuturor tranzactiilor active din sistem, asociind
fiecarei tranzactii un pointer la cea mai recenta nregistrare din jurnal
scrisa de acea tranzactie
? 3.se scrie n jurnal o nregistrare corespunzatoare punctului de reluare.
Aceasta contine lista de tranzactii si pointeri construita la punctul 2.
? 4.se reia activitatea sistemului prin acceptarea de noi cereri pentru operatii
de actualizare, validare sau abandon.
? 5.n paralel cu activitatea normala a sistemului se salveaza n memoria
stabila paginile continute n lista construita la punctul 2.
Scrierile se fac prin operatii cu prioritate scazuta n momentele cnd
canalul de intrare-iesire nu este ocupat cu deservirea comenzilor
rezultate din functionarea normala a sistemului.

28
? In procesul de recuperare se va lua n considerare penultimul punct de
reluare deoarece acesta este de fapt ultimul punct de reluare a carui
generare este completa.

? Au avantajul ca sunt mai eficiente dect punctele de reluare simple si nu


perturba functionarea sistemului

29
T1
T2 Exemplu
T3
T4
T5
T6

t0 tc tp
datele corespunzatoare T2 si T3 au fost scrise n capacitatea secundara de
stocare, nainte de aparitia penei.
T1 si T6 nu au fost efectuate n momentul penei ? la reluarea activitatii,
administratorul de recuperare trebuie sa le anuleze .
pentru tranzactiile care au fost deja efectuate, nu este clar n ce masura
modificarile executate s-au propagat n baza de date de pe capacitatea de
stocare nevolatila. (este posibil ca bufferele volatile ale bazei de date sa fi
fost scrise sau nu pe disc) ? AR va fi fortat sa reia T4 si T5.
daca tc este un punct de reluare, atunci se stie ca modificarile efectuate de
tranzactiile T2 si T3 au fost scrise n capacitatea de memorare secundara.
AR va omite operatiile de reluare pentru aceste tranzactii. Totusi, vor
trebui reluate T4 si T5 si anulate T1 si T6.
30
Proiectarea bazelor
de date

Curs 7
SECURITATEA BAZELOR DE
DATE
January 5, 2005 1
Securitatea bazelor de date
 se refer la protejarea bazei de date mpotriva ameninrilor intenionate
sau neintenionate, prin utilizarea unor elemente de control bazate sau nu pe
calculatoare
 analiza securitii unei baze de date cuprinde:
 serviciile furnizate de ctre SGBD
 o gam mai larg de probleme asociate securizrii bazei de date i a
mediului acesteia.
 consideratiile de securitate nu se aplica numai datelor coninute n baza de
date (deoarece breele din sistemul de securitate pot afecta i alte pri ale
sistemului, care, la rndul lor, pot afecta baza de date).
 securitatea bazei de date se refer la:
 elemente de hardware i
 software,
 persoane i date.

January 5, 2005 2
Motive
 cresterea cantitatilor de date colective, de importan crucial, care sunt
stocate pe calcuatoare
 recunoaterea faptului c orice pierdere sau lips de disponibilitate a
acestora s-ar putea dovedi potenial dezastruoas
 baza de date - resurs colectiv esenial
 trebuie asigurata corespunztor, utiliznd elemente de control adecvate.
 Securitatea bazelor de date trebuie considerat relativ la urmtoarele
situaii:
 Furt i frauda ;

 Pierderea confidenialitii (secretului);

 Pierderea caracterului privat;

 Pierderea inetgrittii;

 Pierderea disponibilitii.

January 5, 2005 3
Pericole
 Pericolul reprezint orice situaie sau eveniment, intenionat sau
neintenionat, care va afecta negativ un sistem, i n ultim instan, o
organizaie.
 poate fi cauzat de o situaie sau un eveniment care implic o persoan,
o aciune sau o circumstan care este probabil s duneze unei
organizaii.
 Daunele pot fi :
 tangibile pierderea de date

 intangibile pierderea credibilitii sau ncrederii unui client.

 Orice pericol trebuie privit ca o potenial bre n sistemul de securitate,


care, dac reuete va avea un anumit impact.

January 5, 2005 4
Exemple de pericole
 folosirea de ctre un utilizator a mijloacelor de acces ale altor persoane
 corectarea sau copierea neautorizat a datelor
 alterarea programelor
 interceptarea convorbirilor
 intrarea ilegal a unui hacker
 furtul de date, programe sau echipament
 pregtirea necorespunztoare a personalului
 vizualizarea i divulgarea neautorizat a datelor
 incendiile, inundaiile, bombardamentele
 ruperea sau deconectarea cablurilor

 introducerea de virui

January 5, 2005 5
Contramasuri
elemente de control bazate pe calculator

 autorizarea;
 vederile;
 copiile de siguranta si refacerea;
 integritatea;
 criptarea;
 procedurile asociate.

January 5, 2005 6
Autorizarea
 Autorizarea const n acordarea unui drept sau privilegiu, care permite
unui subiect s aib acces legitim la un sistem sau un obiect dintr-un
sistem.
 Controlul autorizrii - implementat n cadrul elementelor de software
 poate reglementa:
 sistemele sau obiectele la care are acces un utilizator
 ce poate face acesta cu ele.
 controlul autorizrii mai este numit controlul accesului.
 Subiectul se refar la un utilizator sau un program.
 Obiectul adreseaz un tabel din baza de date, o vedere, o aplicaie,
procedur sau orice alt obiect care poate fi creat n cadrul sistemului.

January 5, 2005 7
 presupune autentificarea subiecilor care solicit acces la
obiecte.
 Autentificarea - mecanism care determin dac un utilizator
este cine pretinde a fi.
 Administratorul de sistem -acord permisiunea de acces la un
sistem de calcul
 creaz conturi individuale pentru utilizatori
 fiecrui utilizator i este acordat un identificator unic, care este utilizat
de ctre sistemul de operare pentru a afla cine este acesta.
 fiecare identificator are asociat o parol, aleas de ctre utilizator i
cunoscut de sistemul de operare,
 nu asigur automat autorizarea accesului la baza de date sau la
programele de aplicaie asociate

January 5, 2005 8
 Responsabilitatea de a autoriza utilizarea sistemului SGBD aparine
personalului din administrarea bazelor de date sau administratorului bazei
de date.
 trebuie s configureze identificatorii utilizatorilor individuali folosind
posibilittile SGBD-ului ales.
 fiecare identificator este asociat cu o parol, cunoscut n exclusivitate de
utilizatorul respectiv, care este folosit de SGBD pentru autentificare.
 SGBD-uri care
 pstreaz o list a identificatorilor de utilizatori valabili i parolele asociate
diferit de lista sistemului de operare.
 pstreaz o list ale crei intrri sunt validate conform cu lista sistemului de
operare, bazat pe identificatorul de ncepere a unei sesiuni de lucru a
utilizatorului.
 Avantaj- scutete utilizatorul de a ncepe o sesiune de lucru n sistemul SGBD cu
un nume, dup ce a nceput deja o sesiune de lucru n sistemul de operare folosind
un alt nume.

January 5, 2005 9
Privilegii
 O data ce unui utilizator i-a fost acordata permisiunea de a utiliza un sistem
SGBD acestuia i pot fi automat asociate diverse privilegii.
 Exemplu:
 dreptul de a accesa anumite obiecte din baza de date inclusiv tabelele
 selecia sau regsirea de date
 de a crea baze de date, tabele, vederi si indexuri sau
 de a rula diverse programe utilitare din sistemul SGBD.
 sisteme inchise - dei utilizatorii pot fi autorizati sa acceseze sistemul
SGBD, este necesara si autorizatia de a accesa diverse obiecte.
 autorizatia este acordata fie de catre administratorul DBA, fie de catre
proprietarii anumitor obiecte.
 sisteme deschise - permit utilizatorilor accesul complet la toate obiectele
din baza de date. In acest caz, pentru a controla accesul, este necesar ca
privilegiile sa fie retrase explicit utilizatorilor.

January 5, 2005 10
 obiecte din sistemul SGBD deinute de ctre sistem nsui -prin
intermediul unui anumit superutilizator (DBA).
T se ofera proprietarului toate privilegiile corespunzatoare asupra acestora.
 regula se aplica i altor utilizatori autorizai, dac acetia au n proprietate
obiecte.
 un obiect nou creat devine automat proprietatea celui care l-a realizat, care
capt privilegiile corespuztoare pentru acesta.
 cu toate ca un utilizator poate fi proprietarul unei vederi, se poate ca el sa fie
autorizat numai sa o interogheze.
 privilegiile pot fi transmise altor utilizatori autorizati.
 proprietarul mai multor tabele de baze poate autoriza alti utilizatori sa le
interogheze, dar fara a efectua nici un fel de modificari.
 ori de cate ori un utilizator transmite un privilegiu, are posibilitatea de a indica
daca destinatarul le poate transmite mai departe.
 SGBD ine evidena tuturor privilegiilor acordate utilizatorilor i de ctre
cine.

January 5, 2005 11
 Privilegiile pot fi asociate unor anumii identificatori - care le specific
tipul (Read, Update, Insert, Delete sau All)

 Exemplu: Fiecare privilegiu are asociat o valoare binar, cum ar fi:


READ UPDATE INSERT DELETE ALL
0001 0010 0100 1000 1111

 Valorile binare sunt sumate n mod corespunztor, iar valoarea total indic
ce privilegii sunt acordate unui anumit utilizator sau grup, pentru un
anumit obiect.
 Diversele privilegii acordate utilizatorilor - reinute cu ajutorul matricei de
control a accesului.

January 5, 2005 12
EXEMPLU:

Fie urmtorul tabel, parte component a bazei de date referitoare la


faculti:
Stud( cods, nume, pren, ddn, cnp)
Se consider c valorile binare asociate privilegiilor sunt cele
enunate, iar utilizatorii considerai sunt membri ai serviciului
secretariat. Ca urmare, se va considera c exist grupul Secretar
din care fac parte utilizatorii Elena, Miha i Laura.

Matricea de control a accesului este urmtoarea:

Identificator cods nume pren ddn cnp Limita rndurilor


utilizator rezult. interogrii
Miha 0101 0101 0101 0101 0101 20
Laura 0101 0111 0111 0101 0101 35
Elena 1111 1111 1111 1111 1111 nici una
Secretar 0001 0001 0001 0001 0001 100

January 5, 2005 13
Controlul accesului n SQL
(autorizarea i acordarea privilegiilor)
 SQL ofer faciliti de configurare a securitii tabelelor din baza de date.
 mecanismul de securitate se bazeaz pe conceptele de:
U identificatori de autorizare,
U posesie,
U privilegii
 fiecare instruciune SQL executat de ctre sistemul SGBD este efectuat
n contul unui anumit utilizator
 fiecare obiect creat cu ajutorul limbajului SQL are un proprietar, specificat
prin identificatorul de autorizaie cu ajutorul clauzei AUTORIZATION
plasat n descrierea schemei creia i aparine obiectul.

CREATE SCHEMA [denumire ][AUTORIZATION identificator_creator]

January 5, 2005 14
 Iniial, proprietarul este singura persoan care cunoate existena
obiectului respectiv, ca urmare numai el poate efectua operaii asupra
acestuia.
 Privilegiile definite n standardul ISO sunt:
 SELECT privilegiul de a regsi datele dintr-un tabel
 INSERT privilagiul de a insera nregistrri ntr-un tabel
 UPDATE privilegiul de a modifica nregistrri ntr-un tabel
 DELETE privilegiul de a terge rnduri dintr-un tabel
 REFERENCES privilegiul de a se referi la coloanele dintr-un anumit tabel
n cadrul constrngerilor de integritate
 USAGE privilegiul de a utiliza domenii, interclasri, seturi de caractere etc.
 INSERT i UPDATE pot fi restrnse numai la anumite coloane ale
tabelului - este permis doar modificarea acestor coloane i este interzis
modificarea celorlalte coloane.
 REFERENCES poate fi la anumite coloane - care este permis referirea la
acestea n cadrul constrngerilor (verificare sau de integritate
referenial), atunci cnd se creaz un nou tabel.

January 5, 2005 15
 cnd un utilizator creaz un tabel cu CREATE TABLE, devine automat
proprietarul tabelului i primete privilegii complete pentru el.
 iniial, pentru acest tabel ali utilizatori nu au privilegii.
 pentru a le acorda accesul , proprietarul trebuie s le acorde explicit
privilegiile necesare, folosind instruciunea GRANT.
 cnd un utilizator creaz o vedere cu CREATE VIEW, acesta devine
automat proprietarul vederii, dar nu primete automat privilegii complete
pentru ea.
 pentru a crea o vedere, utilizatorul trebuie s aib privilegiul SELECT
pentru toate tabelele care o formeaz i privilegiul REFERENCES pentru
coloanele denumite n cadrul vederii.
 proprietarul vederii primete privilegiile INSERT , UPDATE i DELETE
numai dac deine aceste privilegii pentru fiecare tabel din cadrul vederii.

January 5, 2005 16
Acordarea de privilegii altor utilizatori
(instruciunea GRANT)
GRANT list_priv ALL PRIVILEGES
ON denumire_obiect
TO list_id_autoriz PUBLIC
[WITH GRANT OPTION ]

 ALL PRIVILEGES acord unui utilizator toate privilegiile


 PUBLIC acord privilegiile tuturor utilizatorilor autorizai, prezeni i
viitori, nu numai a celor recunoscui n momentul respectiv de ctre SGBD.
 denumire_obiect poate reprezenta denumirea unui tabel de baz, vedere,
ir de caractere, etc.
 WITH GRANT OPTION permite utilizatorilor din lista_id_autoriz s
transmit unui alt utilizator privilegiile acordate lui pentru un aumit obiect.

January 5, 2005 17
 Acordarea privilegiilor complete
pt. tabelul Studeni , utilizatorului
Exemple
cu identificatorul de autorizare  Acordarea privilegiului SELECT
Secretar_sef asupra tabelului Student pentru
GRANT ALL PRIVILEGES
utilizatorii Secretar2 i Decan.
ON Studeni GRANT SELECT
TO Secretar_Sef WITH GRANT OPTION ON Student
TO Secretar1, Decan
 Acordarea privilegiilor SELECT
i UPDATE asupra coloanelor
nume i pren din tabelul Student  Acordarea privilegiului SELECT
pentru utilizatorul cu asupra tabelului Orar pentru toi
identificatorul de autorizare utilizatorii
Secretar1 GRANT SELECT
ON Orar
TO PUBLIC
GRANT SELECT, UPDATE (nume, pren)
ON Studeni
TO Secretar1

January 5, 2005 18
Retragerea privilegiilor utilizatorilor
(instruciunea REVOKE)
 Este posibil retragerea tuturor privilegiilor care au fost acordate unui
utilizator sau a unei pri din acestea.
REVOKE [GRANT OPTION FOR] list_priv ALL PRIVILEGES
ON denumire_obiect
FROM list_id_autoriz PUBLIC
[RESTRICT CASCADE ]

 GRANT OPTION FOR permite ca privilegiile transmise prin intermediul


clauzei WITH GRANT OPTION din instruciunea GRANT s fie retrase
separat
 RESTRICT i CASCADE semnific revocarea restricionat sau n
cascad a privilegiilor.

January 5, 2005 19
 retragerea unui privilegiu asupra unui obiect poate elimina autoritatea care
a permis crearea obiectului respectiv (se spune c obiectul a fost
abandonat)
 Instruciunra REVOKE eueaz dac are ca rezultat un obiect abandonat (
de ex. o vedere).
 dac a fost specificat cuvntul cheie CASCADE, se emite o opiune DROP
adecvat pentru orice vederi, domenii sau constrngeri abandonate.
 privilegiile care au fost acordate unui utilizator de ctre alti utilizatori
dect cel care i retrage privilegiile, nu sunt afectate de ctre aceast
instruciune REVOKE.
 dac un utilizator i-a acordat altuia privilegiul care este retras de ctre al treilea
utilizator, permisiunea acordat de ctre primul utilizator i va da voie celui de-
al doilea s acceseze n continuare tabelul.

January 5, 2005 20
January 5, 2005 21
Exemple:
 retragerea privilegiului SELECT asupra tabelului Student pentru toi
utilizatorii
REVOKE SELECT
ON Student
FROM PUBLIC

 retragerea tuturor privilegiilor acordate utilizatorului Secretar1, din


tabelul Student
REVOKE ALL PRIVILEGES
ON Student
FROM Secretar1

January 5, 2005 22
Salvarea de siguran i refacerea

 Salvarea de siguran este procesul de efectuare periodic a


unei copii a bazei de date, a fiierului jurnal i dac este posibil
a programelor pe mediul de stocare off-line.
 Crearea de jurnale este procesul prin care se pstreaz i se
ntreine un fiier jurnal al tuturor modificrilor efectuate n
baza de date, pentru a permite efectuarea eficient a refacerii
acesteia, n cazul unei defeciuni.
 Crearea de puncte de control presupune crearea de puncte de
sincronizare ntre baza de date i jurnalul tranzaciilor.
Aceasta nseamn c toate bufferele sunt scrise obligatoriu n
capacitatea de stocare secundar.

January 5, 2005 23
. Criptarea
 Criptarea este procesul de codificare a datelor printr-un algoritm special,
care face ca acestea s nu poat fi citite de ctre un program, n absena
cheii de decriptare.
 protejaz detele transmise prin intermediul liniilor de comunicaie.
 tehnici de codificare a datelor:
 reversibile,
 ireversibile - nu permit cunoaterea datelor originale, dar pot fi utilizate pentru
a obine informaii statistice valabile.
 este necesar folosirea unui criptosistem, care cuprinde:
 - cheia de criptare pentru a cripta datele
 algoritmul de criptare- cu ajutorul cheii de criptare transform textul obinuit
n text cifrat
 cheia de decriptare pentru a decripta textul criptat
 algoritmul de decriptare folosind cheia de decriptare transform textul cifrat
n text obinuit (lizibil)

January 5, 2005 24
 dou tipuri de criptosisteme:
 cu criptare simetric - utilizeaz aceeai cheie att pentru
criptare ct i pentru decriptare deoarece se consider c liniile
de comunicaie ofer un anume grad de siguran.
 cu criptare asimetric- utilizeaz chei diferite pentru criptare
i decriptare.
 criptosistemele cu chei publice, n care se utilizeaz dou chei: una este
public iar cealalt este secret. i algoritmul de criptare poate fi
public, astfel nct oricine dorete s trimit un mesaj utilizatorului
poate folosi cheia cunoscut a acestuia mpreun cu algoritmul
cunoscut, pentru criptare. Apoi numai deintorul unei anumite chei
particulare poate descifra mesajul.

January 5, 2005 25
Procedurile asociate
 pentru autorizare i autentificare:
 parolele trebuie inute secrete i schimbate la
intervale regulate
 parolele nu trebuie afiate n timpul procedurii de
deschidere a unei sesiuni de lucru
 toi identificatorii de utilizatori i parolele asociate
trebuie criptate
 stabilirea de proceduri prin care numai anumitor
utilizatori li se acord accesul, sub diferite forme la
diferite obiecte.
 este foarte util inerea evidenei autorizaiilor

January 5, 2005 26
 pentru salvarea de siguran
 sunt influenate de:
 natura i dimensiunile bazei de date i
 de facilitile SGBD-ului folosit.

 se refer la frecvena de execuie a copiilor de


siguran, la personalul responsabil de aceste copii,
la prile sistemului care vor fi salvate ( date,
programe, etc)
 este necesar existena unui loc sigur pentru a
depune copiile de siguran.

January 5, 2005 27
 pentru refacere

 procedura de refacere trebuie bine definit


 procedura de refacere depinde de defectul aprut i
de metoda de refacere utilizat de SGBD.
 procedura de refacere trebuie testat la intervale
regulate.

January 5, 2005 28
Contramsuri - elemente de control care nu
sunt bazate pe calculator
 politica de securitate a organizaiei i planul pentru
msuri excepionale
 controlul personalului
 amplasarea echipamentului n condiii de siguran
 acordurile ESCROW
 acordurile de ntreinere
 controlul fizic al accesului

January 5, 2005 29
Securitatea PC-urilor
 Caracteristici dimensiuni reduse i amplasamentul
n biroul utilizatorului
 potfi uor mutate din loc
 acces lor relativ simpl
 Msuri suplimentare de protecie
 zvoare pentru tastatur
 identificatori si parole de acces
 plasarea mediilor secundare externe de stocare a datelor in
locuri sigure
 utilizarea exclusiv a softurilor autorizate

January 5, 2005 30
Proiectarea bazelor
de date

OPTIMIZAREA INTEROGRILOR 1
Curs 8

January 5, 2005 1
Prelucrarea interogrilor

T Reprezint totalitatea activitilor implicate


n regsirea datelor din bazele de date
T scop:
U transform cererea scris n limbaje de nivel
nalt (SQL) ntr-o strategie de execuie
corect i eficient , exprimat ntr-un limbaj
de nivel sczut (prin implementarea algebrei
relaionale)
U aplic strategia pentru a regsi datele

January 5, 2005 2
Optimizarea interogrilor
T Activitatea de alegere a unei strategii de execuie eficient pentru
prelucrarea unei interogri.
T Scop:
 alege din mulimea transformrilor echivalente ale aceleiai
interogri de nivel nalt pe cea care minimizeaz utilizarea resurselor.
T reduce timpul total de execuie a interogrii

T reduce timpul de rspuns al interogrii - maximizarea numrului de


operaii paralele
 statistica bazei de date:cardinalitatea relaiilor, domeniile
atributelor, numrul de valori distincte pentru fiecare atribut,
numrul de nivele ntr-un index multiplu, etc.

January 5, 2005 3
Exemplu:
Furnizori (idf, numef, adresa)
Material (idm, denm, pre, idf)
Care sunt furnizorii care pot furniza materialul M1?
fie |r| - cardinalitatea relaiei r i:
|furnizori|=100
|materiale|=10.000 i exist 50 de nreg. cu referire la M1

VARIANTA 1
SELECT DISTINCT numef
FROM furnizori f, materiale m
WHERE f.idf=m.idf and m.denm=M1

January 5, 2005 4
T Planul de execuie este:
 1. Produsul cartezian ntre furnizori i materiale-
100x10.000=1.000.000 op citire de pe suportul secundar de memorie
T relaia rezultat nu poate fi stocat n memorie -> tb scris pe
suportul de memorare secundar
 2. Se citesc 1.000.000 nreg i se aplic condiiile de selecie => o
relaie cu 50 de nregistrri - poate fi pstrat n memoria princ.
 3. Se proiecteaz relaia de la pct. 2 dup atributul numef
T Execuia presupune:
 100+10.000 accesri ale discului pt. a citi relaiile
T o relaie cu 1.000.000 nregistrri scris pe disc

 2* 1.000.000=2000.000 accese ale discului pt. scriere-citire a


nregistrrilor pe disc
 Total:100+10.000+2.000.000= 2.010.100 accese pe disc

January 5, 2005 5
VARIANTA 2
SELECT DISTINCT numef
FROM furnizori f, ( Select idf
From materiale m
WHERE m.denm=M1
WHERE f.idf=m.idf
Planul de execuie:
 se selecteaz din relaia Materiale toate nreg. referitoare la M1
citirea a 10.000 nregistrri i producerea unei relaii cu
cardinalitatea =50 - poate fi reinut n memoria principal
 uniunea rezultatului anterior cu relaia Furnizori regsirea a
100 de nregistrri, care (n cel mai defavorabil caz) necesit a fi
citite de 50 de ori

January 5, 2005 6
Planul de execuie:
T se selecteaz din relaia Materiale toate nreg. referitoare la M1 citirea
a 10.000 nregistrri i producerea unei relaii cu cardinalitatea =50 - poate
fi reinut n memoria principal
T uniunea rezultatului anterior cu relaia Furnizori regsirea a 100 de
nregistrri, care (n cel mai defavorabil caz) necesit a fi citite de 50 de ori
T 100*50=5000 operaii de citire

 cardinalitatea relaiei rezultat este 50


T se proiecteaz rezultatul anterior dup cmpul numef

T Statistic:
 10.000+5.000 =15.000 operaii de citire de pe disc
 50 operaii de scriere pe disc

January 5, 2005 7
Concluzie
 secventa de execuie a unei interogri poate fi
mbuntit dac:
 seleciile se fac ct mai devreme posibil
 produsele carteziene sunt combinate cu selecii pentru a
se obine operaii de jonciune
 secvenele operaiilor unare sunt combinate (se aplic
selecii sau proiecii n grup)
 subinterogrile comune sunt pre-calculate ( dac se
obin rezultate de dimensiuni reduse i se pot citi de pe
suportul de memorie secundar mai repede dect se
calculeaz )

January 5, 2005 8
Prelucrarea interogrilor
 Patru etape :
 descompunerea interogrilor
 analiza
 validarea

 optimizarea
 generarea codului
 execuia

January 5, 2005 9
Interogarea n un limbaj de
nivel nalt (SQL)

Descompunerea Catalogul
Descompunerea
interogrii
interogrii sistemului

Expresie din algebra relaional

Optimizarea
Optimizarea Statistica
Timpul de
interogrii
interogrii
compilare de date

Planul de execuie
Generarea
Generarea
codului
codului
Codul generat

Timpul de Timpulde
Timpul deexecu-
execu- Baza de date
ie aainterogrii
ie interogrii
rulare fizic

January 5, 2005 10
 Interogarea este parcurs i analizat d.p.d.v. sintactic
 dac exist greeli se genereaz un mesaj de eroare

 procesorul de interogare construiete o reprezentare intermediar a


interogrii (arbore sau graf)
 este o form canonic, care reprezint cel mai simplu dar nu i
cel mai eficient plan de interogare

 optimizatorul de interogare transform planul iniial n cel mai


eficient plan care genereaz un rezultat identic cu cel al primului
plan

 procesorul de execuie efectueaz interogarea


 dac exist o eroare de execuie se genereaz un mesaj

January 5, 2005 11
Descompunerea interogrilor
T Scop:
U transformarea unei interogri de nivel nalt ntr-o
interogare din algebra relaional
U verific corectitudinea d.p.d.v. sintactic i gramatical

T etape:
U analiza
U normalizarea
U analiza semantic
U simplificarea

January 5, 2005 12
Analiza
T Interogarea- analizat lexical i sintactic cu ajutorul tehnicilor
compilatoarelor
T se verific
 dac relaiile i atributele specificate sunt definite n catalogul de sistem
 dac toate operaiile aplicate obiectelor bazei de date sunt adecvate
pentru tipurile de obiecte respective
T Rezult o reprezentare intern sub forma unui arbore de
analiz (parse tree)
 se creaz cte un nod frunz pentru fiecare relaie de baz din
interogare
 se creaz cte un nod intermediar pentru fiecare relaie obinut ca
urmare a unei operaii din algebra relaional
 rdcina arborelui reprezint rezultatul interogrii
 secvena operaiilor este ndreptat de la frunze ctre rdcin

January 5, 2005 13
Exemplu:
arbore de interogare pentru expresia
x(SxRxQ)
x

S x

R Q

January 5, 2005 14
Normalizarea
T Presupune transformarea interogrii ntr-o form normalizat, care poate
fi manipulat cu uurin
T prin aplicarea unor reguli de echivalen predicatele complexe pot fi
transformate n:
 forma normal conjunctiv - conjuncie de disjuncii
 [(A or B or C) and (D or E)]

 o selecie conjunctiv conine numai acele tupluri care satisfac toate


disjunciile implicate
 forma normal disjunctiv - disjuncie de conjuncii
 [(A and B and C) or (D and E)]

 o selecie disjunctiv conine acele tupluri formate prin uniunea


tuplurilor care satisfac conjunciile

January 5, 2005 15
Analiza semantic
T Obiectiv:
 respingerea interogrilor normalizate care sunt formulate incorect sau
contradictoriu
T O interogare este incorect formulat atunci cnd componentele sale nu
contribuie la generarea rezultatului (sunt omise unele specificaii privind
uniunea)
T o interogare este contradictorie dac predicatul nu poate fi satisfcut de
nici un tuplu
T algoritmi de determinare a corectitudinii unei interogri NUMAI pentru
subseturile de interogri care NU conin disjuncii sau negaii:
 construcia unui graf de conectare a relaiilor
 construcia unui graf normalizat de conectare a atributelor

January 5, 2005 16
Graful de conectare a relaiilor
T Se creaz cte un nod pentru i interogarea
fiecare relaie i un nod pentru SELECT s.nume, s.ddn, c.denc
rezultat FROM stud s, curs c, inscrieri I
T muchii: WHERE c.codc=I.codc AND c.denc=BD
 ntre dou noduri care
reprezint o uniune
 ntre nodurile care reprezint
sursa operaiilor de proieciei R
nodul rezultat I
 dac graful nu este conectat,
interogarea este incorect C
S
formulat
Fie relaiile:
Stud(cods, nume,ddn,cnp...) Nu exist legtur intre S i I
Curs (codc, denc, ) formulare incorect
nscrieri (cods, codc, ...) Explicai de ce !!!
January 5, 2005 17
Graful normalizat de conectare a atributelor
T Se creaz cte un nod pentriu fiecare referire la un atribut sau o constant
(constanta 0)
T se creeaz o muchie direcionat:
 ntre nodurile care reprezint o uniune
 ntre un nod de atribute i o constant 0 care reprezint o operaie de
selecie
T se pondereaz:
 muchiile ab cu valoarea c dac reprezint o condiie de inegaliate
a b+c
 muchiile 0a cu valoarea -c dac reprezint condiia de inegalitate
ac
T dac graful conine un ciclu pent ru care suma valorilor este negativ,
interogarea este contradictorie

January 5, 2005 18
Exemplu
T Fie relaiile:
Stud (cods, nume, pren, ...) ab cu c dac a b+c
nota (cods, nota, denc, ...) 0a cu -c dac ac
T i interogarea:
-BD
SELECT s.nume, s.pren, n.nota n.denc

FROM stud s, nota n BD


5 0
WHERE s.cods=n.cods AND n.denc=BD n.nota
-9
AND n.nota>9 AND n.nota<5

0
s.cods n.cods
Interogarea este contradictorie.
Motivai!! 0

January 5, 2005 19
Simplificarea
T Obiective:
 detectarea calificrilor redundante
 eliminarea subexpresiilor comune
 transformarea interogrii ntr-o form echivalent ca semantic dar
mai eficient calculat
T const n aplicarea regulilor de idempoten din algebra relaional:

P and P = P P or P = P
P and .F. = .F. P or .F. = P
P and .T. =.T. P or .T. =.T.
P and (non P) = .F. P or (non P) = .T.
P and (P or Q) = P P or (P and Q) = P

January 5, 2005 20
Proiectarea bazelor
de date

OPTIMIZAREA INTEROGRILOR 2
Curs 9

January 5, 2005 1
Optimizarea interogrilor
T interogrile sunt restructurate pentru a oferi o implementare mai bun
T Optimizare:
U euristic - sistemul aplic o serie de reguli care i mbuntesc performanele
U sistematic - se estimeaz costul fiecrui plan de execuie i apoi l alege pe
cel mai bun
U semantic- sistemul aplic reguli semantice pentru a reduce spaiul de cutare
T Optimizare:
U dinamic - se efectueaz oridecte ori este rulat interogarea
T av: toate informaiile necesare pentru alegerea unei strategii sunt la zi
T dezav: scade performanele interogrii
U static - interogrile sunt analizate, validate i optimizate o singur dat
T elimin suprasarcina din timpul execuiei
T exist mai mult timp disponibil pentru evaluarea unui numr mai mare
de strategii de execuie
T Optimizare:
U fizic - se refer la metodele de acces fizic utilizate pentru a parcurge o baz
de date - implic tehnici i strategii precum: indexare, sortare, tabele hash
U logic - nlocuirea unei interogri formulate de utilizator cu o interogare
echivalent optim

January 5, 2005 2
Abordarea euristic a optimizrii
interogrilor

T Presupune conversia unei interogri ntr-o expresie


din algebra relaional utiliznd operatorii de
selecie, proiecie i produs cartezian.

T Expresia obinut este transformat ntr-o expresie


optim utiliznd legile de echivalen a expresiilor
din algebra relaional

January 5, 2005 3
Legile echivalenei din algebra relaional

1. Operaiile de selecie conjunctive pot fi descompuse n cascad n operaii de


selecie individual (i vice versa)- cascad de selecii
p^q^r (R)= p(q (r (R)))
2. Comutativitatea operaiei de selecie
p (q (R)) = q (p (R))
3. ntr-o secven de operaii de proiecie, este necesar numai ultima din
secven
A1,A2,..,An (B1, B2, Bn (R))= A1,A2,..,An (R)
dac A1,A2, ..An este un subset al atributelor B1, B2, Bn.
4. Comutativitatea operaiilor de selecie i proiecie
A1,A2,..,An ( p(R))= p (A1,A2,..,An (R))

January 5, 2005 4
Legile echivalenei din algebra relaional
5. Comutativitatea produsului cartezian i a operatorului de jonciune
R1xR2 = R2 xR1
R1 join R2 = R2 join R1
6. Comutativitatea operaiilor de selecie i uniune sau produs cartezian
Dac predicatul seleciei implic numai atribute ale uneia dintre
relaiile care vor fi unite, atunci operaiile de selecie i uniune sau produs
cartezian pot fi comutate.
p( R join S) = (p (R)) join S
p( R x S) = (p(R)) x S
Alternativ, dac predicatul seleciei este o conjuncie de forma (p^q),
unde p presupune numai atribute ale relaiei R iar q numai atribute ale
relaiei S atunci operaiile de selecie i uniune sau produs cartezian pot fi
comutate astfel: p^ q( R join S) = (p (R)) join (q (S))
p^ q( R x S) = (p (R)) x (q (S))

January 5, 2005 5
Legile echivalenei din algebra relaional
7. Comutativitatea operaiilor de proiecie i uniune sau produs cartezian
Dac lista de proiecie este de forma L= L1L2, unde L1 implic
numai atribute ale relaiei R iar L2 numai atribute ale relaiei S, i dac
condiia de uniune conine numai atributele din lista L atunci operaiile de
proiecie i uniune pot fi comutate astfel:
L1L2(R join S) = L1 (R) join L2 (S)
L1L2(R x S) = L1 (R) x L2 (S)
Dac condiia de uniune conine atribute suplimentare, care nu se afl
n lista L, atunci este necasar o operaie final de proiecie.
8. Comutativitatea operaiilor de reuniune i intersecie
R S= S R
R S = S R

January 5, 2005 6
Legile echivalenei din algebra relaional
9. Comutativitatea operaiilor de selecie i a operaiilor cu mulimi (reuniune,
intersecie, diferen)
p (R S) = p (R) p (S)
p (R S) = p (R) p (S)
p (R - S) = p (R) - p (S)
10. Comutativitatea proieciei i a reuniunii
L (R S) = L (R) L (S)
11. Asociativitatea produsului cartezian i a uniunii
(R1x R2) xR3 = R1 X (R2 x R3)
(R1 join R2) join R3 = R1 join (R2 join R3)
12. Asociativitatea reuniunii i interseciei
(R S) T = R (S T)
(R S) T = R (S T)

January 5, 2005 7
Strategii euristice de optimizare
1. Operaiile de selecie se realizeaz ct mai devreme posibil- se reduce
cardinalitatea unei relaii i efortul de prelucrare al acesteia (R. 1,2,4,6,9)

2. Produsul cartezian se combin cu operaia de selecie ulterioar , al crei


predicat reprezint o condiie de uniune, pentru a se obine o operaie de
jonciune

3. Asociativitatea operaiilor binare se utilizeaz pentru a rearanja nodurile


de frunze a.. cele cu operaii mai restrictive s fie executate primele.

4. Se efectueaz proiecii ct mai devreme posibil - duce la micorarea


gradului unei relaii ( R. 3,4,7,10)

5. Expresiile comune se calculeaz o singur dat

January 5, 2005 8
Algoritm de optimizare a interogrilor bazat pe
arborele algebric
 arborele de analiz este restructurat a.. fiecare subarbore
transmite printelui su cantitatea optim de date- se deplaseaz
ct mai jos (ctre frunze) seleciile i proieciile
 INTRARE: un arbore reprezentnd o expresie algebric
 IEIRE: un arbore algebric reprezentnd expresia algebric optim
 P1:regula de cascadare a seleciilor- simplific condiiile complexe din
predicatele de selecie
 P2: pt fiecare selecie se utilizeaz legea cascadrii seleciilor, legea
comutativitii seleciilor i a proieciilor i legea comutativitii seleciilor i a
produsului cartezian pentru a muta seleciile ct mai jos n arbore

January 5, 2005 9
Continuare

 P3: pt. fiecare proiecie se utilizeaz legea de cascadare a


proieciilor, comutativitatea seleciilor i a proieciilor i
comutativitatea dintre proiecii i produs cartezian pt.a muta
proieciile ct mai jos n arbore
 P4:se divizeaz nodurile interioare ale arborelui astfel:
 fiecare nod interior care reprezint un produs cartezian este un
grup alturi de prinii si etichetai printr-o selecie sau
proiecie
 se include n grup toate lanurile de descendeni etichetai porin
operatori unari care se termin ntr-un nod frunz
 P5: se evalueaz fiecare grup de jos n sus n structura arborelui.
Nici un grup nu va fi evaluat naintea descendenilor si

January 5, 2005 10
Cri(cota, titlu, autor)
Exemplu Edituri(nume_ed, adresa, ora)
Abonai (nr_fia, nume, adresa, ora)
Imprumut (nr_fisa, cota, data)
 INFO - vedere care conine informaii despre crile mprumutate
CREATE VIEW INFO AS
SELECT c.cota,c.titlu,c.autor,a.nr_fia, a.nume, a.adresa, a.ora, .data
FROM cri c, abonai a, mprumut
WHERE a.nr_fisa=.nr_fisa AND c.cota=.cota
 s (
p (mprumut x abonai x cri)
unde :
s= c.cota, c.titlu, c.autor, a.nr_fia, a.nume, a.adresa, a.ora, .data
titlu
p= a.nr_fisa=.nr_fisa AND c.cota=.cota
Care sunt titlurile crilor mprumutate nainte de 13 iulie 1997?
SELECT titlu data<{13.07.97}
FROM info
WHERE data <{13.07.97} info
data<{13.07.97} (info)
Expresia algebric: titlu (

January 5, 2005 11
Se simplific predicatul dup care se face prima selecie

titlu
Se mping seleciile ct mai jos
titlu posibil cu respectarea regulilor
data<{13.07.97} de echivalen
data<{13.07.97}
Reg 4
s
s

p Reg 1
a.nr_fisa= I.nr_fisa
Reg 4
x Reg 1
c.cota=.cota
x cri Reg 6
x
mprumut abonai Reg 6
x
cri
mprumut abonai

January 5, 2005 12
Se obine:

Se mut ct mai jos proieciile n arborele algebric.


Se aplic regula de cascadare a proieciilor, i se obine...

January 5, 2005 13
Se mpinge proiecia dup titlu ct mai jos n structura arborelui, prin
utilizarea regulii de comutativitate a seleciilor i proieciilor i a regulii de
comutativitate a proieciei i a produsului cartezian.

January 5, 2005 14
titlu

c.cota=.cota

.cota tuitlu, c.cota


Reg 3

a.nr_fisa= I.nr_fisa cri


Reg 7
c.cota, . Nr_fisa, a.nr_fisa
x
Reg 7
.cota, .nr_fisa a.nr_fisa
data<{13.07.97} abonai
I.cota, I.nr_fis,a,Reg
data
3
mprumut

Urmare a transformrilor suferite se obine ...

January 5, 2005 15
Proiecia de deasupra tabelului mprumut nu este necesar
=> ea poate fi nlturat
January 5, 2005 16
titlu
Urmeaz faza de
c.cota=.cota
divizare a arborelui
x

.cota tuitlu, c.cota

a.nr_fisa= I.nr_fisa cri

.cota, .nr_fisa a.nr_fisa

data<{13.07.97} abonai

mprumut
January 5, 2005 17
Denormalizarea
 Ofer performane mai bune din perspectiva
interogrilor
 trebuie fcut cu atenie - urmeaz de regul
unui proces de normalizare
 se impune ajustarea aplicaiei pentru a evita
anomaliile de actualizare, adugare i tergere

January 5, 2005 18
Aspecte ale optimizrilor n SQL
 1. Trebuie redus volumul comunicaiilor
 filtrarea sau alte operaii care reduc cantitatea de date
trebuie fcute n baza de date i nu de ctre aplicaie
 SELECT * => suprasarcin pe comunicaii deoarece se
consider toate cmpurile pentru o nregistrare selectat
 utilizarea de interogri imbricate solicit suplimentar
sistemul de comunicaie

January 5, 2005 19
 2. Evitarea sortrilor inutile
 sortarea solicit foarte intens unitatea central de prelucrare
 dac se utilizeaz clauza ORDER BY este bine s se limiteze numrul
cmpurilor dup care se face ordonarea
 dac se utilizeaz ORDER BY ntr-o operaie de uniune (Join)
cmpurile specificate n aceasta trebuie s aparin aceluiai tabel
 se evit utilizarea opiunii DISTINCT
 operatorul UNION face ntotdeauna o sortare pt. a elimina duplicatele.
Se va folosi forma UNION ALL pentru a nu se mai elimina duplicatele
 clauza NOT IN (subinterogare) produce o sortare. Este indicat
folosirea construciei NOT EXIST
 3. Se evit folosirea vederilor ca surse de date pentru
interogrile SQL
 4. Se evit efectuarea de calcule n cadrul instruciunilor SQL
 5. Un nivel mai sczut de izolare al trenzaciilor crete
performanele interogrilor

January 5, 2005 20
 6. Comparaiile
 se reduce numrul de comparaii oridecte ori este posibil
 ntotdeauna comparaiile care elimin cel mai mare numr de
nregistrri vor fii plasate la nceputul clauzei WHERE
 se compar date ale cror tipuri sunt echivalente => nu mai sunt
necesare conversii
 BETWEEN este mai eficient dect i dac se face comparaie cu
valori constante
 dac se compar o variabil cu coloane din dou tabele este mai
eficient folosirea i
 se evit utilizarea operatorului OR pentru comparaii asupra
coloanelor de index. Este preferabil s se divid interogarea n dou
pri care s fie reunite cu operatorul UNION.

January 5, 2005 21

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