Introducere
Sistemele de baze de date reprezinta modalitati de descriere si organizare a datelor in sistemele informatice. Un sistem de baze de date este constituit din colectii de date aflate in interdependenta, care poarta denumirea de baze de date.
Evolutia sistemelor de baze de date a inceput odata cu lansarea primelor sisteme comerciale (IDS – Integrated Data Store, IMS – Information Management System), in anii ’60. În anul 1966, IBM, Rockwell si Caterpillar au dezvoltat sistemul de baze de date Information Management System, primul sistem comercial ierarhic. Sistemul de baze de date Integrated Data Store a fost implementat de General Electric si avea la baza modelul de date de tip retea, dezvoltat de C.W. Bachman.
In anul 1970, E.F. Codd a propus un nou model de reprezentare a datelor, modelul relational, care avea sa reprezinte fundatia pentru cele mai populare sisteme de baze de date, cele relationale. Modelul relational a permis reprezentarea datelor prin intermediul unor structuri tabelare (relatii), care puteau fi accesate utilizand un limbaj non-procedural de nivel inalt.
Datorita popularitatii limbajelor de programare orientate pe obiecte, precum Java, C++ sau Smalltalk, in anii ’80, s-a impus modelul de date orientat pe obiect. Motivatia pentru care a fost propus acest model a fost data de necesitatea unui sistem de baze de date complex, capabil sa manipuleze structuri de tip obiect.
De-a lungul ultimelor decade, sistemele de baze de date s-au impus ca si solutii de baza in stocarea, gestionarea si analiza datelor necesare organizatiilor, prin intermediul unor noi tehnologii, precum bazele de date multidimensionale sau sistemele de explorare a datelor.
Raspandirea tehnologiilor Internet a redefinit rolul sistemelor de baze de date, prin crearea unui spatiu global pentru distribuirea informatiei si utilizarea bazelor de date pentru oferirea de servicii. Web-ul a devenit principalul mediu pentru aplicatii cu baze de date, precum bibliotecile digitale sau aplicatiile de e-commerce. Astfel de aplicatii stocheaza informatii in baze de date de mari dimensiuni, care sunt accesate de catre utilizatori prin intermediul mediului Web.
De asemenea, baze de date de mici dimensiuni pot fi intalnite, in ultimii ani, pe un numar in crestere de dispozitive portabile, printre care telefoanele inteligente, tabletele, laptop-urile sau sistemele de navigare.
Modele de date
Un model de date reprezinta o definitie conceptuala a entitatilor si operatorilor care contribuie la descrierea unor structuri de date. Entitatile permit modelarea structurilor de date, in timp ce operatorii definesc operatiile care pot fi efectuate asupra datelor.
Modelele de reprezentare a datelor sunt colectii integrate de concepte utilizate atat in descrierea si manipularea datelor, cat si in stabilirea legaturilor si constrangerilor cu privire la datele dintr-o organizatie.
Evolutia sistemelor de baze de date este strans legata de evolutia tehnicilor de modelare a datelor si are la baza nevoia de a modela cat mai precis si natural lumea reala.
In proiectarea bazelor de date prezinta interes urmatoarele modele specializate de date:
• modelul ierarhic;
• modelul retea;
• modelul relational;
• modelul orientat pe obiect.
Aceste modele specifica structurile de date care stau la baza dezvoltarii sistemelor de gestiune a bazelor de date.
Modelul ierarhic permite organizarea datelor prin intermediul unei structuri ierarhice de tip arbore (tree). A fost primul model de date utilizat de catre IBM, in anii ’60, pentru dezvoltarea unui sistem de baze de date comercial, Information Management System (IMS).
Cu ajutorul acestui model structura unei baze de date poate fi reprezentata sub forma unui arbore directionat, in care nodurile reprezinta tipurile de inregistrari, iar legaturile intre noduri specifica relatiile de asociere intre inregistrari.
Intr-o structura ierarhica exista un tip de inregistrare definit ca radacina si mai multe tipuri de inregistrari subordonate. Cu exceptia nodului radacina, fiecare nod are o legatura cu un nod de nivel superior, denumit si nod parinte. Fiecare nod, cu exceptia nodurilor frunza, are una sau mai multe legaturi cu noduri de nivel inferior (noduri copil).
Modelul retea are la baza o structura de reprezentare de tip retea si permite relatii de asociere de tipul 1:1, 1:N si N:M. A fost propus de C.W. Bachman si standardizat de catre Data Base Task Group (DBTG) in anul 1969.
Alaturi de modelul de date ierarhic, modelul retea face parte din categoria sistemelor de date de tip navigational. Extinde modelul ierarhic, oferind posibilitatea realizarii de asocieri multiple intre inregistrari.
Modelul retea prezinta datele ca si colectii de inregistrari (noduri), in timp ce relatiile dintre acestea sunt specificate prin directiile sau muchiile unui graf. Acest model introduce o noua structura pentru reprezentarea grupurilor de date interconectate, numita set, care detine trei componente: un nume, o inregistrare de tip proprietar si o inregistrare de tip membru. Un membru poate avea rol in mai multe structuri de tip set, deoarece modelul retea ofera suport pentru conceptul de parinti multipli.
Principalele dezavantaje ale modelului retea sunt implementarea complexa, manipularea dificila a datelor si lipsa independentei datelor.
Modelul relational permite organizarea datele sub forma unor tabele interconectate alcatuite din linii si coloane. Tabelele, cunoscute si sub numele de relatii, sunt formate din seturi de inregistrari (tupluri, randuri, linii), care la randul lor sunt constituite din unul sau mai multe atribute (coloane, campuri).
Modelul relational a fost propus in anul 1970 de catre E.F. Codd si constituie cea mai populara modalitate de reprezentare a datelor. E.F. Codd a construit acest model avand la baza conceptele matematice pe care le-a prezentat in lucrarea A Relational Model of Data for Large Shared Databases.
Metodologia utilizata in accesarea datelor este superioara modelelor de date precedente, deoarece modelul relational este mult mai simplu de inteles. Probabil, acesta este si principalul motiv pentru care sistemele relationale sunt atat de populare. De asemenea, acest model asigura independenta aplicatiilor fata de structura datelor, datorita simplificarii structurii logice.
In momentul de fata, modelul relational este modelul dominant de reprezentare a datelor si baza pentru cele mai cunoscute sisteme de gestiune a bazelor de date de tip relational (Ingres, DB2, INFORMIX, Oracle, MS Access, SQL Server, MySQL, PostgreSQL, Sybase).
Modelul orientat pe obiect defineste orice entitate din lumea reala prin intermediul unor structuri de date independente, care contin colectii de proprietati. Acest model de date utilizeaza concepte din programarea orientata pe obiect, precum: clasa, obiectul, abstractizarea, incapsularea, mostenirea sau polimorfismul.
Un obiect poate fi definit si intretinut independent de alte structuri asemanatoare si incapsuleaza atat starea (atributele), cat si comportamentul (ansamblul metodelor pe care le poate realiza).
Exista o serie de similitudini intre conceptele utilizate in bazele de date relationale si cele orientate pe obiect. De exemplu, tabelul dintr-o baza de date relationala este asemanator unei clase dintr-o baza de date orientata pe obiect. In acelasi fel, pot fi stabilite asemanari intre tupluri si instantele claselor sau intre coloanele unei relatii si atribute.
Conceptele de baza ale modelului orientat pe obiect au fost formulate si standardizate de catre Object Data Management Group, incepand cu anii ‘90. Modelul orientat pe obiect este utilizat si in domeniul bazelor de date, unde reprezinta baza pentru o serie de sisteme de gestiune a bazelor de date orientate pe obiect (OODBMS): Objectivity/DB, db4o, ObjectStore, O2, Caché, GemStone/S, Facets, Matisse, ObjectDB.
Bazele de date orientate pe obiect sunt utilizate cu precadere pentru reprezentarea datelor complexe, in domenii precum: proiectare asistata de calculator, telecomunicatii, biologie moleculara sau genetica. Un beneficiu important al utilizarii sistemelor orientate pe obiect il constituie unificarea dezvoltarii aplicatiilor si bazelor de date, prin intermediul unui model de date.
Componentele unui sistem de baze de date
Principalele componente ale unui sistem de baze de date sunt colectiile de date, denumite si baze de date, si seturile de programe necesare pentru a accesa aceste date (sistem de gestiune a bazelor de date).
Structura unui sistem de baze de date include urmatoarele componente:
• baze de date: colectii de date interconectate;
• sistem de gestiune a bazelor de date (SGBD): software care permite administrarea si controlul accesului la bazele de date;
• aplicatii: programe care interactioneaza cu bazele de date in timpul executiei;
• utilizatori: administratori de baze de date, utilizatori finali, programatori de aplicatii.
O baza de date este o colectie de date interconectate, cu redundanta controlata, care reprezinta o serie de aspecte ale lumii reale si care este proiectata, construita si populata cu date cu un anumit scop.
Sistemele de gestiune a bazelor de date sunt colectii de programe, care permit gestionarea bazelor de date prin definirea structurilor necesare pentru stocarea datelor si prin asigurarea mecanismelor de manipulare a acestora.
Toate cererile dinspre utilizatori spre bazele de date sunt tratate de catre sistemul de gestiune a bazelor de date. Acesta primeste cererile de la aplicatii, le translateaza in operatii complexe, executa operatiile corespunzatoare si returneaza rezultatul. Sistemul de gestiune a bazelor de date asigura interfata intre bazele de date si utilizatorii acestora.
Cateva dintre avantajele utilizarii sistemelor de gestiune a bazelor de date sunt:
• independenta datelor: aplicatiile cu baze de date nu tin seama de modalitatea de reprezentare a datelor si de suportul de stocare;
• securitatea si integritatea datelor: facilitatile de autorizare ale sistemului de gestiune a bazelor de date ofera un mecanism puternic de control al accesului; integritatea datelor se refera la corectitudinea datelor incarcate si manipulate, astfel incat sa respecte conditiile de integritate impuse bazelor de date;
• accesarea eficienta a datelor: sistemul de gestiune ofera stocare eficienta, mecanisme de refacere a datelor, suport pentru fisiere de mari dimensiuni, optimizarea interogarilor si structuri de date indexabile;
• reducerea timpului necesar pentru dezvoltarea aplicatiilor cu baze de date;
• administrarea datelor: se ofera o modalitate comuna de tratare a colectiilor de obiecte, in cazul in care acestea sunt accesate in comun de mai multi utilizatori; permit utilizatorilor sa creeze noi baze de date si sa specifice scheme pentru acestea, utilizand limbaje specializate pentru definirea datelor;
• concurenta: se realizeaza prin intermediul tranzactiilor si permite executia concurenta a programelor utilizator asupra unei baze de date partajate.
Utilizatorii unui sistem de gestiune a bazelor de date pot fi clasificati in trei categorii:
• administratori de baze de date (DBA): responsabili cu gestionarea resurselor, proiectarea si implementarea bazelor de date; acorda utilizatorilor drepturi de acces si asigura securitatea datelor;
• programatori de aplicatii: dezvolta aplicatii cu baze de date folosind limbaje de programare sau biblioteci specializate care permit lucrul cu baze de date;
• utilizatori finali: acceseaza bazele de date prin intermediul unor aplicatii.
Un sistem de gestiune a bazelor de date integreaza limbaje specifice pentru descrierea si manipularea datelor; se permite astfel accesul la date al utilizatorilor prin intermediul unor limbaje de nivel inalt, apropiate de modul obisnuit de exprimare. Din acest punct de vedere, un sistem de gestiune a bazelor de date contine doua tipuri de limbaje:
• limbaj pentru definirea datelor (DDL: Data Definition Language);
• limbaj pentru manipularea datelor (DML: Data Manipulation Language).
Limbajul de definire a datelor (DDL) descrie structurile si componentele unei baze de date, relatiile dintre componente, constrangerile asupra datelor. Cu alte cuvinte, limbajul de definire a datelor specifica structurile de stocare a datelor.
Limbajul de manipulare a datelor (DML) permite operatii asupra datelor stocate in tabelele bazelor de date. Pot fi definite operatii de inserare, stergere, modificare sau cautare a elementelor, realizarea de statistici asupra datelor.
Tipuri de sisteme de baze de date
Clasificarea sistemelor de gestiune a bazelor de date poate fi realizata pe baza urmatoarelor criterii:
• numar de utilizatori;
• model de date utilizat pentru realizarea bazelor de date;
• numar de statii pe care este stocata baza de date.
Dupa numarul de utilizatori, sistemele de gestiune a bazelor de date pot fi clasificate in doua categorii:
• sisteme monoutilizator: permit accesul unui singur utilizator la un moment dat;
• sisteme multiutilizator: permit accesul concurent al mai multor utilizatori la bazele de date; in mod uzual, implementarea sistemelor multiutilizator se realizeaza prin intermediul arhitecturii client-server.
Evolutia sistemelor de gestiune a bazelor de date a fost influentata, in special, de modul de reprezentare a datelor. In functie de modelul de date, sistemele de gestiune a bazelor de date pot fi clasificate dupa cum urmeaza:
• sisteme ierarhice;
• sisteme retea;
• sisteme relationale;
• sisteme orientate pe obiect;
• sisteme relational-obiectuale.
Dupa numarul de statii pe care este stocata baza de date, sistemele de gestiune a bazelor de date pot fi clasificate astfel:
• sisteme centralizate;
• sisteme distribuite.
Un sistem de gestiune a bazelor de date centralizat stocheaza toate datele pe o singura statie, numita server de baze de date. Utilizatori multipli pot accesa simultan un sistem centralizat prin intermediul arhitecturii client-server.
Intr-un sistem distribuit, o baza de date poate fi stocata pe mai multe statii dintr-o retea de calculatoare, indiferent daca ele se gasesc la aceiasi locatie sau sunt dispersate geografic. O baza de date distribuita este un set de baze de date stocate pe mai multe statii, care apar in aplicatii ca o singura baza de date. Bazele de date distribuite sunt controlate prin intermediul unei baze de date centrale. Aceasta are rol in sincronizarea periodica a bazelor de date distribuite, pentru a se pastra consistenta datelor.
Un sistem de gestiune a bazelor de date distribuit este un set de programe care permite gestionarea unei baze de date distribuite si face ca distribuirea sa fie transparenta pentru utilizatori (acestia nu trebuie sa stie unde sunt stocate fizic datele). Proiectarea unei baze de date distribuite necesita rezolvarea unor probleme complexe, precum: transparenta, gestionarea tranzactiilor, fragmentarea datelor si replicarea.