Sisteme de Baze de Date - Introducere
Sistemele de baze de date au devenit o componenta esentiala a vietii de fiecare zi in societatea moderna. In cursul oricarei zile, fiecare dintre noi desfasuram activitati care implica interactiunea cu o baza de date, ca de exemplu, depunerea sau extragerea unor sume de bani din banca, rezervarea biletelor la tren sau avion, rezervarea locurilor la hotel, cautarea unei referinte bibiografice intr-o biblioteca computerizata (digital library), etc.
In sensul cel mai larg, o baza de date (database) este o colectie de date corelate din punct de vedere logic, care reflecta un anumit aspect al lumii reale si este destinata unui anumit grup de utilizatori. O baza de date poate fi creata si mentinuta manual (de exemplu, fisele de evidenta a cartilor dintr-o biblioteca, asa cum erau folosite cu ani in urma) sau computerizat, ceea ce reprezinta obiectul cursului de fata.
Un sistem de baze de date (database system) este un sistem computerizat de mentinere a evidentei unei anumite activitati.
Sistemele de baze de date pot avea dimensiuni (numar de inregistrari) extrem de variate, de la cateva zeci de inregistrari (de exemplu, o agenda cu numere de telefon) sau poate ajunge la sute de milioane de inregistrari (de exemplu, intr-un sistem de plata a taxelor si impozitelor).
Utilizatorul unei baze de date are posibilitatea de a efectua mai multe categorii de operatii asupra datelor stocate:
Introducerea de noi date (insert)
Stergerea unora din datele existente (delete);
Modificarea datelor memorate (update);
Interogarea bazei de date (query), pentru a regasi anumite informatii, selectate dupa un criteriu ales.
Definitia unei colectii de date ca fiind o baza de date se aplica, in sens mai restrans, acelor colectii de date care permit toate operatiile de mai sus, inclusiv operatia de interogare. Simple colectii de fise (documente) dau fisiere de date, care contin inregistrari cu o organizare simpla si care nu admit operatii de interogare (selectarea unor informatii dupa un criteriu ales), nu sunt considerate baze de date. De exempu, un editor de text (ca Microsoft Word) permite memorarea unor informatii (texte), care pot fi create, modificate si consultate, dar nu se pot efectua operatii de interogare. La fel, un instrument de calcul tabelar (cum este Microsoft Excel) ofera reprezentarea in diferite forme a unor date (tabele, grafice), dar nu permite operatii de interogare.
1.1. Componentele unui Sistem de Baze de Date
Componenele unui sistem de baze de date sunt: hardware, software, utilizatori, date (Figura 1.1).
Figura 1.1. Componentele unui Sistem de Baze de Date
Hardware. Sistemele de baze de date sunt, de regula, instalate pe calculatoare de uz general, de la calculatoare PC standard, pana la statii multiprocesor puternice. Bineinteles, performantele generale de operare ale calculatorului (numarul si viteza procesoarelor, dimensiunea si viteza de operare a memoriei principale) influenteaza in mod corespunzator performantele sistemului de baze de date. Dar, ceea ce intereseaza in mod deosebit in utilizarea unui calculator pentru un sistem de baze de date este volumul (capacitatea) memoriei secundare, utilizata pentru memorarea colectiei de date persistente ale bazei de date. Dat fiind ca intr-un sistem de baze de date este necesar accesul rapid la oricare din inregistrarile de date, pentru memorarea acestora se folosesc discurile magnetice (hard-discuri); benzile magnetice sunt utilizate numai pentru duplicarea (backup) datelor.
Software. Intre baza de date (colectia de date memorate fizic in fisiere pe hard-discuri) si utilizatorii sistemului exista un nivel software, numit Sistem de Gestiune a Bazei de Date (SGBD) (Database Management System - DBMS). Toate cererile utilizatorilor de a accesa baza de date (pentru introducere, stergere, modificare sau interogare) sunt gestionate (administrate) de catre SGBD, care elibereaza utilizatorii de necesitatea de a cunoaste organizarea particulara ale sistemului (driverele de disk, fisieree memorate, structura inregistrarilor de date). Cu alte cuvinte, SGBD permite utilizatorilor sa aiba o viziune (vedere - view) la un nivel inalt a bazei de date, precum si acces la aceasta prin operatii de nivel inalt, independent de detaliile de organizare hardware ale sistemului. Mai mult, SGBD-ul permite protectia datelor impotriva acceselor neautorizate, asigurand integritatea bazei de date.
SGBD-ul este cea mai importanta componenta software a unui sistem de baze de date, dar nu este singura componenta utilizata. Astfel, orice SGBD este dezvoltat si executat sub controlul sistemului de operare al calcuatorului respectiv. De asemenea, sunt folosite numeroase alte componente software pentru proiectarea, dezvoltarea sau exploatarea aplicatiilor de baze de date.
Utilizatori. Utilizatorii unui sistem de baze de date se pot imparti in trei categorii: programatorii de aplicatii, utilizatorii finali si administratorul bazei de date.
Programatorii de aplicatii sunt cei care scriu (dezvolta) aplicatiile de baze de date, folosind limbaje de programare de nivel inalt (Cobol, PL/1, Fortran, C, C++, Java, Basic) cu extensii care permit incorporarea unor operatii specifice de acces la baza de date. Aplicatiile rezultate pot fi aplicatii cu executie independenta (batch-processing) sau pot fi aplicatii conversationale (on-line) utilizate de utilizatorii finali ai sistemului pentru a accesa (intr-un mod mai eficient si mai sigur) baza de date.
Utilizatorii finali sunt acei utilizatori care acceseaza baza de date prin intermediul unui program de aplicatie care le confera numai anumite posibilitati de executie si drepturi limitate de acces la date. Utilizatorii finali sunt persoane cu pregatire tehnica minimala, care efectueaza un volum mare de operatii asupra bazei de date, dar nu trebuie sa cunoasca mai mult decat posibilitatile oferite de programul pe care il utilizeaza. De exemplu, utilizatorii finali ai unui sistem de rezervare a bietelor de avion sunt agenti de vanzari, care folosesc programul adevcat (scris de programatorii de aplicatii), fara sa fie necesar sa cunoasca intreaga structura a bazei de date.
Administratorul bazei de date este o persoana cu inalta calificare tehnica care are ca sarcina mentinerea functionalitatii bazei de date prin stabilirea drepturilor de acces a diferitelor categorii de utilizatori, prin efectuarea operatiilor periodice de salvare a datelor (backup), prin monitorizarea performantelor sistemului.
Date. Datele memorate intr-o baza de date sunt date persisente, adica date care raman memorate pe suport magnetic, independent de executia programelor de aplicatii. Datele persistente ale unei baze de date se introduc, se sterg sau se actualizeaza folosind date de intrare (provenind de a tastatura, sau receptionte prin transfer de mesaje). Datele de intrare sunt date nepersistente; ele sunt generate de utilizatori si sunt memorate (devenind date persistente) numai dupa ce au fost validate (acceptate) de catre SGBD. Datele de iesire ale unui sistem de baze de date sunt, de asemenea, date nepersistente; ele provin din operatii de interogare a bazei de date si sunt puse a dispozitia utilizatorului (sub forma de afisari, rapoarte tiparite, etc).
Toate aceste componente asigura exploatarea unei baze de date dupa ce aceasta a fost proiectata si realizata. Activitatea de proiectare a unei baze de date implica alte categorii de personal cu inalta calificare tehnica (analisti, programatori) sau administrativa (administrator de date). Proiectantii bazelor de date au responsabilitatea de a analiza realitatea reprezentata (modelata) de baza de date respectiva, de a identifica datele necesare sa fie memorate, care sa asigure mentinerea evidentei activitatii dorite. De asemenea, in cursul proiectarii unei baze de date, proiectantii selecteaza componentele hardware (sistemul de calcul), software (sistem de operare, SGBD, instrumente de dezvoltare si limbaje de programare), stabilesc structura conceptuala a bazei de date si mentin interactiunea cu utilizatorii potentiali, pentru a asigura cerintele de prelucrare ale acestora. Aspecte privind proiectarea bazelor de date vor fi studiate in mai multe din capitolele urmatoare.
1.2. Arhitectura interna a Sistemelor de Baze de Date
Arhitectura interna a unui sistem de baze de date propusa prin standardul ANSI/X3/SPARC (1975) contine trei nivele functionale: nivelul intern, nivelul extern si nivelul conceptual (Figura 1.2).
Figura 1.2. Arhitectura interna a Sistemelor de Baze de Date
Nivelul intern este nivelul de reprezentare a datelor pe suportul fizic.
Nivelul extern reprezinta modul in care datele sunt percepute de utilizatori, existand cate o vedere (view) individuala a datelor pentru fiecare utilizator.
Nivelul conceptual corespunde unei reprezentari unice si abstracte a datelor, care asigura legatura intre nivelul extern si cel intern. Nivelul conceptual este o vedere a intregului continut a bazei de date prin intermediul schemei conceptuale a acesteia.
Toate aceste reprezentari sunt accesate prin intermediul SGBD-ului care asigura, de asemenea, cele doua corespondente (mappings) intre nivelul extern si nivelul conceptual si intre nivelul conceptual si nivelul intern.
1.3. Limbaje si interfete ale Sistemelor de Baze de Date
Orice SGBD suporta doua categorii de limbaje conceptuale: limbaje de descriere a datelor (LDD, Data Description Language - DDL) si limbaje de manipulare a datelor (LMD, Data Manipulation Language - DML). LDD permit definirea conceptuala a datelor, fara referinta la modul de memorare fizica a datelor, asigurand in acest fel independenta datelor in sistemele de baze de date. LMD asigura operatiile de introducere si prelucrare a datelor (actualizare, stergere, interogare).
In momentul actual, limbajul cel mai frecvent utilizat in sistemele de baze de date relationale este limbajul SQL (Structured Query Language), care include componentele LDD si LMD. Orice operatie asupra unei baze de date relationale se adreseaza SGBD-ului prin instructiuni SQL.
Instructiunile SQL pot fi trimise de catre utilizatori in mod interactiv (de la o consola) si sunt prelucrate direct de o componenta a SGBD sau pot fi inglobate (embeded SQL) in limbaje de programare de nivel inalt (Cobol, Fortran, C, C++, PL/1, Java, Basic) si transmise SGBD-ului in cursul executiei programelor respective. Programele de aplicatii de baze de date mai prezinta, de regula, interfete grafice cu meniuri si comenzi prin intermediul carora utilizatorii finali pot introduce, modifica sau selecta diferite date sau criterii de selectie.
De asemenea, multe SGBD-uri contin o interfata speciala pentru administratorul bazei de date, prin care acesta poate crea conturi, utilizatori, drepturi, etc.
1.4. Avantajele oferite de Sistemele de Baze de Date
Fata de metodele mai vechi de inregistrare a datelor privind diferite activitati pe fise (documente scrise) sau chiar in fisiere pe disc, sistemele de baze de date ofera avantaje considerabile, ceea ce explica extinsa utilizare a acestora. Cateva dintre avantajele oferite sunt prezentate in continuare.
Compactitate ridicata fata de volumul ocupat de documente scrise sau de fisiere necorelate.
Viteza mare de regasire si actualizare a informatiilor, folosind interogari ale bazei de date.
Reducerea redundantei datelor memorate, prin partajarea datelor intre mai multi utilizatori si aplicatii. In stocarea pe fise sau in fisiere a datelor, fiecare aplicatie continea propriile seturi de date. In sistemele de baze de date, mai multe aplicatii pot folosi date comune, memorate o singura data. De exemplu, o aplicatie de personal si o aplicatie de rezultate la examene dintr-o universitate care exploateaza o singura baza de date, pot folosi aceleasi informatii referitoare a structurarea facultatilor si a sectiilor.
Posibilitatea de introducere a standardelor privind modul de stocare a datelor, ceea ce permite interschimbul informatiilor intre diferite organizatii.
Mentinerea integritatii datelor prin politica de securitate (drepturi de acces diferentiate in functie de rolul utilizatorilor), prin gestionarea tranzactiior si prin refacerea datelor in caz de functionare defectuoasa a diferitelor componente hardware sau software.
Independenta datelor fata de suportul hardware utilizat. Sistemele de gesiune a bazelor de date ofera o vedere (view) externa (logica) a datelor, care nu se modifica atunci cand se schimba suportul de memorare fizic, ceea ce asigura imunitatea structurii bazei de date si a aplicatiilor la modificari ale sistemului hardware utilizat.
1.5. Clasificarea Sistemelor de Baze de Date
Se pot lua in consideratie mai multe criterii de clasificare ale sistemelor de baze de date.
Clasificare dupa modelul de date. Majoritatea sistemelor de baze de date actuale se bazeaza pe modelul de date relational (relational data model) sau pe modelul de date obiect (object data model). Dezvoltarea continua a acestor modele a condus catre o noua categorie de baze de date, numite obiect-reationale, care combina caracteristicile modelului relational cu cele ale modelului obiect. De asemenea, mai sunt inca in functiune baze de date in modele mai vechi (modelul ierarhic sau modelul retea). Modelele de date utilizate de SGBD-uri vor fi studiate in capitolul urmator.
Clasificare dupa numarul de utilizatori. Majoritatea sistemelor de baze de date sunt sisteme multi-utilizator, adica permit accesul concurent (in acelasi timp) a mai multor utilizatori la aceeasi baza de date. Un numar redus de sistemelor de baze de date sunt de tip mono-utilizator, adica suporta accesul doar a unui singur utilizator (la un moment dat).
Clasificare dupa numarul de statii pe care este distribuita baza de date. Exista doua categorii de sisteme de baze de date: centralizate si distribuite.
Un sistem de baze de date este centralizat daca datele sunt stocate pe o singura statie (calculator). Un sistem centralizat poate suporta unul sau mai multi utilizatori, dar, in ambele situatii, datele, ca si SGBD-ul, rezida in intregime pe o singura statie.
Un sistem de baze de date distribuit poate avea datele, ca si SGDB-ul, distribuite in mai multe statii interconectate intr-o retea de comunicatie.
Sistemele de baze de date pot fi reprezentate din punct de vedere a utilizarii lor printr-o arhitectura de tip client-server.
Intr-un sistem centralizat (Figura 1.3) exista un singur server, care este chiar SGBD-ul, care raspunde cererilor unui singur client (in sistemele mono-utilizator) sau mai multor clienti (in sistemele multi-utilizator), accesand baza de date respectiva. Clientii sunt programe de aplicatii, oferite de furnizorul SGBD-ului sau dezvoltate de programatori (utilizatori). Aplicatiile client pot fi executate pe statii diferite, conectate printr-o retea de comunicatie cu statia pe care este executat serverul. Aceasta arhitectura permite o prelucrare distribuita a datelor si, mai mult, o configurare a sistemului adaptata cerintelor de calcul particulare. Astfel, serverul bazei de date poate fi un sistem puternic, echipat corespunzator (cu volum mare de memorie secundara), in timp ce fiecare client este o statie personala, cu putere de calcul adecvata aplicatiei executate.
(a) (b)
Figura 1.3. Sisteme de baze de date centralizate: (a) mono-utilizator; (b) multi-utilizator
Sistemele de baze de date distribuite pot fi reprezentate intr-un mod asemanator din perspectiva structurarii client-server (Figura 1.4).
Figura 1.5. Sistem de baze de date distribuita
Mai multe servere, continand SGBD si date sunt distribuite pe statii conectate printr-o retea de comunicatie, in timp ce aplicatiile client ruleaza pe alte statii din retea si solicita servicii de la servere. Numeroase probleme de partitionare a datelor memorate, de optimizare, de transparenta a accesului sunt rezolvate de catre SGDB distribuite.
|