Informatica
Proiectarea sistemelor distribuiteProiectarea sistemelor distribuiteUn sistem de prelucrare distribuita a datelor presupune existenta a doua sau mai multor sisteme independente de prelucrare a datelor, numire noduri, interconectate intr-o configuratie de retea. Ele folosesc facilitati de comunicare pentru schimbul de informatii si isi coordoneaza activitatile pentru realizarea unui anumit scop. Cu alte cuvinte un sistem de prelucrare distribuita a datelor permite realizarea activitatii de prelucrare automata a datelor intr-un mediu de retea. Intr-un astfel de mediu, coopereaza trei componente tehnologice distincte: prelucrarea datelor, comunicarea datelor si reteaua de calculatoare. Scopul lor este de a colabora fiecare cu fiecare, astfel incat sa se realizeze obiectivele comune ale organizatiei [1].
Figura 5.7. Model de baza al unui sistem de prelucrare distribuita a datelor. Sistemele de prelucrare distribuita a datelor trebuie sa permita: posibilitatea de prelucrare independenta; o configuratie de retea; o posibilitate de transfer a datelor folosind facilitati de partajare a datelor; un obiectiv comun de realizat. La proiectarea unui sistem nou trebuie sa se defineasca clar obiectivele pe care trebuie sa le indeplineasca noul sistem. Aceste obiective pot fi clasificate in financiare si functionale.Din punct de vedere financiar se urmareste maxim de profit cu minimum de cheltuieli. Din punct de vedere functional, scopul este sa se realizeze un sistem care sa aiba cele mai bune rezultate [1]. Costul sistemului se regaseste in costurile initiale pe procesoare, perifericelor(imprimanta, scanner, etc), cablari, soft-uri, si costuri functionale (operationale) cu distribuirea datelor, cu personalul, intretinerea sistemului, etc. Performanta sistemului este apreciata prin prisma productivitatii si a eficientei lui. Ea se determina in functie de cerintele operationale ale unui sistem de calcul. Se considera ca performanta este o functie a [1]:timpului de raspuns(intervalul de timp dintre momentul formularii unei cereri de la un terminal de comunicatie-date si obtinerea raspunsului in acelasi loc); randamentului(cantitatea de date ce poate fi prelucrata de catre un sistem de calcul intr-o perioada de timp); calitatii serviciilor oferite utilizatorilor(siguranta, fidelitate, integrare, control si acceptabilitate); nivelul serviciilor. Sistemul propus trebuie sa fie fezabil, din punct de vedere tehnic, si eficient, prin prisma costurilor prelucrarii automate a datelor si a comunicatiilor din sistem. Performantele sistemului sunt influentate de mai multi factori, cum ar fi timpul de raspuns, randamentul, disponibilitatea, siguranta(securitatea sistemului). La proiectarea sistemelor distribuite trebuie avute in vedere doua componente majore: Proiectarea nodurilor; Proiectarea retelei de comunicatii. Ordinea de proiectare nu este stricta ramanand la latitudinea echipei de proiectare. Trebuie sa se tina seama de posibilitatea proiectarii, dupa ce anumite etape au fost indeplinite [1]. Figura 5.8. Principalele module de proiectare a sistemelor de prelucrare distribuita a datelor [1] Modele de sisteme distribuiteCalculatoarele personale si statiile de lucru pot fi utilizate fie ca sisteme de-sine-statatoare pentru executia diferitelor aplicatii informatice, fie intr-o configuratie de retea. O retea locala se bazeaza pe un set de calculatoare personale, fiecare cu propria memorie, astfel incat sa poata folosi in comun toate echipamentele si software-ul din retea. Dintre toate calculatoarele, exista unul sau unele mai puternice pe care se vor afla aplicatii folosite in comun de celelalte calculatoare ale retelei. Cea mai utilizata arhitectura este arhitectura client/server. Arhitectura client/server Modelul Client /Server ofera date distribuite, portabilitate intre platforme si un acces standardizat la resurse. Termenul de Client /Server provine de la metoda traditionala de accesare a unui computer central numit server de catre computere aflate la distanta sau clienti intr-o infrastructura de retea. Modelul Client /Server implica o entitate software (clientul) care efectueaza cereri, acestea fiind indeplinite de o alta entitate software(serverul) . Clientul este cel care transmite o cerere severului, acesta o interpreteaza si apoi o efectueaza. Pentru a putea indeplini cererea, serverul poate referi o sursa de informatie (baze de date), sa efectueze procesari asupra datelor, sa controleze periferice sau sa efectueze cereri aditionale altor servere. Un client poate face cereri la multiple servere si un server poate deservi mai multi clienti.
Sursa de informatie (Baza de date) Cerere Procesare (Logica si Aritmetica) Client Server Dispozitive (Imprimanta, periferice partajate) Rezultatul Servicii(Cereri aditionale altor servere) indeplinirii cererii Figura 5.9. O tranzactie Client /Server. Se poate afirma ca tehnologia client / server imparte o aplicatie in trei componente de baza: un client, un server si o retea care conecteaza clientul la server. Atat clientul cat si serverul sunt calculatoare cu grade variate de putere de calcul, ce colaboreaza la indeplinirea sarcinilor. Calculatorul server este responsabil cu administrarea accesului la baza de date, precum si cu alte sarcini care-i revin direct serverului. Cand se alege un server pentru mediul de lucru client / server trebuie avute in vedere: scalabilitatea posibilitatea de crestere a capacitatii serverului, in limite rezonabile; toleranta la erori posibilitatea de recuperare a contextului calculatorului server dupa producerea unei disfunctionalitati hardware; service si asistenta tehnica. Calculatoarele server au utilizari variate in sistemele client / server (exista servere de fisiere care asigura spatiul de disc centralizat care poate fi folosit conform necesitatilor calculatoarelor client din retea; servere de tiparire care colecteaza informatiile ce urmeaza a fi trimise catre imprimanta de catre calculatoarele client si le asigura tiparirea intr-o anumita ordine; servere de baze de date calculatoare care ruleaza un sistem de gestiune a bazelor de date (DBMS), bazat pe SQL; serverele de aplicatii calculatoare server care ruleaza programe mari de aplicatii). Sistemele client-server au aparut ca urmare a descentralizarii activitatii din diverse domenii, ceea ce presupune o repartizare a realizarii sarcinilor pe cele doua nivele: client, server. De obicei clientii reprezinta utilizatorii finali care vor comunica cu serverul bazei de date in cadrul unei retele de calculatoare. Dupa rolul pe care il are fiecare din componentele client, server, se pot distinge trei arhitecturi de baza pentru un sistem client-server (Loomis 1992) si anume: arhitectura de tip server de obiecte in care se distribuie prelucrarea intre cele doua componente (server, client). Serverul este responsabil de administrarea memoriei si zavoarelor, efectuarea operatiilor in memoria secundara, securitatea, integritatea si recuperarea bazei de date, executarea procedurilor stocate si optimizarea interogarilor. Clientul este responsabil de administrarea tranzactiilor si realizarea interfetei cu limbajul de programare; arhitectura de tip server de pagini cea mai mare parte a prelucrarilor este realizata de catre client. Serverul este responsabil de memoria secundara si furnizeaza paginile corespunzator cererilor formulate de client; arhitectura de tip server de baza de date cea mai mare parte din prelucrarile bazei de date este efectuata de catre server. Clientul transmite cererea serverului, primeste rezultatele si le transmite aplicatiei. Este modul utilizat frecvent de catre sistemele relationale. In fiecare dintre cele trei cazuri serverul se gaseste pe aceeasi masina ca si baza de date fizica. Clientul se poate afla pe aceeasi masina sau pe una diferita. In cazul bazelor de date distribuite pe mai multe masini, clientul va comunica cu cate un server de pe fiecare masina. De asemenea mai multi clienti pot comunica concomitent cu acelasi server (accesul concurent). Arhitectura traditionala a sistemelor client-server este o arhitectura pe doua nivele (etaje), in care la primul nivel (clientul) se realizeaza interfata cu utilizatorul si logica principala a aplicatiei, iar la al doilea nivel (serverul) se realizeaza validarea datelor si accesul la baza de date. Necesitatea rezolvarii unor probleme complexe care presupun accesul la baza de date a unui numar mare de utilizatori, utilizarea unor platforme hard-soft diferite, precum si integrarea bazelor de date in mediul Web, au impus definirea unei noi arhitecturi client-server in care sunt definite trei nivele si anume:
nivelul client, la care se realizeaza interfata cu utilizatorul aplicatiei; nivelul server de aplicatie, la care se realizeaza logica aplicatiei si prelucrarii datelor; nivelul server de baze de date, la care se realizeaza validarea datelor si accesul la baza de date. Un server de aplicatie poate servi mai multi clienti, fiind conectat fizic atat la nivelul client cat si la nivelul server de baze de date. Spre exemplu in mediul Web, clientul poate fi un browser Web, iar serverul de aplicatie poate fi un server Web. Problema rezolvataSe considera baza de date FurnizoriClienti care contine urmatoarele tabele (in ACCESS):PRODUSE (catalog de produse)
STOCURI (stocurile de produse pe depozite)
FURNIZORI (catalog de furnizori)
CLIENTI (catalog de clienti)
OFERTE (oferte de produse de la furnizori)
VANZARI (vanzarile de produse pe clienti)
Sa se scrie comenzile SQL pentru realizarea interogarilor de mai jos:a) Situatia stocurilor
b)Situatia ofertelor
c) Situatia vanzarilor
d) Lista produselor pentru care nu exista oferte
e) Lista produselor pentru care nu s-au facut vanzari in perioada [Data1,Data2]
Raspuns: a) SELECT CodDep, Stocuri.Codp, Denp, Ump, Cant, Pret, Cant*Pret AS Valoare FROM Stocuri, Produse WHERE Stocuri.Codp = Produse.Codp b) SELECT Oferte.Codf, Denf, Adresaf, Oferte.Codp, Denp, Ump, Pret, Datao FROM Oferte, Produse,Furnizori WHERE Oferte.Codp = Produse.Codp AND Oferte.Codf = Furizori.Codf c) SELECT Vanzari.Codc, Denc, Adresac, Vanzari.Codp, Denp, Ump,Cant, Pret, Cant*Pret AS Valoare, Datav FROM Vanzari, Produse,Clienti WHERE Vanzari.Codp = Produse.Codp AND Vanzari.Codc = Clienti.Codc d) SELECT * FROM Produse WHERE NOT EXISTS (SELECT * FROM Oferte WHERE Produse.Codp=Oferte.Codp) e) SELECT * FROM Produse WHERE NOT EXISTS (SELECT * FROM Vanzari WHERE Produse.Codp=Vanzari.Codp AND Datav BETWEEN Data1 AND Data2)
|