BAZE DE DATE partea a doua

CAPITOLUL I CONCURENTA IN BAZE DE DATE 1.1 Tranzactii
1.1.1 Proprietati ale tranzactiilor 1.1.2 Gestiunea tranzactiilor

1.2 Controlul concurentei
1.2.1 Generalitati 1.2.2 Serializabilitatea 1.2.3. Algoritmii de control al concurentei in bazele de date centralizate
1.2.3.1 Algoritmi de control al concurentei prin blocare 1.2.3.2 Algoritmi de control al concurentei prin marcare

CAPITOLUL II BAZE DE DATE DISTRIBUITE 2.1 Definitie, componente, tipuri de BDD 2.2. SGBDD
2.2.1 Arhitectura unui SGBDD

2.3 Datele intr-o BDD (Dictionar; Definire; Control semantic) 2.4 Evaluarea cererilor si tranzactii in BDD 2.5. Cele douasprezece reguli ale lui DATE pentru SGBDD-uri CAPITOLUL III BAZE DE DATE ORIENTATE OBIECT 3.1. Generalitati 3.2 Modelul de date orientat obiect (MDOO) 3.3 Proiectarea BDOO 3.4. SGBDOO
3.4.1. Principii, caracteristici fundamentale 3.4.2. Arhitectura unui SGBDOO

3.5. Securitate si integritatea semantica a unui SGBDOO

BIBLIOGRAFIE
1. 2. 3. 4. Popa Mariana, Baze de date (Fundamente, exemple, teste de verificare), Ed. FRM, 2006 Basca Octavian, Baze de date, Editura All Educational, 1996. Grupul BDASEIG, Baze de date – Fundamente teoretice si practice, Editura Infomega, 2002. Popescu Ileana, Baze de date relationale, Editura Universitatii din Bucuresti, 1996.

1

CAPITOLUL I CONCURENTA IN BAZE DE DATE 1.1 Tranzactii
1.1.1 Proprietati ale tranzactiilor
Conceptul de tranzactie a fost definit pentru a lega operatii care logic sunt inseparabile si al caror efect nu poate fi studiat separat. Tranzactiile sunt unitati atomice de actualizare a datelor, prin care o baza de date trece dintr-o stare coerenta intro alta stare coerenta [Delobel]. Definitie. Se numeste tranzactie sirul de actiuni {a1 , a 2 ,..., a n } , executate de utilizator, care pastreza consistenta si asigura securitatea unei baze de date. Intuitiv, o tranzactie preia date din baza de date, efectueaza anumite calcule si modifica anumite valori ale bazei de date. Definitie. Se numeste gestiunea tranzactiilor operatia de mentinere a bazei de date intr-o stare consistenta in conditiile in care accesul la date se face in regim concurent si este posibila aparitia unor defecte. Definitie. Mecanismele de sincronizare a acceselor astfel incat sa fie mentinuta integritatea bazei de date poarta numele de controlul concurentei. Definitie. Tehnicile prin care se asigura toleranta sistemului fata de aparitia unor defecte si posibilitatea de a reveni la o stare consistenta in urma aparitiei unui defect care a cauzat intrarea sistemului intr-o stare inconsistenta poarta numele de rezistenta la defecte. Operatia de validare este vitala in sistemele concurente, in care se pot produce mai multe tranzactii care acceseaza aceeasi baza de date concomitent. Validarea este o masura de prevenire a abortarilor in cascada. Din punct de vedere logic dupa validare tranzactia este incheiata. Clasificarea tranzactiilor 1. Dupa aria de aplicabilitate 2. Dupa durata 3. Dupa structura sau modul de descompunere in subtranzactii si ordinea operatiilor ce le compun: Prin definitie tranzactiile sunt unitati de executie care garanteaza consistenta si siguranta bazei de date. Orice tranzactie trebuie sa satisfaca 4 conditii sintetizate prin acronimul ACID – atomicitate, consistenta, izolare, durabilitate: − atomicitate - tranzactia este o unitate elementara de prelucrare. − consistenta unei tranzactii consta in corectitudinea ei. − izolarea - proprietatea tranzactiei de a avea acces doar la starile consistente ale bazei de date. − durabilitate - proprietatea prin care sunt inscrise permanent in baza de date rezultatele unei tranzactii validata. Rezultatele tranzactiilor validate sunt salvate la caderile de sistem. Mecanismul de realizare a durabilitatii are la baza conceptul de jurnal. Definitie. Se numeste jurnal fisierul secvential in care sunt inregistrate toate operatiile efectuate de tranzactiile din sistem.

1.1.2 Gestiunea tranzactiilor
Sistemul de gestiune a tranzactiilor concurente cuprinde doua module principale: 1. modulul de control al tranzactiilor (MTC) care primeste si ordoneaza tranzactiile, asigurand conservarea consistentei bazei. 2. modulul de gestiune a datelor (MGD) care executa tranzactiile (ordinele de citire, scriere) si termina tranzactiile (ordinele de validare, anulare). MGD cuprinde la randul sau doua module: - modulul de gestionare a recuperarilor - modulul de gestionare a memoriei Tipuri de MGD: - MGD agresiv - tranzactiile sunt intarziate cat mai putin posibil si sunt lansate in executie cat mai repede posibil chiar daca imediat dupa lansare sunt anulate, din cauza unui conflict. - MGD conservator - tranzactile sunt intarziate cat mai mult pentru a se analiza datele citite sau scrise de fiecare tranzactie. Tipul aplicatiei determina alegerea SGBD-ului relational astfel: - MGD agresiv - daca aplicatia contie tranzactii care intra rar in conflict. - MGD conservator daca se doreste prevenirea conflictelor in detrimentul vitezei pierdute in timpul analizei suplimentare a tranzactiilor. Comenzile de interfata cu programele de aplicatii ale modulului de gestiune al tranzactiilor: - BEGIN TRANSACTION
2

-

-

-

marcheaza inceputul executiei unei tranzactii. administratorul tranzactiilor inregistreaza intr-un tabel in momentul receptionarii comenzii: • numarul de identificare al tranzactiei, • aplicatia din care aceste tranzactii fac parte, • momentul aparitiei tranzactiei, etc. READ actioneaza in felul urmator: daca unitatea de acces referita este stocata local, modulul de gestiune intoarce valoarea ei, daca unitatea de acces referita nu este stocata local selecteaza o copie a aceteia si cere valoarea ei. WRITE determina scrierea unitatilor de acces (la nivel local). COMMIT marcheaza reusita (validarea) unei tranzactii. Aceata comanda indica administratorului tranzactiilor ca poate modifica unitatile de acces ale bazei de date. ABORT marcheaza esecul unei tranzactii. Exista si unele sisteme in care dupa comanda ABORT modulul de gestiune va incerca indirect sa recupereze o parte din actiunile tranzactiei anulate (cazul fericit). END TRANSACTION marcheaza sfarsitul executiei unei tranzactii.

1.2 Controlul concurentei
1.2.1 Generalitati
Sistemele concurente (baza de date este accesata simultan de mai multi utilizatori) pot intra in conflict. Un parametru de masurare a nivelului de concurenta este numarul de tranzactii executate concurent. Controlul concurentei are rolul: − De a mentine consistenta bazei de date; − De a obtine un nivel de concurenta cat mai ridicat. Rezultatul obtinut prin executia concurenta a mai multor tranzactii poate fi diferit de rezultatul obtinut in cazul in care fiecare tranzactie este executata independent. Anomalii de interferenta. Interactiunea necontrolata a doua sau mai multe tranzactii poate duce la obtinerea unor rezultate eronate. Definitie. Doua tranzactii sunt susceptibile de interferenta daca rezultatul executiei concurente a acestora poate fi diferit de rezultatul executiei seriale. Se numeste executie seriala, executia independenta a tranzactiilor in urma careia se obtine un rezultat corect. Definitie. Se numeste executie corecta a mai multor tranzactii executia concurenta al carei efect este echivalent cu cel al unei executii seriale a acelorasi tranzactii. Definitie. Doua tranzactii care efectueaza operatii asupra unor date comune in mod concurent sunt conflictuale daca intre ele apare o interferenta. Deci doua tranzactii sunt conflictuale daca sunt concurente si susceptibile de interferenta. Interferentele dintre doua tranzactii pot duce la o serie anomalii de interferenta: - Anomalia de actualizare pierduta - Anomalia de citire improprie - Anomalia de citire nereproductibila 121 Primitivele LOCK si UNLOCK. Functiile primitive LOCK(A) si UNLOCK(A) sunt considerate primitive in sensul ca secventa de microoperatii corespunzatoare executarii lor nu poate fi intrerupta de alte operatii. Astfel LOCK() si UNLOCK() sunt operatii indivizibile. LOCK() si UNLOCK() sunt operatii indivizibile. Daca o tranzactie T executa cu succes o primitiva LOCK(A) atunci: − Tranzactia T are acces exclusiv la obiectul A. − Nici o alta tranzactie nu poate avea acces la obiectul A cat timp T nu elibereaza A prin executarea primitivei UNLOCK(A). − Spunem ca obiectul A este blocat in acest interval de timp. − Executarea primitivei LOCK() asupra unui obiect blocat va returna valoarea FALSE. − O tranzactie poate executa cu succes o primitiva LOCK() doar asupra unui obiect care nu este blocat. Valoarea returnata de functia LOCK() in acest caz este TRUE. Primitivele LOCK() si UNLOCK() se folosesc la sincronizarea tranzactiilor.
3

1.2.2 Serializabilitatea
Prin executia concurenta a mai multor tranzactii se pot obtine rezultate diferite fata de situatia in care fiecare tranzactie este executata independent. Dar rezultatele executiilor concurente pot sa difere si intre ele si sunt in general inconsistente. Definitie Se numeste executie corecta a mai multor tranzactii executia concurenta al carei efect este echivalent cu cel al unei executii seriale a acelorasi tranzactii. Definitie Se numeste executie seriala, executia independenta a tranzactiilor in urma careia se obtine un rezultat corect. Definitie. Se numeste planificare a unui set de tranzactii o ordine de executie a pasilor elementari ai tranzactiilor setului. Ordonarea se refera la pasi din tranzactii diferite, ordinea relativa a pasilor aceleiasi tranzactii nefiind afectata. Definitie. O planificare se numeste seriala daca toti pasii oricarei tranzactii apar in pozitii consecutive ale planificarii. O asemenea planificare determina o executie seriala, fara interferente a tranzactiilor Definitie. O planificare se numeste serializabila daca si numai daca efectul ei este echivalent cu cel al unei planificari seriale. 122 Definitie. Doua actiuni Ai si Aj sunt permutabile daca si numai daca executia lui Ai urmata de Aj furnizeaza acelasi rezultat ca si executia lui Aj urmata de Ai. Observatii: • Doua actiuni de citire sunt permutabile. • Doua actiuni efectuate asupra unor unitati de acces diferite sunt intotdeauna permutabile (executia primei actiuni nu afecteaza rezultatul celeilalte actiuni si invers). • Actiunile de citire si scriere nu sunt permutabile cand se refera la aceeasi unitate de acces. • Doua actiuni de scriere care se refera la aceeasi unitate de acces nu sunt permutabile. Prin permutare actiunile Ai si Aj care sunt executate de diferite tranzactii isi schimba ordinea de executie, astfel sirul {Ai, Aj} este inlocuit cu sirul {Aj, Ai}. Propozitia 1.(suficienta) O planificare este serializabila daca poata fi transformata intr-o planificare seriala printr-o permutare a actiunilor permutabile. Definitie. Fie S = {T1, T2, …, Tn} o planificare seriala. Spunem ca tranzactia Ti precede tranzactiile Tj (Ti < Tj) daca si numai daca exista doua actiuni nepermutabile Ai si Aj, astfel incat Ai este executata de Ti inainte ca Aj sa fie executata de Tj. Definitie. Se numeste graf de precedenta G a unei planificari S graful orientat in care multimea nodurilor este multimea tranzactiilor care apar in S, iar intre doua activitati Ti si Tj exista un arc daca si numai daca Ti precede Tj. Pornnind de la definitia grafului de precedenta putem da o noua propozitie pentru suficienta unei planificari serializabile. Propozitia 2.(suficienta) O planificare este serializabila daca graful de precedenta asociat este aciclic.

1.2.3. Algoritmii de control al concurentei in bazele de date centralizate :
1. Algoritmi de control al concurentei prin blocare – care se bazeaza pe accesul mutual exclusiv al tranzactiilor la datele partajate; excluderea mutuala este asigurata prin primitive de tip LOCK si UNLOCK: 2. Algoritmi de control al concurentei prin marci de timp – care incearca sa ordoneze executia tranzactiilor conform unui set de reguli; ordonarea tranzactiilor este asigurata prin marci de timp asociate atat tranzactiilor, cat si datelor pe care le acceseaza. 1.2.3.1 Algoritmi de control al concurentei prin blocare Se considera ca baza de date este alcatuita din elemente ce pot fi blocate la un moment dat. Se pot bloca: − Relatii; − Tupluri; − Parti de tupluri; − Grupe de n tupluri cu n dat; − Seturi in modelul retea;
4

Subarbori in modelul ierarhic etc. 125 Folosind primitivele LOCK si UNLOCK si anumite restrictii, algoritmii pun in asteptare tranzactiile care executa operatii conflictuale evitand astfel executarea unor secvente incorecte de operatii. Utilizand mecanisme de control sau restrictii suplimentare se elimina planificarile neserializabile, fortand setul de tranzactii sa se execute sub forma unei planificari serializabile. Mecanismele de control sau restrictiile poarta numele de protocoale si se pun asupra structurii interne a tranzactiilor. Orice protocol care asigura serializabilitatea constituie un algoritm de control al concurentei. In cadrul acestor algoritmi tranzactiile sunt secvente de operatii LOCK si UNLOCK. care respecta un set de reguli: 1. Orice unitate de acces care este la un moment dat blocata (prin LOCK) de o tranzactie, trebuie sa fie ulterior deblocata (prin UNLOCK) de aceeasi tranzactie. 2. O tranzactie nu incearca sa blocheze o unitate de acces pe care o blocheaza deja. 3. O tranzactie nu incearca sa deblocheze o unitate de acces blocata de o alta tranzactie Spunem ca o planificare este legala daca respecta regulile 1-3. 1.Algoritm de testare a serializabilitatii Algoritmul stabileste daca planificarea unui set de tranzactii este sau nu serializabila (exista sau nu o planificare seriala echivalenta cu planificarea data) si gaseste ciclurile dintr-un graf orientat numit graful de precedenta. 126 2. Protocol pentru asigurarea serializabilitatii Cel mai simplu protocol care asigura serializabilitatea unei multimi de tranzactii este protocolul in doua faze care se poate formula astfel: In orice tranzactie toate operatiile de blocare se executa inaintea oricarei operatii de deblocare. Se poate demonstra urmatorul rezultat: TEOREMA. Orice planificare legala a unei multimi de tranzactii in doua faze este serializabila. 3.Tranzactii cu accese de tip read-only si read-write 127 In sistemele care fac distinctie intre accesul read-write si read-only se folosesc doua primitive de blocare: RLOCK – cerere de blocare pentru citire (read-lock) numita si cerere de blocare partajata (shead-lock). Este folosita de tranzactiile care doresc accesul la o valoare doar pentru operatiile de citire. WLOCK – cererea de blocare pentru citire-scriere (read-write lock) numita si cererea de blocare exclusiva (exclusive-lock). RLOCK si WLOCK sunt anulate prin executarea primitivei UNLOCK. Algoritmul de testare a serializabilitatii (pentru o planificare a unui set de tranzactii care efectueaza asupra datelor accese de tip read-only sau read-write ) - este asemanator cu algoritmul pentru accese de tip read-write, cu mici deosebiri: - daca la accesele de tip read-write conteaza ordinea de executie, accesele de tip read-only sunt permutabile, deci ordinea lor de executie nu influenteaza rezultatele. - nu se poate permuta un acces de tip read-only cu un acces de tip read-write sau invers. 4. Protocoale conservative si protocoale agresive. 12129 Restrictiile impuse tranzactiilor de protocolul in doua faze garanteaza serializabilitatea planificarilor si totodata lasa libertatea mai multor optiuni in organizarea pasilor unei tranzactii, ceea ce conduce la mai multe versiuni ale acestui protocol. Exista doua variante extreme ale protocolului in doua faze: Protocoalele conservative se caracterizeaza prin faptul ca fiecare tranzactie emite toate cererile de blocare la inceputul executiei sale: - daca cereri sunt satisfacute, tranzactia este lansata in executie, - daca nu pot fi satisfacute, tranzactia este pusa intr-o coada de asteptare. Protocoalele agresive se caracterizeaza prin faptul ca fiecare cerere de blocare este emisa doar in momentul cand se doreste o scriere sau o citire in/din unitatea de acces corespunzatoare. Prin aceste protocoale blocarea
5

fiecarei unitati de acces este amanata pana in ultimul moment ceea ce conduce la un nivel mai ridicat de concurenta al sistemului. Protocoalele nu previn aparitia interblocarilor. 1.2.3.2 Algoritmi de control al concurentei prin marcare 132 Controlul concurentei prin marci de timp este eficient in cazul in care posibilitatea aparitiei unui conflict este redusa (cazul in care tranzactiile acceseaza doar cate o mica fractiune din intreaga baza de date), iar timpul pierdut prin suspendarea si reluarea unor tranzactii poate fi mult mai mic decat timpii necesari pentru lansarea cererilor de blocare si pentru asteptarea ca aceste cereri sa fie acceptate. Marca de timp: - Este asociata atat tranzactiilor in curs la un moment dat, cat si unitatilor de acces. - Este un numar unic generat de sistem pentru fiecare cuanta de timp pe durata functionarii acesteia: • Cuanta de timp corespunde duratei unei operatii elementare a sistemului. • intr-o cuanta de timp poate fi lansata in executie o singura tranzactie. - Poate fi considerata ca un numar de ordine al cuantei de timp in care a fost generata. - Generarea marcilor de timp se face, folosind ceasul de sistem. - Daca se asociaza fiecarei tranzactii marca de timp a momentului lansarii acesteia, atunci fiecare tranzactie va avea o marca unica. - Valoarea marcii de timp asociata unei tranzactii se pastreaza nemodificata pe toata durata executiei acesteia. - Valoarea marcii de timp asociata unei unitati de acces isi poate schimba valoarea atunci cand o tranzactie acceseaza unitatea. Marca de timp asociata unitatilor de acces poate fi rezervata ca o zona de memorie in cadrul acesteia. Functiile marcii de timp: - Identificare unica - fiecare tranzactie are asociata o marca prin care este identifica in mod univoc; - Ordonare – ordinea de lansare a tranzactiilor corespunde valorilor crescatoare ale marcilor de timp asociate. 1. Algoritmul de ordonare totala 134 Nu face distinctie intre operatiile de citire si cele de scriere. Conditia realizarii unei executii concurente a tranzactiilor care sa fie echivalenta cu o planificare seriala este ca accesul la unitatile de acces sa se faca in ordinea aparitiei acestora in sistem. Deci o tranzactie poate accesa o unitate de acces daca si numai daca are o valoare a marcii de timp asociate mai mare sau egala cu valoarea marcii de timp a unitatii de acces in cauza. 2. Algoritmul de ordonare partiala Algoritmul de ordonare partiala face distinctie intre operatiile de citire si operatiile de scriere. In acest caz structura marcilor asociate unitatilor de acces este compusa din: - Marca de citire, notata cu r, contine cea mai mare valoare de marca a unei tranzactii care a facut o citire din unitatea de acces; - Marca de scriere, notata cu w, contine cea mai mare valoare de marca a unei tranzactii care a facut o scriere in unitatea de acces. Aceste marci sunt folosite in cazurile in care: 1. o tranzactie Ti nu poate citi dintr-o unitare de acces avand marca de scriere w>i. In acest caz tranzactia Tj este abortata si reluata ulterior. 2. o tranzactie Ti nu poate scrie intr-o unitate de acces avand marca de citire r>i. In acest caz tranzactia Ti va fi abortata. Situatiile 1-2 corespund conflictelor de tip citire-scriere, respectiv scriere-citire. Celelalte doua conflicete posibile nu ridica probleme de ordonare. Strategia de control a concurentei celor doi algoritmi are la baza abortarea temporara a tranzactiilor cauzatoare de conflite si reluarea lor de la inceput intr-un alt context al sistemului, context care poate sa fie sau sa nu fie mai favorabil decat precedentul. Metodele de iesire din interblocare pot fi impartire in trei clase: 1) metode de prevenire a interblocarii;
6

2) metode de evitare a interblocarii; 3) metode de detectie si iesire din interblocare. 136

CAPITOLUL II BAZE DE DATE DISTRIBUITE [18], [21] 2.1 Definitie, componente, tipuri de BDD
Definitie. Se numeste baza de date distribuita (BDD) o multime de baze de date puternic corelate, administrate si manipulate ca o singura baza de date. Alte definitii ale BDD intalnite in literatura de specialitate: Definitie [22]. O baza de date distribuita este o colectie de baze de date legate logic intre ele si repartizate (distribuite) intr-o retea de calculatoare. Statiile din reteaua de calculatoare pe care sunt distribuite bazele de date sunt autonome si pot realiza aplicatii locale. Definitie [9]. O baza de date distribuita este un ansamblu de baze de date gestionate de catre site-uri diferite si aparand pentru utilizator ca o baza de date unica. Bazele de date sunt prevazute de autori ca un mijloc de unire a colectiilor de date, mai mult sau mai putin eterogene, diseminate intr-o retea de calculatoare sub forma unei baze de date globale, eterogene si integrate. Din cele trei definitii se observa ca: − Utilizatorul vede o singura baza de date (integritatea logica a co-lectiilor de baze de date), el acceseaza si manipuleaza multimea ca pe o baza de date centralizata unica. − Repartitia datelor este transparenta pentru utilizator. − Colectia de baze de date este partitionata pe mai multe site-uri, intr-o retea de calculatoare, − Bazele de date care compun BDD: o Sunt cooperante, o Se afla in locuri diferite, pe masini diferite interconectate printr-o retea de comunicatie Fiecare statie are: - Instalat un sistem de comunicatie al datelor (realizeaza interfata cu reteaua) , - Un SGBD local - Un administrator de soft al datelor distribuite. O colectie de baze de date locale se deosebeste de o baza de date distribuita prin aplicatiile care acceseaza datele din mai multe statii, aplicatii numite aplicatii globale sau distribuite Componentele software ale sistemului de baze de date distribuie sunt: - SGBDL (Sistemul de gestiune al bazei de date locale) - sistem standard de gestiune a datelor care cuprinde propriul dictionar pentru datele locale - CC (Componenta de comunicatie) – responsabila cu legaturile in retea, cuprinde descreierea completa a nodurilor si a legaturilor retelei - DDG (Dictionarul de date globale) – detine informatii despre localizarea, disponibilitatea si modul de utilizare a datelor in BDD - SGBDD (Sistemul de gestiune al bazei de date distribuita) - interfata intre baza de date distribuita si utilizatori . Bazele de date distribuite pot fi: omogene, eterogene, federale, paralele, etc. O baza de date distribuita omogen (BDDO) este o multime de baze de date locale situate pe site-uri diferite, administrate de SGBD-uri identice. O baza de date distribuita eterogen (BDDE) se obtine prin integrarea bazelor existente, administrate de SGBD-uri diferite si cu modele diferite, intr-o singura baza de date. Dupa gradul de integrare BDDE se clasifica in: − Baze de date de acelasi tip (ex. relational) administrate de SGBD-uri diferite (ORACLE, INGRES) − Bazele de date de tipuri diferite (ex. relational si ierarhic) admi-nistrate de SGBD-uri diferite (IMS, SABRINA) Bazele de date federale (BDF) sunt multimi de baze de date autonome, slab corelate, manipulate de utilizator printr-un limbaj specific. Bazele de date federale:
7

Permit slabirea legaturii dintre bazele de date locale Furnizeaza un limbaj cu care: • se pot defini relatiile dintre diferite baze • se pot manipula mai multe baze concurent Diferentele dintre un SGBD federal si un SGBDD: − Nu poate administra un dictionar global care contine informatii despre bazele de date distribuite; − Suporta un limbaj pentru definirea dependentelor dintre diferite baze de date; − Suporta un limbaj pentru definirea si manipularea bazelor de date din federatie Arhitectura unui SGBDF cuprinde: − Un sistem global de gestiune a datelor; − O interfata cu baza locala, care asigura: o Translatarea cererilor in limbajul de manipulare al datelor specific sistemului local; o Executia cererilor; Bazele de date paralele sunt BDDO in care statiile sunt nodurile unui calculator paralel. Statiile comunica intre ele prin mesaje. Programele sunt executate pe calculatorul gazda sau pe statii de lucru care comunica cu calculatorul paralel printr-o interfata specifica. 162

-

2.2 SGBDD
Un SGBDD este un sistem prin care mai multe baze de date locale sunt legate printr-un sistem de comunicatie astfel incat datele din oricare baza locala pot fi accesate de catre orice utilizator. Un SGBDD: − Defineste si manipuleaza colectiile de date distribuite pe calcula-toare diferite, ca un singur ansamblu logic (baza de date distribuita); − Distribuie datele dupa criterii variate care raspund tuturor nece-sitatilor utilizatorilor; − Utilizatorii nu cunosc locul unde sunt memorate datele; − Pentru cresterea fiabilitatii datele pot fi duplicate pe mai multe sisteme; − Asigura coerenta bazei de date in cazul actualizarii sau in cazul reluarii dupa un atac sau incident la unul sau la mai multe din nodurile retelei; − Asigura exploatarea bazei de date in regim multiacces; − Controleaza accesul la date. Dezvoltand aceste observatii si analizand SGBDD-urile pot fi enu-merate principalele obiective ale unui SGBDD. Obiective: Pentru ca baza de date distribuita sa fie usor prelucrabila, prin sistemul distribuit se pun la dispozitia acesteia o serie de independente 1. Independenta localizarii – asigurarea transparentei localizarii datelor, site-ul (nodul) unde sunt stocate datele unei BDD nu-i este cunoscut utilizatorului, aceste informatii sunt pastrate in dictionarul datelor si sunt accesate de SGBDD pentru a stabili localizarea rela-tiilor ce apar in cererile utilizatorilor. Aplicatiile se scriu fara a se lua in calcul localizarea fizica a datelor. 2. Independenta fragmentarii - Uneori este necesara fragmentarea unei relatii in subrelatii care pot fi stocate in locuri diferite. Totalitatea fragmentelor unui BDD memorate intr-un nod al retelei formeaza baza de date locala. Prin independenta fragmentarii utilizatorul nu vede ca datele sunt fragmentate. Informatile despre fragtmentare sunt stocate in dictionarul datelor si utilizate de SGBDD pentru a traduce automat cererile referitoare la relatii in cereri referitoare la fragmente. Fragmentarea poate fi: - Orizontala-fragmentele au structura identica cu cea a multimii de date, dar difera prin continutul datelor; - Verticala-fragmentele contin doar o parte din structura relatiei - Mixta: fragmentarea orizontala a unui fragment vertical sau fragmentare verticala a unui fragment orizontal; 3. Independenta dublurii - pentru a asigura fiabilitatea, disponibilitatea si accesul performant la date, BDDurile au dubluri ale informatiei, astfel daca o statie nu poate fi accesata (este neoperationala) la un moment dat exista o copie a fragmentui cautat.
8

4. Independenta SGBD - daca exista SGBD-uri locale diferite, (au modele diferite (relational,retea....)) sau modelele au fost realizate de grupuri diferite, este necesar un mecanism de traducere a modelului de date si a limbajului fiecarui SGBD local in cele ale unui alt SGBD local. Pentru aceasta se foloseste un sistem pivot (modelul relational) si un translator intre modelul pivot si modelul fiecarui SGBD. 5. Autonomia statiilor - permite fiecarei statii sa-si controleze si sa-si manipuleze datele locale, independent de alte statii. Administrarea unei BDD este complet descentralizata, bazele locale fiind controlate independent de un administrator local. 6. Extensibilitatea – fiecare BDD isi poate mari capacitatea prin introducerea de noi statii fara sa afecteze prea mult bazele de date locale si programele de date existente 7. Performantele - sunt foarte importante pentru SGBDD. Ele se obtin prin fragmentarea si duplicarea datelor astfel incat sa se exploateze optimal paralelismul. 166 2.2.1 Arhitectura unui SGBDD In organizarea „ideala” a unei BDD se disting doua nivele de date: - Nivelul global – aici se realizeaza integrarea bazelor de date locale intr-o baza de date globala, - Nivelul local - Nivelul local – aici fiecare baza locala din BDD este tratata ca o baza centralizata si tot aici cu ajutorul schemei locale se face corespondenta intre imaginea fizica si obiectele manipulate de SGBD-urile locale. Definitie. Se numeste schema globala - descrierea globala si unificata a tuturor datelor din BDD, independent de orice baza globala. Schema globala are trei nivele: - Nivelul 1 - SEG - schema externa globala: - Nivelul 2 - SCG - schema conceptuala globala : - Nivelul 3 - SA - schema de alocare Schema locala nu este unica, fiecare statie din retea avand o schema locala proprie. Ca si schema globala si ea trei nivele locale: - Nivelul 1 - SEL - schema externa locala - Nivelul 2 - SIL - schema interna locala - Nivelul 3 - SCL - schema conceptuala locala 168 Utilizatorii globali lucreaza cu BDD ca si cum ar lucra cu o baza de date centralizata: - fac cereri (tranzactii globale), - cererile sunt evaluate, descompuse si predate supervizorului executiei distribuite - supervizorul transmite cererile nodurilori in care se afla bazele locale ce vor fi interogate - bazele interogate trimit raspunsurile supervizorului Cererea trebuie adaptata la cerintele sistemului de gestiune a nodului local care va trata cererea primita ca o cerere locala. Fiecare baza locala poate fi exploatata local de utilizatorii locali prin intermediul unor SGBD-uri locale. Algoritmul de realizare a cererilor distribuite - RCD La trimiterea unei cereri care prelucreaza date situate in noduri diferite un nod va lua rolul de coordonator, iar celelalte noduri vor fi noduri cooperante. 1. Nodul coordonator trimite mesajul PREGATESTE nodurilor cooperante; 2. Nodurile cooperante se pregatesc de executie, adica de citirea si scrierea in jurnalele locale a datelor actualizate sau neactualizate apoi transmit nodului coordonator mesajul PREGATIT; 3. Nodul coordonator transmite mesajul REALIZEAZA; 4. Nodurile cooperante executa cererile, adica introduc actualizarile in BDD apoi: − Daca sistemul functioneaza corect transmit mesajul REALIZAT; − Daca sistemul nu functioneaza corect transmit mesajul ABORT, si REVENIRE; 5. Se reface baza de date initiala (cea dinaintea lansarii cererii). Pentru a satisface cererile in ordinea emiterii se utilizeaza: 1. Marcile de timp: − Fiecare cerere primeste automat la emitere o marca de timp (identificatorul nodului si timpul ceasului local); − Toate articolele din BDD au o marca de timp. Aceasta se modifica la fiecare actualizare a cererii; − Cererile se executa in ordinea emiterii marcilor. 2. Inelul virtual: − Nodurile retelei sunt inlantuite logic intr-un inel virtual pe care se deplaseaza un token;
9

Daca un nod detine token-ul el poate transmite; Token-ul trece din nod in nod pana la nodul caruia ii este adresat; Cand token-ul ajunge la nodul din care a plecat, acesta devine liber, iar token-ul se deplaseaza spre nodul urmator. Pentru a rezolva astfel de cereri intr-o BDD, se foloseste arhitectura CLIENT/SERVER compusa din: − Statia client (administratorul aplicatiilor, aplicatia are acces la date distribuite folosind interfata SGBDD) – emite cereri catre server; − Statia server (administratorul datelor, gestioneaza o baza de date locala intr-o baza de date distribuita) – rezolva cererile. Cererile se rezolva dupa urmatorii pasi: 1. Utilizatorul trimite cereri. Se activeaza astfel administratorul aplicatiilor din statia client si administratorii de date din una sau mai multe statii server. 2. Interfata utilizator − Primeste cererile; − Verifica daca datele cerute respecta cerintele SEG. 3. Cererile sub forma de tabele din SEG sunt transformate in relatii conceptuale globale definite prin SCG de catre controlul semantic al datelor distribuite. 4. Se evalueaza cererile distribuite: − Se transforma cererile in planuri de acces distribuit; − Se alege locatia pentru copiile fragmentelor; − Se ordoneaza cererile astfel incat sa minimizeze functia de cost. 5. Gestiunea tranzactiilor distribuite: − Coordoneaza executia cererii distribuite; − Asigura controlul concurentei; − Valideaza tranzactiile. 6. Evaluarea cererilor locale se ocupa cu traducerea cererii din SA, in SEL. 7. Gestiunea subtranzactiilor se ocupa cu sincronizarea executiei subtranzactiilor unei tranzactii. 172

− − −

2.3 Datele intr-o BDD (Dictionar; Definire; Control semantic)
Dictionarul de date global al unei BDD poate fi fragmentat, duplicat si contine informatii despre: − Descrierea datelor globale; − Plasamentul datelor; − Controlul semantic al datelor. Organizarea si plasarea dictionarului in BDD se poate face: − Centralizat – dictionarul este plasat pe o singura statie, ceea ce usureaza administrarea si reactualizarile BDD; − Prin duplicare – dictionarul se afla copiat pe toate statiile; − Distribuit – dictionarul este fragmentat in dictionare locale, fragmentele de pe fiecare statie fiind cele necesare statiei respective. Definirea datelor distribuite (cuprinde descrierea si plasarea datelor): - descrierea datelor - este influentata de gradul de autonomie al statiilor si depinde de organizarea dictionarului. - plasarea datelor in retea - este influentata de rezultatele dorite, de disponibilitatile existente si se realizeaza in doi pasi: 1.se fragmenteaza relatiile - fragmentarea se poate face pe orizontala, pe verticala sau mixt. 2.se face o alocare optima a fragmentelor dupa una din metodele: - metoda celei mai bune alegeri, - metoda selectarii statiilor profitabile, - metoda replicarii progresive. 173 Controlul semantic al datelor ( are trei functii):
10

-

-

functia de gestiune a vizualizarilor - o vizualizare se obtine pornind de la relatii care au fragmente stocate in locuri diferite; cererea relativa la o vizualizare este transformata intr-o cerere relativa la fragmentele utilizate la rezolvarea ei functia de control a accesului autorizat, se refera la identificarea si autentificarea utilizatorilor nealocati si la impiedicarea accesului utilizatorilor neautorizati. functia de control a integritatii semantice a datelor. 175

2.4 Evaluarea cererilor si tranzactii in BDD
Se numeste cerere distribuita sau globala o cerere care se refera la relatii globale. Pentru a fi executata o cerere globala, aceasta este transformata in cereri care se refera la fragmente ale relatiilor globale. Cererea se realizeaza prin substituirea fiecarei relatii globale cu expresia algebrica care reconstituie relatia globala din fragmente. Evaluarea cererilor in BDD consta in transformarea cererii distribuite intr-un plan de executie distribuit care cuprinde: multimea de operatii pentru tratarea datelor locale multimea de operatii de comunicare a datelor intermediare In sistemul distribuit, evaluarea cererilor se realizeaza in patru faze: faza de descompunere, faza de localizare (transformarea unei cereri distribuite intr-o cerere echivalenta asupra fragmentelor), faza de optimizare si faza de executie. 176 Tranzactiile distribuite sunt formate din mai multe subtranzactii care se desfasoara fiecare in alt loc. Gestiunea tranzactiilor distribuite cuprinde: 1. Controlul concurentei - care impiedica producerea tranzactiilor distribuite neserializabile. Controlul concurentei poate fi abordat din punct de vedere al stampilarii sau al blocarii: • Stampilarea - ordoneaza tranzactiile la lansarea lor in executie si are grija ca operatiile de acces la date sa se execute intr-o ordine predefinita. Fiecare tranzactie are asociat un numar de ordine unic numit stampila sau marca de timp • Blocarea opreste tranzactiile care executa opertii conflicuale pe acelasi articol. Accesul la articole prin protocolul blocarii se realizeaza cu primitivele: LOCK si UNLOCK. 2. Gestiunea fiabilitatii - intr-o BDD care suporta duplicarea relatiilor, copiile unei relatii stocate intr-un loc blocat de o defectiune sunt totusi accesibile pentru alte locuri. In timpul defectiunii, aceste copii pot fi reactualizate. O stare noua a unei copii poate fi obtinuta utilizand o copie reactualizata care se gaseste in alta statie. 3. Validarea tranzactiilor – se realizeaza prin considerarea fiecarei subtranzactii a unei tranzactii ca o tranzactie locala care poate fi validata independent de altele. In acest caz nu mai exista sincronizare intre tranzactiile care participa la tranzactia globala, ceea ce violeaza principiul atomicitatii tranzactiei globale. Problema se rezolva aplicand un protocol de validare atomica a tranzactiei 177

2.5. Cele douasprezece reguli ale lui DATE pentru un SGBDD
Cele douasprezece reguli (sau obiective) ale lui Date (in 1990) pentru sistemele SGBDD au la baza ideea ca un sistem SGBD dis-tribuit trebuie sa apara utilizatorului ca un sistem SGBD nedistribuit si sunt inrudite cu cele douasprezece reguli ale lui Codd pentru sistemele relationale. (0) Principiul fundamental. Pentru utilizator, un sistem distribuit trebuie sa arate exact ca unul nedistribuit. (1) Autonomia locala. Site-urile dintr-un sistem distribuit trebuie sa fie autonome. In acest context, autonomia inseamna ca: • Datele locale sunt detinute si gestionate local; • Operatiile locale raman pur locale; • Toate operatiile dintr-un anumit site sunt controlate de catre site-ul respectiv. (2) Nici un fel de dependenta de un site central. Nu trebuie sa existe nici un site fara de care sistemul sa nu poata opera. Aceasta implica faptul ca nu trebuie sa existe servere centrale pentru servicii, cum ar fi administrarea tranzactiilor, detectarea impasurilor, optimizarea interogarilor si administrarea catalogului global al sistemului.
11

(3) Operarea continua. Ideal este ca niciodata sa nu fie nevoie de o oprire planificata a sistemului pentru operatii cum ar fi: • Adaugarea sau eliminarea unui site din sistem; • Crearea si stergerea dinamica a fragmentelor dintr-unul sau mai multe site-uri. (4) Independenta de locatie. Independenta de locatie este echiva-lenta cu transparenta la locatie. Utilizatorul trebuie sa aiba posibilitatea de a accesa baza de date din cadrul oricarui site. Mai departe, utili-zatorul trebuie sa aiba posibilitatea de a accesa toate datele ca si cum ar fi stocate in site-ul sau, indiferent de locul unde acestea sunt stocate din punct de vedere fizic. (5) Independenta de fragmentare. Utilizatorul trebuie sa aiba posibilitatea de a accesa datele, indiferent de modul in care sunt fragmentate. (6) Independenta de reproducere. Utilizatorul trebuie sa nu fie constient de faptul ca datele au fost reproduse. Astfel utilizatorul nu trebuie sa aiba posibilitatea de a accesa direct o anumita copie a unui articol de date si nici nu trebuie sa reactualizeze special toate copiile unui articol de date. (7) Prelucrarea distribuita a interogarilor. Sistemul trebuie sa aiba capacitatea de a prelucra interogari care se refera la date aflate in mai multe site-uri. (8) Prelucrarea distribuita a tranzactiilor. Sistemul trebuie sa accepte tranzactia ca unitate de refacere. Sistemul trebuie sa garanteze ca atat tranzactiile globale, cat si cele locale se conformeaza regulilor ACID pentru tranzactii si anume: caracterul atomic, coerenta, izolarea si durabilitatea. (9) Independenta de hardware. Trebuie sa fie posibil ca sistemul SGBDD sa poata fi rulat pe o diversitate de platforme hardware. (10) Independenta de sistemul de operare. Ca un corolar al re-gulii precedente, trebuie sa fie posibil sa se ruleze sistemul SGBDD pe o diversitate de sisteme de operare. (11) Independenta de retea. Din nou, trebuie sa fie posibil sa se ruleze sistemul SGBDD pe o diversitate de retele de comunicatie separate. (12) Independenta de baza de date. Trebuie sa fie posibil sa se ruleze diverse sisteme SGBD locale, eventual care accepta la baza modele de date diferite. Cu alte cuvinte, sistemul trebuie sa accepte eterogenitatea. Ultimele patru reguli sunt ideale. Deoarece regulile sunt atat de generale si datorita lipsei de standarde in arhitectura calculatoarelor si retelelor, aceste reguli sunt respectate doar partial.

CAPITOLUL III BAZE DE DATE ORIENTATE OBIECT 3.1. Generalitati
Cu ajutorul bazelor de date orientate obiect (BDOO) se pot crea obiecte complexe din componente simple, obiecte care au atribute proprii si comportament specific. Pornind de la conceptul de obiect s-au creat SGBD-uri orientate obiect (SGBDOO) in care sunt definite si manipulate structuri complexe de date folosind un limbaj de programare si tehnologia de gestiune a bazelor de date. Spre deosebire de un SGBD relational, un SGBDOO are caracteristici mai bune, permitand [6]: − Modelarea dinamica a obiectelor; − Organizarea schemei sub forma unei ierarhii de clase; − Modelarea obiectelor complexe si a obiectelor de dimensiuni mari; − Utilizarea unui limbaj unic pentru programarea intregii aplicatii; − Gestiunea dinamica a schemei; − Gestiunea versiunilor de obiecte. Dezvoltarea bazelor de date relationale si lipsa inca a formalismului BDOO au dus la dezvoltarea modelului relational astfel incat acesta sa permita mostenirea operatiilor si structurilor. Asa au aparut BDOOR (bazele de date orientate obiect relationale) si SGBDOOR.

3.2 Modelul de date orientat obiect (MDOO)
Modelele de date orientate obiect (MDOO) au fost create pentru a modela lumea reala. De exemplu, C++ a fost dezvoltat pentru a crea modelul unui sistem telefonic. Principalele concepte care stau la baza unui MDOO sunt: obiectul, clasa, incapsularea, persistenta, mostenirea, polimorfismul si colectia. 1 Obiectul intr-un MDOO. Orice entitate din lumea reala este un obiect si reciproc, orice obiect reprezinta o abstractizare a unei entitati din lumea reala. Este un grup de date structurate, identificate printr-o referinta unica – identificator (atributul obiectului in momentul crearii). Identificatorul: o Deosebeste obiectul fizic si logic de alte obiecte.
12

o Este o adresa logica invarianta. Doua obiecte sunt identice (notam O1==O2), daca au acelasi identificator. Doua obiecte sunt egale (notam O1=O2) daca au aceeasi valoare. Daca O1==O2, atunci implicit O1=O2. Implicatia inversa este falsa. Obiectele sunt caracterizate prin anumite proprietati. Un atribut este o proprietate (caracteristica) a unui obiect referita printr-un nume si care corespunde fie unei valori, fie unei referinte a altui obiect. Valoarea poate fi elementara (intreg, real, text etc.) sau complexa (structuri cu valori multiple). Elementele unui obiect sunt: structura de date, specificarea si implementarea operatiilor,. 2 Tipuri si clase Intr-un MDOO, tipul sintetizeaza elementele comune ale unei multimi de obiecte cu aceleasi proprietati. Un tip de date abstract cuprinde o reprezentare ascunsa a obiectului si o multime de functii abstracte vizibile in exterior. Tipul are doua componente : interfata si implementarea . Tipul este construit recursiv incepand cu tipurile de baza: caracter, intreg, real, sir de caractere, boolean. Constructorii de tipuri sunt: tuplul, lista, setul si clasa. Lista este o colectie ordonata de obiecte ale aceleiasi clase sau de valori ale aceluiasi tip. Clasa este o multime de obiecte avand aceleasi proprietati. Ea este caracterizata printr-o structura si printr-o multime de operatii care se pot aplica obiectelor clasei (ascunzand structura). Clasele sunt organizate ierarhic. O clasa este caracterizata de trei elemente : descriere (o multime de structuri de date comune (variabile de instanta)) , un protocol comun (o multime de mesaje la care vor raspunde instantele clasei ) , o multime de metode pentru implementarea operatiilor comune. Metoda este o procedura (operatie) asociata unei clase care manipuleaza un obiect sau indica starea unui obiect sau a unei parti a unui obiect. Clasa poate crea noi instante ale obiectelor. 3 Incapsulare Obiectele comunica prin mesaje. Mesajele reprezinta cereri adresate obiectului pentru a returna o valoare sau pentru a-i schimba starea. Ele constituie interfata obiectului cu mediul. Mesajul indica unul sau mai multe obiecte si metoda ce se aplica acestora. Mesajele sunt implementate prin intermediul metodelor. Principiul incapsularii ascunde obiectele , complexitatea lor si codul metodelor asociate si lasa vizibile doar metodele exportate de clasa respectiva (metode publice). Metodele publice constituie interfata unui obiect. Incapsularea ascunde utilizatorului complexitatea unui obiect, oferind in schimb o imagine functionala simplificata a acestuia. Concluzie. Obiectul este divizat in doua parti: − Prima parte, partea de interfata reprezentata de mesaje; − Partea a doua, partea ascunsa, reprezentata de starea interna si de metodele obiectului. Un caz particular de metoda, declansatorul (trigger), este o operatie asupra obiectelor determinata de aparitia unei conditii particulare. Declansatorii sunt metode care se executa dupa aparitia conditiei particulare si nu dupa trimiterea unui mesaj. 4. Persistenta Persistenta este o proprietate a datelor sau a obiectelor care presupune existenta mai indelungata a acestora fata de procesul care le-a creat. Este proprietatea prin care starea bazei de date asigura executia unui proces care poate fi refolosit ulterior in alt proces. 5 Legaturi intre clase - mostenirea Generalizarea reprezinta o legatura ierarhica intre doua clase care stabileste ca obiectele unei clase numita clasa superioara (supraclasa) sunt mai generale decat cele ale clasei inferioare (subclasa). O subclasa are proprietatile (atribute si metode) clasei superioare, dar are si proprietati specifice. Transmiterea automata a proprietatilor unei clase spre o subclasa defineste conceptul de mostenire. Pe baza mostenirii pot fi create ierarhii de clase care reflecta relatii naturale regasite in domeniile lumii reale. Exista diferite moduri pentru reprezentarea legaturilor ierarhice intre clase, dintre care amintim graful generalizarilor, graful mostenirilor, arborele claselor.
13

Mostenirea poate fi statica, dinamica, multipla. Este posibil ca o clasa sa aiba mai multe supraclase. Mostenirea multipla permite unei subclase sa mosteneasca proprietatile si metodele mai multor supraclase. 146 6 Polimorfism Stabileste in mod dinamic metoda care se aplica la primirea unui mesaj, in functie de clasa obiectului; Permite manipularea simpla a multimilor eterogene de obiecte. 7 Colectia Grupeaza multimi de obiecte pentru a forma o proprietate. Este o clasa structurala ce permite impunerea unei structuri pentru o multime de obiecte si definirea unor proprietati. Multimea de obiecte mosteneste proprietatile colectiei. Operatiile MDOO: -obiectele comunica intre ele prin mesaje -un mesaj poate fi trimis in acelasi timp mai multor clase -clasele se definesc si se actualizeaza prin operatii de creare, stergere si modificare -instanta unei clase poate fi actualizata prin metode ce modifica valorile variabilelor propriei instante, ducand la modificarea starii interne a obiectului. - Metodele se pot defini, modifica sau sterge. Reguli de integritate ale MDOO: - toate obiectele respecta protocolul specificat de definirile lor de clasa - obiectele sunt incapsulate - identificatorul obiectului asigura integritatea referirii la un obiect

3.3 Proiectarea BDOO
In BDOO definirea clasei este mecanismul principal de specificare a schemei bazei de date. Schema cuprinde toate clasele definite pentru o aplicatie. 149 Proiectarea orientata pe obiecte are la baza tehnica bottom-up: − Se identifica obiectele, actiunile efectuate de acestea si interactiunile dintre ele, − Se realizeaza prototipul bazei de date pe baza caruia se stabilesc aspectele functionale si de interfata ale aplicatiei; − Se stabilesc clasele (de baza si derivate) a caror instantiere sunt obiectele; se creaza ierarhia de clasa prin identificarea in colectiile (bibliotecile) de obiecte existente a obiectelor ce pot fi utilizate pentru crearea noului sistem si se creaza obiectele noi pentru care nu s-a gasit corespondent in biblioteci; − Se stabileste modul de comunicare intre obiecte si se asambleaza modulele care alcatuiesc baza; − Se testeaza componentele specifice; − Se scrie documentatia.

3.4. SGBDOO
3.4.1. Principii, caracteristici fundamentale
SGBDOO cuprind: un sistem de date abstracte pentru construirea de noi tipuri de date, un constructor de tip sir, un constructor de tip secventa, un constructor de tip inregistrare, un constructor de tip set, functii, un constructor de tip reuniune, o compunere recursiva a elementelor enumerate. Principiile care stau la baza SGBDOO: - utilizeaza functii ce contin metode si proceduri cat mai compacte, incapsulate, ermetizate. - subsumeaza avantajele SGBD-urilor de generatia a doua, - SGBDOO sunt deschise catre alte sisteme Caracteristici fundamentale obligatorii: ♦ trebuie sa fie un sistem orientat pe obiecte, asta revine la indeplinirea caracterisicilor: • manipulare de obiecte atomice si complexe: • identitatea obiectelor • incapsularea, • mostenirea. • suprapunere, supraincarcare si legare intarziata • extensibilitate (SGBDOO cuprinde si instrumente pentru definirea de noi clase sau tipuri)
14

completitudine computationala (limbajul de interogare trebuie sa se poata exprima in toate limbajele posibile) ♦ trebuie sa indeplineasca conditiile unui SGBD: • persistenta (baza de date contine obiecte care pot persista mai mult decat programul care le-a creat) – obiectele persistente se deosebesc de obiectele temporare prin faptul ca ele exista si dupa inchiderea sesiunii de lucru. Persistenta obiectelor poate fi asigurata cu ajutorul limbajelor de programare • gestiunea memoriei secundare • concurenta in exploatare • restabilirea integritatii dupa avarii sau fiabilitatea obiectelor • facilitati de interogare ad-hoc .

151 3.4.2. Arhitectura unui SGBDOO
Componentele de baza ale unui SGBDOO sunt: utilitarele, limbajele si gestiunea obiectelor. Gestiunea obiectelor (prelucrarea mesajelor) se realizeaza cu ajutorul: administratorului de obiecte, serverului de obiecte si a stocului rezident de obiecte. ♦ Administratorul de obiecte (AO) asigura interfata dintre procesele externe si SGBDO. AO primeste cereri de creare de definiri de clase, de modificare de definiri de clase deja existente, de manipulare a mesajelor generate de o aplicatie, de prelucrare a cererilor folosind translatorul de cereri, primeste mesaje pentru obiecte individuale, realizeaza functii de prelucrare a mesajelor, legaturi dinamice, operatii de verificare a tipului de date, permite anumite facilitati de definire si modificare a schemei bazei de date. Cerintele externe sunt transmise apoi, sub forma de tranzactii, server-ului de obiecte (SO). 153 ♦ Serverul de obiecte, asigura realizarea serviciilor de baza cum ar fi: gestionarea tranzactiilor si gestionarea stocului de obiecte 1. gestionarea tranzactiilor. - se bazeaza pe gestiunea stocului in realizarea regasirii si actualizarii obiectelor stocate. 2. gestionarea stocului de obiecte cuprinde: plasarea obiectelor, implementarea metodelor de acces, recuperarea, inserarea, stergerea, actualizarea obiectelor stocate in stocul rezident de obiecte; arhivarea si asigurarea dublurilor etc. Gestiunea stocului contine functiile: - functia de asigurare a cailor de acces necesare realizarii accesului eficient la stocul de obiecte (indecsi) - functia de mentinere a nivelului fizic de organizare a BDOO - functiile de segmentare sau de grupare a obiectelor stocate. Utilizatorii finali externi si cei care dezvolta aplicatii pot folosi diferite utilitare (L4G-termen generic pentru utilitare), cum ar fi generatoare de aplicatii, interfete grafice tipic orientate obiect, editoare de texte, editoare grafice, browser-e (vizualizatori) de obiecte si clase. Accesarea SGBDOO se face prin limbaje de programare orientate obiect (de exemplu, C++, Smalltalk). Interfata dintre limbajele de programare orientate obiect (LPO) si SGBDOO o reprezinta limbajul pentru baze de date care permite: - accesul si manipularea modelului de date obiect, - regasirea si actualizarea obiectelor. Limbajul pentru baze de date al SGBDOO cuprinde : - Limbajul de definire al datelor (LDD) sau in malte manuale de specialitate ODL (Object Definition Language)- permite definirea claselor, a legaturilor de mostenire, definirea modelelor ce specifica comportamentul obiectului, specificarea unor reguli aditionale de constrangere si integritate etc. - Limbajul de manipulare a datelor (LMD) sau in malte manuale de specialitate OML (Object Manipulation Language) - permite regasirea, crearea, stergerea si actualizarea obiectelor individuale utilizand mecanismul de transmitere a mesajelor. - Limbajul de interogare sau de cereri (LID) sau in malte manuale de specialitate OQL (Object Query Language)- permite regasirea subseturilor unei baze de date. Regasirea obiectelor individuale se face prin referirea identificatorului obiectului (OID). Pentru selectarea si gasirea obiectelor, limbajul de cereri se bazeaza pe transmiterea de mesaje.
15

Cel mai utilizat limbaj pentru baze de date este SQL. Standardul SQL include atat LDD cat si LMD si LID. Pentru SGBDOO se folosesc extensii ale limbajului SQL. Accesarea obiectelor si apelarea modelelor intr-un SGBDOO se realizeaza printr-o interfata de tip ESQL (SQL extins). Limbajul ESQL este compatibil cu standardul SQL si face distinctia intre conceptele de tip si clasa. Definitia tipului este analoaga definitiei structurii din C++. Lucrul cu clasele este la fel ca si lucrul cu relatii in SQL. Constructia de baza a limbajului este blocul SELECT. Crearea unui tip complex se face cu comanda CREATE TYPE, utilizand constructori de tip . ESQL poate fi integrat in C++ , in sensul ca cererile sunt integrate ca niste metode. Baza teoretica fundamentala pentru limbajele de interogare o constituie operatorii algebrei relationale. Lucrul cu ESQL a necesitat introducerea unei extensii a algebrei relationale pentru obiecte. In modelul relational se lucreaza cu expresii elementare: − Constante (sir sau numerice); − Referiri la atributele bazei; − Functii aritmetice. In modelarea orientata obiect se lucreaza in plus fata de modelul relational cu: - expresii drum - secvente de forma A1A2...An, in care atributele, cu exceptia ultimului, refera clasa al carei membru este urmatorul atribut; - expresii metode - secvente de apeluri de metode (cu sau fara parametri ). Cazuri particulare de expresii metode: functiile aritmetice (+, -,*,/), expresiile drum; Expresia metoda permite aplicarea succesiva a unor metode unui atribut. Operatorii algebrei relationale pentru obiecte complexe sunt: - operatori de cautare (filtrare, join valoare, cautare nume, cautare referinta, join referinta) - operatori multime (reuniune, intersectie, diferenta) - operatori de reactualizare (inserare clasa, inserare obiect, suprimare clasa, modificare clasa) - operatori de grupare (duplicare, grupare, degrupare) Analog cu modelul relational, cererile ESQL pot fi reprezentate printr-un arbore algebric, corespunzator algebrei obiectelor complexe.

3.5. Securitate si integritatea semantica a unui SGBDOO
Securitatea - se realizeaza prin autentificari si accesul controlat la date. Integritatea semantica – se realizeaza prin diferite tipuri de constrangeri (de tiparire, ale valorilor domeniului, de unicitate), care pot fi activate la executie, la compilare, la trimiterea unui mesaj, etc.

16