Popovici
9 CERINŢE ŞI STANDARDIZARE PT. SGBD-urile OBIECTUALE
memoria auxiliară şi încărcarea din unul sau mai multe fişiere (nou);
c) limbajul pt. interogarea obiectelor (OQL) — de tip declarativ Gestionarul de obiecte
(neprocedural), bazat pe SQL2;
d) limbajele pt. manevrarea datelor (OML) — proiecţii ODL pe limbajele
Smalltalk, C++ şi Java + mecanisme de invocare a lui OQL. BDO
Interfaţa cu utilizatorii — pt. dialog, gestionarul de obiecte — pt. identificarea
şi persistenţa obiectelor, concurenţa tranzacţiilor.
Avantaje: — transportabilitatea SGBDO între platforme de calcul (prin compatibilitatea cu standardele
OMG pentru obiecte şi intermediari de obiecte);
— compatibilitatea (prin OQL) cu SGBDR şi înlăturarea „nepotrivirii de impedanţă” (între
limbajul declarativ de interogare şi limbajele procedurale de programare a aplicaţiilor);
— posibilitatea folosirii aceleiaşiBDO, de către aplicaţii scrise în diverse OML-uri.
1
9.2.2 Definirea obiectelor şi ODL
Tipuri (după conţinut): — de literale/valori (asemănătoare constantelor);
— de obiecte (asemănătoare variabilelor).
Tipuri (după formă): — atomice (nedecompozabile şi nestructurate);
— colecţii (compuse, dar nestructurate);
— structuri (compuse şi structurate, cu un conţinut determinat).
Prin combinare ⇒ 6 grupări de tipuri: literale atomice şi obiecte atomice etc.
Tipurile atomice/primitive: — întreg (scurt sau lung, cu sau fără semn),
— real (simplă sau dublă precizie),
— logic (octet sau boolean),
— alfanumeric (caracter sau şir de caractere),
— enumerare (cu elemente diverse).
Tipuri de colecţii: — conţin un nr. arbitrar de elemente nedeterminate, de orice tip;
— sunt parcurse cu ajutorul unui iterator (indice).
Categorii: — cu elemente simple/perechi,
— cu/fără posibilitatea de duplicare a elementelor;
— ordonate (parcurse doar secvenţial, de la un capăt la celălalt) sau neordonate.
5-6 tipuri de colecţii: — mulţime (neordonată, fără duplicare);
— listă (ordonată, fără duplicare);
— pachet (neordonat, cu duplicare);
— vector (ordonat, cu duplicare);
— dicţionar (secvenţă ordonată de chei, perechi de atribute şi valori, fără duplicare);
— tuplul (ca dicţionarul, dar nu neapărat cu chei).
Tipuri de structuri: dată (an, lună, zi), timp (ora, min., sec.), marcaj temporal, interval, structură.
Proprietăţi: — atribute (cu nume şi tipuri care nu privesc clasele);
— legături între tipuri (1:1, 1:n, m:n); au de obicei valoarea unui identificator de obiect (OID).
Clasele de obiecte se definesc prin: — numele clasei;
— elementele clasei (atribute, legături, metode);
— cheia de acces opţională (1- n atribute);
— extensia (mulţimea numelor obiectelor existente în clasă).
Legătura 1:1 a obiectelor O1 , O2 : — legătura directă l1 către O2 (obligatorie), cu un tip şi numele lui O2 ;
— legătura inversă l −21 , a lui O2 către O1 (opţională).
Legăturile 1:1 — clase ca tipuri în ambele direcţii; 1:m — un tip de mulţime în partea de 1 (pt. fiecare
componentă) şi un tip de clasă în partea de m; m:n — tipuri de mulţime în ambele părţi.
Legăturile > 2 — simulate prin „clase de conectare” (cu obiecte reprezintând tupluri ale obiectelor conectate).
Operaţii — descrise prin semnături (nume op.; nume, moduri, tipuri de argumente; nume excepţii; tipuri de
valori returnate); pot fi supraîncărcate.
Excepţii — obiecte cu tipuri şi ierarhii; definesc reacţiile la eventualele erori de execuţie ale operaţiilor.
Specificaţie — proprietăţile şi operaţiile ce pot fi invocate relativ la instanţe.
Implementarea tipului/clasei — structurile de date, excepţiile şi operaţiile ce operează asupra lor.
Tipul/clasa — câte o singură specificaţie; tipul — mai multe implementări; clasa — o implementare.
Interfaţă — comportamentul abstract pt. tip (prin supratip, extensie/instanţe, chei (OID pt. fiece instanţă)).
Meta-date: — obiecte interogabile; descrieri ale altor obiecte din sistem;
— se referă la: — meta-obiecte (module, operaţii, excepţii, constante, proprietăţi, tipuri);
— raza de acţiune (ierarhia denumirilor meta-obiectelor);
— specificatori (pt. atribuirea unor denumiri contextuale);
— operanzi (tipurile fundamentale pentru toate valorile din BD).
Persistenţa obiectelor — „ortogonală” (nu depinde de tipul datelor şi de programul care le manevrează).
Bază de date obiectuală: — stochează ob. persistente şi autorizaţii de partajare a lor, între ob. şi aplicaţii.
— se întemeiază pe o schemă conceptuală (cu definiţiile tuturor tipurilor folosite, prin limbajul ODL).
Tranzacţii — unităţi logice de lucru, ce transformă BDO dintr-o stare coerentă în alta.
Controlul concurenţei tranzacţiilor — bazat pe încuieri standard, folosind metode pesimiste (v. Curs 5).
2
9.2.3 Interogarea obiectelor şi OQL
Interogarea obiectelor — descrisă prin algebră obiectuală (cu operatori, ca în algebra relaţională).
OQL — limbaj declarativ şi funcţional; extindere a lui SQL2, cu suport pt. modelul obiectelor.
Interogare: — expresie de un anumit tip, ce poate face referire la atributele şi la metodele ierarhiilor de clase;
— are ca rezultat obiecte persistente (simple sau complexe).
Posibilităţi: — utilizarea parametrilor şi sub-interogărilor;
— redenumirea atributelor obiectelor;
— utilizarea polimorfismului, relativ la atributele şi metodele claselor;
— legarea târzie/dinamică (la execuţie) a metodelor;
— ordonarea (cresc./descresc.) sau gruparea rezultatelor, în raport de valoarea unui atribut;
— agregarea datelor (prin sume, medii etc).
Un obiect nedefinit (necunoscut) se notează prin obiectul simplu (nedecompozabil) null.
Forme de interogare: — nume de întindere al unei clase (persistent, pt. regăsirea obiectelor din clasă);
— obiect denumit (regăsirea obiectului respectiv);
— selectare (returnarea unui literal cu un tip, cu o întindere şi satisfăcând o condiţie).
Interogările denumite pot servi ca perspective (views) ale utilizatorilor (ca în SGBD-urile „clasice”).
Puncte de intrare în BDO — nume de obiecte persistente, interogări, sau extensii ale unor clase.
Expresii de cale — pt. navigare (accesul la obiecte, pornind de la un anumit punct de intrare)
— succesiuni de identificatori de obiecte (OIDs), dar nu cu nume de colecţii;
— pt. urmărirea mai multor căi, se pot folosi subinterogări cu expresiile respective de cale.
Operaţii asupra obiectelor (de către interogări, prin apelarea metodelor acestora):
— constructori (pt. creări),
— modificatori (pt. actualizări).
Metodă invocată: — cu un tip returnat, valid pt. expresia în care apare şi diferit de tipul null;
— poate returna un obiect complex, ce poate fi traversat ca şi când ar fi o legătură;
— dacă este o metodă suprascrisă ⇒ implementare determinată prin legarea ei târzie.