|
Prezentare generala a bazelor de date
1.1.1. Evolutia bazelor de date
In perioada anilor 1950-1960, mari companii ca IBM, General Electric si Honeywell au inceput dezvoltarea conceptului de baze de date. Acestea trebuiau sa permita accesul mai multor utilizatori simultan la informatii.
Realizatorii limbajului COBOL au inceput prin implementarea, in cadrul unui departament DATA DIVISION, rutine care sa lucreze cu baze de date sau sa permita definirea de noi tipuri de date ce pot sa acceseze datele si sa le actualizeze.
1.1.2. Fundamentarea modelor ierarhice si retea pentru bazele de date
In 1969 Data Base Task Group defineste Data Description Language (DLL) si Data Manipulation Language (DML) ce permit lucrul cu baze de date si fundamenteaza inceputurile managementului bazelor de date in retele. Utilitatea dezvoltarii de baze de date a fost confirmata cu ocazia programului spatial de explorare de pe Luna: Apollo. Aici s-a folosit o prima baza de date ce folosea conceptul de management de sistem ierarhic ce a fost implementat in cadrul Information Management System (IMS) dezvoltat de IBM. Ideea partajarii in retea si in timp a resurselor a fost introdusa de catre compania System Development Corporation in cadrul produsului Time-Shared Database Management System.
Modelul relational a fost introdus in ani 1970 de catre E. Codd si rezolva o parte din problemele primelor baze de date oferindu-le o mult mai mare flexibilitate.
Limbajul de interogare relational ca Structure Query Language (SQL) este mult mai declarativ decat primele limbaje navigationale. Cu SQL utilizatorii trebuie sa specifice numai ce doresc sa obtina de la baza de date si nu cum se obtine acea informatie. Modelul relational este in general simplu si elegant in utilizare bazandu-se pe o teorie matematica bine fundamentata si usor de inteles ce foloseste algebra relationala si calculul predicatelor de prim ordin.
Algebra relationala consta intr-un numar redus de seturi de operatii: reuniuni, intersectii, diferente, produs cartezian, selectii si proiectii.
Cel mai mare succes comercial cu acest tip de baze de date l-a avut firma IBM cu produsul DB2 ce a avut ca rezultat si impunerea si standardizarea dialectului SQL. Alti producatori de baze de date relationale sunt: Informix Corporation, OracleCorporation, Sybase Inc., Microsoft Corporation, Borland International.
Modele semantice si functionale - sistemele de baze de date ce au aparut ulterior bazelor de date relationale s-au bazat o modelare semantica a datelor, motivarea acestui tip de modelare a constat in modelarea intr-un mod cat mai apropiat de lumea reala apropiindu-se de modelarea orientata pe obiecte.
Cel mai popular mod de exprimare semantica a datelor a fost introdus de Chen in 1976 prin faimosul mod ER (Entity-Relationship - entitate-relatie) unde o entitate este un obiect sau un lucru care exista si care este distinct fata de alte obiecte. Entitatea este descrisa prin atribute sau proprietati. In termenii constructiei unei baze de date, entitatile sunt inregistrari clasice in baza de date plus atribute ale acestora ce sunt reprezentate ca si campuri ale acestor inregistrari. O schema (structura) a unei baze de date se proiecteaza pornind de la un model ER.
O schema semantica este mapata in general peste o schema relationala folosind un limbaj de definire a datelor (DDL) sau un limbaj relational (SQL). Ulterior conceptul de descriere semantica a datelor a fost dezvoltat in cadrul bazelor de date orientate pe obiecte care introduce conceptul de abstractizare a obiectelor, proprietati de mostenire si interfete ale unui tip ce sunt independente de implementare.
Au fost propuse mai multe modele, cel mai cunoscut fiind modelul DAPLEX dezvoltat de Shipman in 1981, acesta trateaza atributele ca si functii, iar valorile operatiei de cautare sunt obtinute prin aplicarea acestor functii entitatilor. Sub conceptul acestui model au fost dezvoltate doua sisteme comerciale : SIM dezvoltat de Unix si OpenODB dezvoltat de Hewlett-Packard.
Modele relationale extinse sau modele obiect-relationale - ca prim pas de trecere la bazele de date orientate pe obiecte au fost bazele obiect-relationale care incorporeaza cateva din caracteristicile acestora. Proprietatile incluse sunt: introducerea tipului de date abstracte, mostenirea, identitatea obiectelor, posibilitatea de a include structuri sau proceduri in interfata de programare a bazei de date. Rezultatul a fost extinderea facilitatilor multimedia oferite de o baza de date. Sunt posibile in acest mod de organizare a informatiei sa fie inregistrate tipuri de date cum ar fi sunetele, imaginile prin asigurarea suportului pentru memorarea unor date de mari dimensiuni (BLOB) si reduse posibilitati de cautare a datelor dupa continut.
Propunerile concrete de astfel de sisteme au fost facute de catre Stonebraker, Rowe si Hiohama in cadrul sistemului POSTGRES in 1990. O continuare a extinderii modelului obiect-relational a fost realizata de catre Khoshafian in 1991 prin sistemul Intelligent SQL .
Implementarile comerciale sunt Illustra, UniSQL si Matisse. Proprietatile incluse sunt: introducerea tipului de date abstracte, mostenirea, identitatea obiectelor, posibilitatea de a include structuri sau proceduri in interfata de programare a bazei de date. Aceste proprietati au fost incluse ca si dezvoltare a limbajului SQL in cadrul limbajului variantei SQL3.
Modele relationale plate (Nested relational) - in spatiul obiectelor, modelele relationale sunt constituite dintr-o colectie de tabele plate bidimensionale. Fiecare tabel poate fi considerat ca o multime de randuri, coloanele fiecarui rand pot fi considerate ca fiind instante ale tipurilor atomice de baza - intregi, numere in virgula flotanta, siruri de caractere, etc.
Un tabel plat este cunoscut ca fiind primul form normal. Modelele de obiecte complexe incearca sa relaxeze, sa slabeasca restrictiile impuse de primul form normal, mentinandu-se in limitele impuse de solida fundamentatie matematica ce exista in modelul relational.
Cu un model relational plat utilizatorii vor avea o "relatie" (multime de tuples) descrisa de atribute si reprezentari ale acestora inregistrate in baza de date. Modelele relationale nested sunt reprezentate de doua importante propuneri. In 1983 a fost propus de catre Bancilhon un prim model de baze de date relationale nested denumit VERSO.
Cel de-al doilea model propus a fost cel oferit de catre Schek and Scholl in 1986.
Mai general bazele de date ce folosesc modele de obiecte complexe se bazeaza pe constructia obiectelor intr-un spatiu ce are la baza o colectie de tipuri atomice de baza si folosind doi constructori de obiecte: multimile si "tuples", model prezentat in 1989 de catre Khoshafian. Modelele post-relationale bazate pe obiecte complexe mentionate mai sus au permis o structurare a spatiului obiectelor numai sub forma de arbore. Nu a fost permis ca acelasi obiect sa aiba de exemplu parinti multiplii, deci nu suporta un spatiu al obiectelor structurat sub forma de graf. Pentru a avea aceasta abilitate, modelele bazate pe obiecte trebuie sa suporte conceptul de identitate a obiectului propus de Khoshafian.
Baza de date comerciala implementata pe baza acestor concepte este: Franco-Armenian Data Language (FAD) implementat de consortiul de certare Microelectronic and Computer Corporation (MCC) din Austin, Texas.
Pasul spre noua generatie de baze de date ce au aparut a fost dat de catre Show si Zdonik prin introducerea fundamentelor algebrice necesare dezvoltarii bazelor de date orientate pe obiecte. Continuarea si implementarea acestor fundamente matematice in cadrul bazelor de date, in special a modului de interogare a unei baze de date a fost realizata de catre Straube si Ozsu prin orientarea accentuata a cercetarilor inspre bazele de date orientate pe obiecte.
Baze de date orientate pe obiecte au aparut ca variante comerciale dupa 1986, cele mai cunoscute sunt GemStone de la ServioLogic, Gbase de la Graphael si Vbase de la Ontos. Urmatorii ani au fost caracterizati de o dezvoltare impresionanta a aplicatiilor bazate pe orientarea pe obiecte: SIM de la Unisys, Versant de la Versant Object Technology, ObjectStore de la Object Design Inc. si altele.
Bazele de date orientate pe obiecte isi dovedesc performantele in aplicatiile de genul proiectare asistata de calculator (CAD), fabricare asistata de calculator (CAM), ingineria programarii asistata de calculator (CASE), sisteme informationale de birou (OIS), sisteme multimedia, editare digitala si sistemele informationale geografice (GIS), ca si aplicatiile cu obiecte complexe intercorelate si cu date procedurale.
1.1.3. Prezentarea Sistemelor de Gestiune a Bazelor de Date Relationale
Un Sistem de Gestiune a Bazelor de Date Relationale =SGBDR este un instrument esential in numeroase medii, de la utilizarile mai traditionale in contexte de afaceri, cercetare si invatamant si pana la aplicatiile mai recente, cum ar fi aceea a motoarelor de cautare prin Internet.
Din punct de vedere istoric, sistemele de baze de date au constituit o propunere costisitoare, firmele distribuitoare percepand onorarii substantiale, atat pentru program cat si pentru asistenta necesara, iar deoarece motoarele de baze de date prezentau frecvent cerinte hardware substantiale pentru a putea rula cu performante cat de cat rezonabile, costurile erau mari.
In anii din urma, situatia s-a schimbat, atat din punct de vedere al echipamentelor, cat si din acela al programelor. Calculatoarele personale au devenit puternice dar necostisitoare, pe de alta parte a aparut o intreaga miscare (Open Source) in directia scrierii unor sisteme de operare (Linux, FreeBSD, si altele) cu performante ridicate pentru aceste calculatoare, sisteme disponibile la pretul unui compact disc ieftin, sau chiar gratuit, prin Internet.
Productia de sisteme de operare gratuite care sa permita utilizarea calculatoarelor personale la maximum de capacitate s-a desfasurat in mod concertat cu dezvoltarea unor instrumente disponibile gratuit, cum ar fi gcc, compilatorul GNU de C, fiind in mare masura posibila datorita acestora din urma. Acest eforturi de a pune programele la dispozitia oricarui doritor au avut ca rezultat ceea ce se numeste acum miscarea Open Source si au generat multe programe importante. Apache este cel mai folosit server Web din Internet. Alte succese ale initiativei Open Source sunt limbajul de scripting de uz general Perl si PHP, un limbaj a carui popularitate este intr-o crestere rapida datorita usurintei cu care permite scrierea paginilor Web dinamice.
Programele de baze de date au devenit si ele mai accesibile. Sistemele de baze de date precum Postgres si mSQL au devenit disponibile gratuit sau la un pret scazut. Mai recent, producatorii comerciali precum Informix si Oracle, au inceput sa-si ofere programele gratuit pentru sisteme de operare precum Linux.
Limbajul SQL (Structured Query Language) este limbajul declarativ cel mai utilizat la interogarea bazelor de date relationale. El respecta in mare masura specificatiile algebrei relationale.
El cuprinde un set redus de instructiuni care insa sunt suficiente pentru:
-crearea, modificarea si stergerea elementelor unei baze de date: tabele, vederi si indecsi;
-adaugarea, modificarea si stergerea inregistrarilor din tabele;
-interogarea bazei de date prin intrebari structurate;
-comenzi de securizare, control al accesului concurent si asigurarea integritatii.
Toate informatiile referitoare la o baza de date se retin in tabele sistem: definitii de tabele si vederi, definitii de campuri din tabele, fisiere index, informatii de acces, etc.
Limbajul SQL fiind un limbaj declarativ nu permite implementarea unor algoritmi de prelucrare care sa parcurga inregistrarile intr-o anumita secventa. Din acest motiv toate implementarile practice combina limbajul SQL cu un limbaj procedural sau functional.
Limbajul SQL standard defineste mai multe tipuri de interogari:
-pentru crearea structurii bazei de date: CREATE DATABASE, CREATE TABLE, CREATE VIEW, DROP TABLE, DROP VIEW, ALTER TABLE etc.
-pentru gestionarea bazei de date: START DATABASE, STOP DATABASE, GRANT, REVOKE PRIVILEGE, SET TRANSACTION, ROLLBACK, COMMIT etc,
-pentru gestionarea inregistrarilor: INSERT, DELETE, UPDATE.
-pentru cautari sau interogari de date: SELECT.
Microsoft Access
Microsoft Access este una din cele mai populare baze de date relationale, fiind raspandita in general la utilizatori ce folosesc baze de date de dimensiuni relativ reduse cu un numar mic de utilizatori. Microsoft i-a creat un mediu de dezvoltare integrat cu scopul de a inlatura chinurile invatarii si gestionarii bazelor de date.
Posibilitatea implementarii in programele de gestiune a bazelor de date Access prin integrare Visual Basic asigura acestuia putere si flexibilitate in crearea interfatarii cu utilizatorii . Sistemul este usor de folosit dar este limitat in ceea ce priveste dimensiunile bazelor de date si al vitezei de lucru.
O aplicatie Microsoft Access este formata din urmatoarele tipuri de obiecte: tabele, module de interogare, formurile, rapoartele, macrourile si modulele, ce sunt legate impreuna in mod coerent. La baza acestei baze de date se afla Visual Basic.
Avantajele acestor aplicatii, apreciate pe deplin de utilizatori, sunt legate de usurinta de implementare a formurilor si a rapoartelor. Setarea proprietatilor obiectelor se realizeaza intr-un mod placut, folosind din plin facilitatile oferite de interfata grafica. Utilizatorul beneficiaza de o serie de automatizari, ce sporesc viteza de implementare, prin verificarile realizate in mod automat pentru starile in care se pot afla obiectele, executia mai multor proceduri la aparitia unui eveniment si dialogarea cu sistemul de operare pentru capturarea erorilor datorate unui esec in comunicarea cu perifericele sau din cauza epuizarii resurselor sistemului.
Se pot personaliza o serie de elemente, un exemplu de personalizare a raspunsului la un eveniment este executia unui macro sau a unei proceduri eveniment (procedura Visual Basic ce se ataseaza unui form, raport sau unui element de control).
Functionalitatea bazei de date poate fi extinsa prin folosirea de librarii externe Visual Basic. Librariile unei baze de date sunt colectii de proceduri si obiecte ce pot fi chemate din orice aplicatie. Se pot utiliza in scopul de a stoca unele rutine de program pe care dorim sa le folosim si la alte aplicatii.
Baza de date poate fi accesata de mai multi utilizatori simultan prin intermediul unei retele, administratorul bazei de date avand suficiente unelte de gestionare a drepturilor pentru fiecare utilizator in parte.
Limbajul QBE a fost dezvoltat initial de catre IBM, in anii 1970, pentru a ajuta utilizatorii in regasirea informatiilor din bazele de date. Succesul limbajului QBE a fost atat de mare, incat aceasta facilitate este furnizata - intr-o forma sau alta - de catre cele mai populare sisteme SGDB, inclusiv Microsoft Access. Facilitatea Access QBE este usor de utilizat si are capacitati foarte puternice.
Limbajul QBE reprezinta un mod de tratare virtual, pentru accesarea informatiilor dintr-o baza de date, prin utilizarea sabloanelor de interogare. Se utilizeaza limbajul QBE introducand exemple de valori direct intr-un sablon de interogare, pentru a reprezenta ce se va obtine prin accesul la baza de date - cum ar fi raspunsul la o interogare.
Limbajul QBE poate fi utilizat pentru a pune intrebari referitoare la informatiile continute in unul sau mai multe tabele si pentru a specifica campurile care dorim sa apara in raspuns. Se pot selecta inregistrari conform unor criterii specifice sau nespecifice si se pot efectua calcule cu informatiile cuprinse in tabele. De asemenea, limbajul QBE se poate utiliza pentru a efectua operatii utile asupra tabelelor, cum ar fi inserarea si stergerea de inregistrari, modificarea valorilor campurilor sau crearea de noi campuri si tabele. Atunci cand se creeaza o interogare cu ajutorul limbajului QBE, sistemul Microsoft Access construieste in fundal instructiunea din limbajul de integrare structurata SQL
Dezavantajul sistemului Microsoft Access consta in principal in numarul limitat de tipuri de date ce pot fi stocate. Nu permite stocarea de date multimedia si nu poate gestiona fluxuri de date ce sunt apelate de catre utilizatori.
Limbajul Oracle PL-SQL
Limbajul PL-SQL (Procedural Language- Structured Query Language) este o extensie procedurala al limbajului pur selectiv SQL Standard. El a fost creat de firma Oracle pentru a permite accesul si prelucrarea algoritmica a datelor dintr-o baza de date Oracle.
Pentru a studia acest limbaj si pentru a dezvolta aplicatii pe partea de server se poate folosi modulul SQL*Plus care ofera un mod de operare de tip linie de comanda.
Oracle InterMedia poate gestiona date multimedia (sunet, imagini, secvente video) si poate oferi un suport deosebit pentru aplicatiile WWW deoarece asigura o viteza deosebita a tranzactiilor, eficienta, scalabilitate si securitate. Ofera un set de tipuri de obiecte pentru sunete, imagini si secvente video suficiente pentru cele mai populare aplicatii pe Internet, inclusiv formate Web. Aceste tipuri de obiecte pot fi extinse pentru a suporta mai multe aplicatii specifice, de exemplu:
- adaugarea de noi formate;
- noi metode de codare, criptare si decodare, respectiv decriptare;
- noi metode de compresie si decompresie;
- scheme de specifice de indexare;
- metode de optimizare a modului de interogare;
- algoritmi de procesare a datelor;
- noi surse de date.
Oracle InterMedia permite deschiderea unor aplicatii create anterior si care folosesc SQL-ul pentru accesarea obiectelor de tip sunet, imagine si video. Suporta de asemenea cele mai populare servere WEB care sa acceseze baza de date prin Internet.
Moduri de accesare Oracle Intermedia:
Aplicatiile pot accesa Oracle Intermedia folosind ambele interfete: relationala si de tip obiect. Aplicatiile pentru baze de date scrise in Java, C++ sau 3GL pot utiliza Oracle InterMedia prin intermediul unei interfete moderne de librarii de clase sau folosind PL/SQL sau Oracle Call Interface.
Oracle InterMedia ofera o gama larga de utilitare legate de utilizarea obiectelor multimedia prin incarcarea acestora in cadrul unor tabele relationale, cum ar fi:
- Clipboarb (ofera o reducere a volumului de resurse grafice).
- API (application programming interface);
- Database table replication (posibilitati de transferare de date intre baze de date Oracle);
- Annotator (un sistem sofisticat de parsing multimedia InterMedia sunt similare cu clasele din Java si C++, pentru a descrie obiecte de tip sunet, imagine si secvente video. Aceste tipuri de obiecte se numesc ORDAudio, ORDImage si ORDVideo. O instanta a acestor tipuri de obiecte (date) este constituita din atribute, metadata, continutul multimedia si metode. Continutul multimedia este chiar informatia propriu-zisa. Metadata este informatia ce descrie continutul informatiei multimedia cum ar fi: dimensiunea obiectului, modul de compresie, informatii despre realizatorul obiectului, etc. Metodele sunt proceduri ce permit realizarea de diverse operatii cu obiectele, cum ar fi stocarea acestora, extragerea metadatelor, compresia sau convertirea formatului imaginilor.
Aplicatiile folosesc Oracle InterMedia prin adaugarea unei sau a mai multor coloane tabelelor existente sau prin adaugarea de noi tabele care contin informatia. Obiectele multimedia gestionate de Oracle InterMedia (ORDAudio, ORDImage si ORDVideo) folosesc un model comun de stocare. Componenta multimedia a acestor obiecte poate fi stocata controlat in baza de date in BLOBs in timpul operatiei de tranzactie sau poate fi stocata in afara bazei de date fara un control in urma unei tranzactii. Din practica a rezultat in ca multe cazuri este utila stocarea exterioara, deoarece faciliteaza schimburi mai rapide fara transferul efectiv al informatiei primare ci doar a caracteristicilor obiectului.
Metadata aferenta obiectului si metodele sunt intotdeauna memorate in interiorul bazei de date sub controlul Oracle InterMedia. Metadata este gestionata global pentru toate tipurile de obiecte multimedia, iar extragerea acesteia se face automat pentru fiecare tip in parte.
Metadata include:
- informatii despre data stocata: tipul sursei, locatia, nume etc.;
- informatii despre ultima actualizare a informatiei;
- formatul datelor;
- tipul MIME;
- dimensiunea imaginilor, numarul de culori, formatul de reprezentare a culorilor, tipul de compresie etc.
- tipul de codare audio, numarul de canale, rata de esantionare, compresia, durata, descriere;
- dimensiunea cadrului video, rezolutia, rata cadrelor, durata, numarul de cadre, compresia, numarul de culori, descriere, etc.
- tipul aplicatiei ce a creat obiectul, autorul, etc.