|
Baze de date orientate obiect (BDOO)
1. Principiile modelarii obiectelor
2. Caracteristicile bazei de date orientate obiect
1. Principiile modelarii obiectelor
Bazele de date relationale, care in anii `90 acopereau 70% din piata bazelor de date, ofera prea putin suport pentru tipurile neconventionale de date.
Necesitatea gestiunii obiectelor complexe (texte, grafice, harti, imagini, sunete etc) si a gestiunii obiectelor dinamice (programe, simulare, ..etc), care nu pot fi realizate cu ajutorul sistemelor relationale, a condus la introducerea conceptului de obiect in tehnologia sistemelor informatice.
Bazele de date orientate obiect (BDOO) permit crearea unor obiecte complexe din componente mai simple, fiecare avand atribute proprii si comportament specific.
Inglobarea conceptului de obiect in tehnologia SGBD a generat producerea unor SGBD orientate obiect (SGBDO).
Aceste sisteme combina posibilitatea de definire si manipulare a structurilor complexe de date cu functionalitatea unui limbaj de programare si tehnologia de gestiune a bazelor de date.
Modelarea orientata obiect incearca sa integreze principiile limbajelor de programare orientate obiect (Smalltalk, C++, Java) si a bazelor de date, pentru a rezolva problema interfetei limbaj de programare - SGBD, pentru a oferi un limbaj unic si general.
Exista tendinte, fie de a extinde SGBD pentru a suporta obiecte complexe cu functii speciale pentru manipularea datelor, fie de a dezvolta limbajul de cereri in jurul unui SGBD clasic.
O solutie buna este crearea unui SGBD relational care sa suporte majoritatea principiilor modelarii orientate obiect.
Comparativ cu un SGBD relational, un SGBDO ofera functionalitati superioare referitoare la:
- modelarea dinamica a obiectelor;
- organizarea schemei sub forma unei ierarhii de clase;
- modelarea obiectelor complexe si a obiectelor de dimensiuni mari (multimedia);
- utilizarea unui limbaj unic pentru programarea intregii aplicatii;
- gestiunea dinamica a schemei;
- gestiunea versiunilor de obiecte.
Limbajul de baza al acestor sisteme este un limbaj procedural (C, Smalltalk, LISP) extins prin posibilitati obiect.
De asemenea, folosirea unor cereri declarative (de exemplu, de tip SQL) intr-un SGBDO permite optimizarea acceselor (exprimate prin predicate ce leaga colectii de date).
Cu toate avantajele incontestabile oferite de SGBDO, impunerea lor pe piata nu este usoara.
Cele mai importante cauze sunt:
- Absenta unei fundamentari teoretice face imposibila definirea unui SGBDO de referinta.
In consecinta sistemele, modelele de date si limbajele sunt diversificate, iar evaluarea lor este dificila din cauza lipsei unor criterii precise.
- Problema performantelor, care este inerenta oricarei tehnologii moderne, este inca nerezolvata.
Sistemelor relationale le-au trebuit mai mult de zece ani pentru a obtine performantele actuale. Gestiunea obiectelor complexe si persistente accesate prin programe generale este o problema mai dificila decat accesul la relatii prin cereri SQL.
Tehnicile de optimizare legate de extinderea standardului SQL, problema concurentei in cazul tranzactiilor lungi (o tranzactie de conceptie poate sa dureze cateva ore) sunt doar la inceput de drum.
- Utilizatorii au investit sume uriase in sistemele relationale si nu le pot abandona cu usurinta.
Trecerea la noua tehnologie orientata obiect implica investitii mari sai nu pastreaza aproape nimic din vechile solutii.
Modelele de date orientate obiect (MDOO) au fost create pentru a modela lumea reala.
De exemplu, limbajul 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,
- colectia.
Obiectul
Este conceptul fundamental al MDOO.
Intr-un MDOO, orice entitate din lumea reala este un obiect si reciproc, orice obiect reprezinta o entitate a lumii reale.
Un obiect este un grup de date structurate, identificate printr-o referinta unica.
Un obiect are un identificator, adica o referinta unica, atribuit obiectului in momentul crearii sale.
Identitatea obiectului este acea proprietate a sa care il deosebeste fizic si logic de alte obiecte.
Identitatea obiectului este o adresa logica invarianta.
Doua obiecte sunt identice daca au acelasi identificator; notam acest lucru astfel:
O1 = = O2
Doua obiecte sunt egale daca au aceeasi valoare, dar doua obiecte care au aceleasi valori dar identificatori diferiti sunt diferite.
Acest fapt este total opus bazelor de date traditionale, in care tuplurile se identifica prin valorile lor.
Un obiect poate referi un alt obiect.
De exemplu, obiectul vehicul V1 refera obiectul motor M1, iar persoana P1 refera obiectul vehicul V1.
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.
Orice atribut poate fi gandit ca o functie, care, aplicata unui obiect, genereaza fie un alt obiect, fie una sau mai multe valori.
Tipuri si clase
Oricare dintre obiectele unei baze de date orientate obiect are o identitate care este independenta de valorile atributelor sale.
Spre deosebire de modelul relational, care utilizeaza unicitatea cheii primare pentru a identifica tuplul, MDOO permite modificarea valorilor oricarui atribut, fara a-i afecta identitatea.
Fiecare instanta sau realizare a obiectului are un identificator obiect care este independent de valorile atributelor sale.
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 din exterior; tipul are doua componente: interfata (vizibila pentru utilizator) si implementarea (obiectul activitatii proiectantului, presupunand descrierea structurii interne a datelor obiectului si realizarea procedurilor pentru implementarea operatiilor interfetei).
Clasa este o multime de obiecte avand aceleasi proprietati, caracterizata printr-o structura si printr-o multime de operatii care se pot aplica obiectelor clasei.
Clasa corespunde definirii unui tip abstract, iar clasa, ca si tipul abstract, specifica structura unei multimi de obiecte, precum si comportamentul acestora.
Clasa este caracterizata de trei elemente: o descriere, un protocol si o multime de metode.
Descrierea consta intr-o multime de date comune, protocolul este reprezentat de o multime de mesaje la care vor raspunde obiectele (clasei de obiecte) si metode (procedura asociata unei clase care manipuleaza un obiect sau indica starea unui obiect).
Incapsulare
Un obiect este manipulat prin metodele clasei sale (careia ii apartine, ca instantiere a clasei respective).
Metodele si atributele nu sunt vizibile din exteriorul obiectului; doar interfata acestuia poate fi va de utilizatori sau de alte obiecte.
Obiectele comunica prin mesaje; mesajele reprezinta cereri adresate obiectului pentru a returna o valoare sau pentru a-i schimba starea.
Mesajele constituie interfata obiectului cu mediul, indicand unul sau mai multe obiecte si metoda ce se aplica acestora.
Principiul incapsularii ascunde obiectele si codul metodelor asociate si lasa vizibile doar metodele constituind interfata obiectului, adica imaginea functionala a acestuia.
Persistenta
Este o proprietate a datelor sau a obiectelor care presupun existenta mai indelungat acestora fatesul care l-a creat.
Este proprietate prin care starea bazei de date asigura executia unui proces care poate fi refolosit ulterior in alt proces.
Polimorfism
Se refera la faptul ca, la primirea unui mesaj, stabilirea metodei care se aplica se face in mod dinamic in functie de clasa obiectului in cauza.
Adica, acelasi mesaj, primit de o multime eterogena de obiecte, poate sa duca la comportamente diferite ale obiectelor respective.
Colectia
Uneori este necesara gruparea unei multimi de obiecte pentru a forma o proprietate; acesta se realizeaza cu ajutorul colectiilor.
Dintre principalele colectii de tipuri amintim:
- tuplul: permite referirea grupata a atributelor;
- multimea: permite definirea de multimi neordonate fara dubluri;
- tabloul: permite definirea de multimi ordonate si indexate;
- lista: permite definirea de multimi ordonate cu dubluri.
2. Caracteristicile bazei de date orientate obiect
Un obiect persistent este un obiect stocat in baza de date, care are o durata de viata mai mare decat a programului care l-a creat.
Un obiect tranzitoriu este un obiect depus in memorie, a carui viata nu depaseste durata de viata a programului care l-a creat.
Baza de date orientata obiect este o organizare coerenta de obiecte persistente, partajate de utilizatori concurenti; BDOO este rezulatul aplicarii tehnologiei orientate obiect in domeniul stocarii si regasirii informatiilor.
Schema unei BDOO trebuie sa includa definitiile structurale (atribute si tipuri) si comportamentale (metode) ale obiectelor (fiecare obiect fiind generat de o clasa):
Schema unei BDOO =
Schema bazei BDOO consta din toate clasele care au fost definite pentru o aplicatie particulara.
Schema bazei de date poate fi modificata dinamic in functie de necesitatile utilizatorilor.
Pot fi identificate doua tipuri de schimbari ale schemei unei BDOO:
- schimbari referitoare la structura ierarhiei de clase, care includ adaugarea sau stergerea unei clase si schimbarea relatiilor dintre clase;
- schimbari referitoare la modul de definire a unei clase, care includ schimbarile atributelor si metodelor definite pentru o clasa (de exemplu, schimbarea numelui sau domeniului unui atribut, adaugarea, stergerea unui atribut sau a unei metode).
Un SGBDO trebuie sa indeplineasca cerintele unui SGBD si sa fie, in plus, un sistem orientat obiect.
Aceste doua criterii genereaza o multime de caracteristici ale unui SGBDO.
Caracteristicile obligatorii ale unui SGBDO sunt:
- Manipularea obiectelor si a colectiilor de obiecte (obiecte complexe).
Un constructor este o funtie asociata unei clase care permite crearea si initializarea unui obiect (in memorie); un destructor este o functie asociata unei clase care permite distrugerea unui obiect.
Notiunea de obiect complex a aparut prin aplicarea de constructori asupra obiectelor simple.
- Persistenta obiectelor
Obiectele pot persista mai mult decat programul care l-a creat.
SGBDO trebuie sa furnizeze functii pentru manipularea (crearea, distrugerea, activarea.) obiectelor persistente.
Aceste operatii sunt partial sau total transparente programatorului, in functie de tehnica folosita pentru gestionarea persistentei.
Calitatea unui obiect de a fi sau nu persistent depinde de tipul obiectului; aceasta calitate se defineste cu ajutorul unui cuvant cheie (de exeplu, persistent) sau prin referirea sa de catre un alt obiect persistent
Proprietatea de persistenta este asociata direct obiectului si nu clase sale.
- Concurenta acceselor
BDOO poate sa fie partajata simultan de catre tranzactiile care o cosulta si o modifica.
- Fiabilitatea obiectelor
Obiectele trebuie restaurate, in cazul unei defectiuni, la starea pe care au avut-o inainte de defectiune.
- Identitatea obiectelor
Orice obiect trebuie sa aiba un identificator sistem.
- Extensibilitate
SGBDO trebuie sa includa, pe langa clasele sau tipurile predefinite (clasa obiect, clasa data etc) si instrumente care sa permita utilizatorului definirea de noi clase si tipuri.
Un SGBDO se bazeaza pe doua tehnologii:
- bazele de date si
- limbajele orientate obiect.
In functie de combinarea acestor doua tehnologii, exista diferite moduri pentru a concepe un SGBDO.
Prezentam trei abordari, in continuare.
1. Extinderea unui SGBD relational si a limbajului de interfata cu conceptul de obiect.
Se realizeaza o extensie a standardului SQL care suporta conceptul obiect si implicit se extinde algebra relationala (ceea ce permite exprimarea cererilor SQL printr-un graf al operatiilor elementare).
Este ideea propusa de sistemul de gestiune ORACLE, versiunea 8.
2. Extinderea care pleaca de la un limbaj orientat obiect, care este marit pentru a permite definirea schemei BDOO si scrierea unor programe aplicatie care includ apeluri ale SGBDO.
Este tehnica folosita de sistemul ObjectStore cu C++ si GemStone cu Smalltalk.
3. Contrara tehnicilor precedente este abordarea integrata care nu se bazeaza pe extinderea modelului relational sau a limbajului obiect.
In acest caz, sistemul de gestiune suporta un nou model care integreaza conceptele semantice si obiectul.
Sistemul integrat poate fi independent de orice limbaj de programare si poate oferi o interfata multilimbaj.
Arhitectura SGBDO este descrierea exacta a organizarii sistemului, in scopul de a prezenta componentele functionale si interfetele dintre acestea.
Componentele de baza ale arhitecturii SGBDO sunt:
- programele utilitare,
- limbaje (de definire, de manipulare, de cereri, interfete),
- gestiunea obiectelor
In figura de mai jos este prezentata schema arhitecturii SGBDO.
Interfata dintre limbajele de programare orientate obiect (LPO) o reprezinta limbajul pentru baze de date.
Pentru un SGBD clasic, limbajul pentru baze de date permite definirea si manipularea schemei bazei de date si a datelor.
Pentru SGBDO, limbajul pentru baze de date permite accesul si manipularea modelului de date obiect, regasirea si actualizarea datelor.
Administratorul obiectelor asigura interfata dintre procesele externe si SGBDO; el permite definirea structurilor si executarea operatiilor specificate prin modelul de date obiect.
Serverul de obiecte realizeaza refacerea, insertia, stergerea si actualizarea obiectelor ce se gasesc in stocul rezident de obiecte.
Chestionar
1. Ce a dus la introducerea conceptului obiect in tehnologia sistemelor informatice?
2. Care este specificul BDOO - BD orientate obiect?
3. Care sunt fuctionalitatile superioare aferite de SGBDO?
4. De ce au fost create modelele de date orientate obiect - MDOO?
5. Cum definim obiectul?
6. Dar atributul obiectului?
7. Cum definim clasa?
8. Cum definim BDOO?
9. Care sunt caracteristicile obligatorii ale unui SGBDO?
10. Care sunt tehnologiile pe care se bazeaza SGBDO?
11. Care sunt componentele de baza ale arhitecturii SGBDO?