Creeaza.com - informatii profesionale despre


Cunostinta va deschide lumea intelepciunii - Referate profesionale unice
Acasa » scoala » informatica » sql
TEORIA STRUCTURILOR DE DATE SI APARITIA SQL

TEORIA STRUCTURILOR DE DATE SI APARITIA SQL


TEORIA STRUCTURILOR DE DATE SI APARITIA SQL

Punctul culminant al teoriei structurilor de date a fost atins in momentul definirii conceptului de baze de date relationale. Acesta descrie metode de modelare a problemelor reale in scopul definirii unor structuri care sa elimine redundantele in stocarea datelor si sa permita cu usurinta modificari cerute de evolutia problemei reale.

Cu aceasta ocazie, sunt identificate operatiile comune efectuate de marea majoritate a aplicatiilor, fapt care ii indreptateste pe teoreticieni sa puna bazele unui limbaj accesibil oricui si care sa permita implementarea cu usurinta a tuturor metodelor de lucru intalnite in aplicatiile ce necesita baze de date.

Definirea lui, s-a facut doar la nivel teoretic, implementarea fiind lasata in sarcina companiilor ce dezvolta motoare de baze de date. Acest limbaj a fost denumit SQL si este implementat de toate motoarele existente in prezent.

Avantajul principal al acestui limbaj s-a dorit sa fie simplitatea. Spre deosebire de un adevarat limbaj de programare ce necesita invatarea unor sintaxe stricte si usor de confundat, SQL are o sintaxa foarte apropiata de limbajul uman natural, usor de inteles si de utilizat.

O fraza in acest limbaj trebuie sa fie lizibila pentru oricine cunoaste cele cateva cuvinte din limba engleza care compun vocabularul SQL: SELECT, FROM, WHERE, ORDER BY etc.



Complexitatea sistemului care implementeaza algoritmii necesari lucrului efectiv cu datele, metodele de stocare, cautare etc., precum si optimizarile sunt perfect transparente pentru utilizator.

Sunt necesare cunostinte minime de calculator pentru utilizarea SQL; acesta este de fapt si idealul urmarit de marile firme producatoare de motoare de baze de date: comercializarea unui sistem complex care sa permita implementarea oricarei baze de date; datele se pot apoi manipula doar cu ajutorul utilitarelor anexate sistemului, fara a mai fi nevoie de scrierea de aplicatii specifice.


Fig. 3.1 Independenta aplicatiei fata de baza de date.

Al doilea mare avantaj il constituie portabilitatea. O aplicatie utilizeaza o baza de date prin intermediul acestor fraze SQL care nu sunt altceva decat simplu text. Orice motor de baze de date accepta astfel de fraze, facand posibila migrarea unei aplicatii de pe un motor pe altul mai performant fara nici o modificare. Faptul ca SQL este un standard unanim recunoscut, confera un mare avantaj aplicatiilor care isi pot alege oricand pe ce sistem sa ruleze.

In ciuda tuturor acestor avantaje prezentate mai sus, bazele de date raman in continuare o zona deosebit de complexa si pretentioasa a dezvoltarii de software. Cu toate avantajele sistemelor integrate oferite de marile firme, utilizatorii au deseori nevoie de aplicatii specifice domeniului lor de activitate.

De multe ori firmele producatoare de software prefera sa implementeze propriul motor de baze de date, in ciuda volumului de munca implicat. Aceasta ar fi de asteptat in cazul aplicatiilor ce nu necesita stocarea unui volum mare de informatii, dar este in special cazul firmelor producatoare de jocuri, care manipuleaza un volum de informatii adeseori mai mare decat multe dintre aplicatiile de gestiune si contabilitate, avand in acelasi timp standarde mult mai ridicate in privinta necesarului de memorie si a vitezei de raspuns.

De ce aceste firme evita standardele acceptate de producatorii bazelor de date si de ce reusesc intotdeauna sa atinga performante mai ridicate?

Sa privim inca o data, mai cu atentie, la avantajele oferite de "clasicii" bazelor de date si in special de SQL.

Sa luam spre exemplu usurinta in utilizare. Limbajul foarte apropiat de cel natural necesita minime cunostinte de calculator pentru a folosi o baza de date prin intermediul SQL. In realitate nu exista nici o aplicatie care sa prezinte o interfata SQL utilizatorului neprofesionist.

Exista foarte multe programe care folosesc baze de date ce suporta SQL, dar nici unul dintre ele nu prezinta o consola pentru comenzi directe. O interfata vizuala, oricat de limitata ar fi, este cu mult mai usor de folosit decat limbajul SQL.

Nici o firma ce dezvolta software nu isi permite sa-si oblige clientii (dintre care marea majoritate sunt slab familiarizati cu calculatorul) sa invete un limbaj a carui insusire ar necesita cel putin un an de pregatire.

Trebuie sa remarcam faptul ca oricat de intuitiva ar fi sintaxa unui limbaj, tehnicile de utilizare a acestuia sunt cu mult mai importante, iar acestea se deprind prin exercitii indelungate. Invatarea si utilizarea acestui limbaj revine in exclusivitate programatorului, care este insa deprins cu limbaje mult mai apropiate de masina, astfel incat mare parte din tehnica de utilizare SQL se concentreaza asupra modului de a transforma o cerere din limbajul calculatorului (aflat la indemana programatorului) in limbajul SQL, pentru a o transmite apoi interpretorului care sa o inteleaga si sa o transforme inapoi in limbajul calculatorului.

Fig. 3.2 Fluxul de executie a cererilor intr-un sistem bazat pe SQL

Mai mult decat atat, asa-zisa similaritate cu limbajul natural uman nu se concretizeaza decat intr-un numar restrans de cuvinte cheie, gandite initial ca fiind suficiente pentru realizarea oricarei operatii. Realitatea a dovedit ca pentru prelucrarea datelor sunt necesare multe alte functii - care au fost implementate ulterior -, astfel incat restul limbajului contine denumiri si sintaxe la fel de criptice ca in orice alt limbaj de programare.

Desi a devenit tot mai evident ca marea majoritate a utilizatorilor de SQL sunt programatorii, eforturile au continuat sa se indrepte mai degraba spre a dezvolta limbajul SQL decat spre crea o interfata mai usor de accesat in mod programatic.

Sa privim cel de-al doilea avantaj major al SQL: generalitatea si portabilitatea. Standardizarea a fost intotdeauna o sursa de progres; stabilirea unui limbaj comun a permis producatorilor din intreaga lume sa isi sumeze eforturile si sa isi bazeze munca pe rezultatele anterioare.

In realitate, SQL constituie un standard doar in forma teoretica, descrisa cu multi ani in urma. O data cu avansul tehnologic, setul de facilitati oferite de SQL a devenit rapid insuficient. Firmele ce implementeaza motoare de baze de date au pus la dispozitia clientilor noi functii si extensii ale SQL, care permit o utilizare mai eficienta dar care nu mai sunt standardizate. Mai exact spus, componenta SQL denumita limbajul de definire a datelor (DDL) a ramas aproape neschimbata, dar limbajul de manipulare a datelor (DML) a suferit modificari substantiale.

DDL nu a putut fi modificat, deoarece reprezinta punerea in practica a insasi teoriei bazelor de date relationale. Nu acelasi lucru se poate spune insa despre DML. Metodele in care datele pot fi prelucrate sunt de o varietate infinita si nu au putut fi grupate intr-un set de functii comune, fiecare aplicatie avand cerinte specifice.

Insa SQL, reprezenta singura metoda de interogare a bazelor de date, astfel incat a fost obligatorie implementarea multor functii, oricat de rar folosite ar fi fost.
Aceste noi functii inventate pentru a satisface cele mai variate necesitati, de la simple conversii intre tipuri de date pana la medii geometrice, radicali, logaritmi sau cautari de siruri, nu au mai reprezentat un standard. Au inceput prin a fi extensii venite sa imbogateasca limbajul de baza si sa usureze munca utilizatorului, dar au devenit curand absolut indispensabile si au fost implementate de toate sistemele.

Astfel, toate companiile ce dezvolta motoare de baze de date implementeaza aceleasi functii, dar sub denumiri si cu sintaxe diferite.

SQL a ramas portabil la nivelul sau primar si, teoretic, este inca posibila portarea unei aplicatii de pe un motor pe altul fara mari modificari. Pentru aceasta, trebuie insa facute eforturi pentru evitarea utilizarii oricarei facilitati oferite de un anumit sistem, daca aceasta nu este implementata si pe celelalte.

Aceasta misiune este insa dificila si are ca rezultat o aplicatie ce nu beneficiaza niciodata de ultimele tehnologii; in aceste conditii producatorii de soft prefera sa renunte la portabilitate.

Tot pentru a ramane credincios ideii de portabilitate, SQL a ales cea mai elementara metoda de transmisie a cererilor: formatul text. In ciuda faptului ca nu este economic din punct de vedere al informatiei (contine multa informatie redundanta), a fost ales acest format deoarece este cel mai simplu de interpretat de catre orice sistem de operare.

S-a pierdut insa din vedere faptul ca transmiterea inversa de date (aducerea rezultatelor) contine de multe ori informatii ce nu se pot reprezenta in format text, astfel incat canalul de comunicatie deschis intre aplicatie si motorul de baze de date, trebuie sa fie mult mai complex.

Exista si alte dezavantaje majore ale SQL, unul dintre ele fiind viteza mult redusa. Cauza principala a pierderii de viteza este interpretorul SQL, care are misiunea de a transforma o fraza dintr-un limbaj apropiat de cel uman in cel al calculatorului, verificand si semnaland eventualele erori de sintaxa. Performantele slabe din punct de vedere al vitezei, au ingreunat mult manipularea datelor din cadrul aplicatiei.

Cu alte cuvinte, nu mai este posibila utilizarea bazei de date pentru stocarea si regasirea informatiilor, urmand ca prelucrarea lor sa se faca din cadrul aplicatiei. A devenit necesara prelucrarea datelor in interiorul motorului de baze de date, prin introducerea conceptului de proceduri stocate. Acestea sunt scrise intr-un limbaj derivat din SQL si sunt stocate impreuna in interiorul bazei de date.

Noul limbaj seamana mai putin cu SQL si mai mult cu un limbaj de programare obisnuit, cu instructiuni conditionale si repetitive, sacrificand ideea initiala de simplitate. Fireste, nu se mai pune problema utilizarii unui astfel de limbaj de catre un client al carui domeniu de activitate este altul decat informatica.

De asemenea, e de la sine inteles ca exista multiple variante - foarte diferite - ale acestui limbaj, nimeni neconformandu-se unui standard. Mai mult, sistemele bazate pe SQL sunt incetinite cu mult de procedurile de interpretare a sintaxei comenzilor si de conversia datelor in formate incomode pentru calculator, dar cerute de limbaj.

Implementarea SQL impune crearea mai multor module, iar un motor de baze de date este cu atat mai mare, mai lent si mai costisitor cu cat ofera mai multe facilitati. Din aceste cauze, motoarele de baze de date existente nu reprezinta o solutie pentru aplicatiile cu pretentii asupra vitezei de executie, spatiului ocupat pe hard-disk, pretului de vanzare sau asupra dependentei fata de versiunea sistemului de operare.





Politica de confidentialitate


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.