Rolul serverului într-o arhitectură client-server cu două niveluri. Operatori logici SQL. Construire eficientă a interogărilor

Indiferent de modul în care este definit conceptul de arhitectură client-server (și există multe astfel de definiții în literatură), baza acestui concept este un model de calcul distribuit. În chiar caz general sub clientȘi Server sunt înțelese două procese care interacționează, dintre care unul este un furnizor de servicii pentru celălalt.

Termenul „client-server” se referă la această arhitectură pachete software, în care părțile sale funcționale interacționează după schema „cerere-răspuns”. Dacă luăm în considerare două părți care interacționează ale acestui complex, atunci una dintre ele (clientul) funcționează functie activa, adică inițiază cereri, iar celălalt (server) le răspunde pasiv. Pe măsură ce sistemul se dezvoltă, rolurile se pot schimba, de exemplu, un anumit bloc software va îndeplini simultan funcțiile unui server în raport cu un bloc și a unui client în raport cu altul.

Server - unul sau mai multe procesoare multi-utilizator cu un singur câmp memorie, care, în funcție de nevoile utilizatorului, îi asigură acestuia funcțiile de calcul, comunicare și acces la baze de date. Server poate fi numit un program care oferă unele servicii altor programe. Exemple de servere sunt serverul web Apache, serverele de baze de date - MySQL, ORACLE, sistemele de fișiere de rețea și imprimantele Windows.

Client - stație de lucru pentru un utilizator, asigurarea modului de înregistrare și a altor funcții necesare la locul său de muncă - calcule, comunicare, acces la baze de date etc. Un client poate fi numit program care utilizează serviciul oferit de programul server. Exemple de clienți - MSIE (MS Internet Explorer), client ICQ.

Adesea oamenii se referă pur și simplu la computerul pe care rulează unul dintre aceste programe ca client sau server.

În esență, clientul și serverul sunt roluri, programe executabile. Clienții și serverele pot locui fizic pe același computer. Același program poate fi atât client cât și server în același timp etc... acestea sunt doar roluri.

Dacă facem o analogie cu societatea - o bancă sau un magazin - „servere”. Ei oferă unele servicii clienților lor. Dar banca poate fi în același timp un client al unei alte companii etc...

Procesarea Client-Server este un mediu în care procesarea aplicației este distribuită între un client și un server. Mașinile sunt adesea implicate în procesare tipuri diferite, iar clientul și serverul comunică între ele folosind un set fix protocoale standard schimb și proceduri pentru accesarea platformelor la distanță.

DBMS cu calculatoare personale(cum ar fi Clipper, DBase, FoxPro, Paradox, Clarion au versiuni de rețea, care pur și simplu partajează fișiere de baze de date de aceleași formate pentru computere, implementând în același timp blocări de rețea pentru a restricționa accesul la tabele și înregistrări. În acest caz, toate lucrările sunt efectuate pe un computer. Serverul este folosit pur și simplu ca unul partajat disc la distanță capacitate mare. Acest mod de lucru duce la riscul pierderii datelor din cauza defecțiunilor hardware.

În comparație cu astfel de sisteme, sistemele construite în arhitectura Client-Server au următoarele avantaje:

    vă permit să creșteți dimensiunea și complexitatea programelor care rulează pe o stație de lucru;

    asigură transferul celor mai laborioase operațiuni către un server, care este o mașină cu putere de calcul mai mare;

    minimizează posibilitatea pierderii informațiilor conținute în baza de date prin utilizarea mecanismelor interne de protecție a datelor disponibile pe server, cum ar fi, de exemplu, sisteme de urmărire a tranzacțiilor, rollback după o defecțiune și mijloace de asigurare a integrității datelor;

    reduce de mai multe ori cantitatea de informații transmise prin rețea.

    Într-o arhitectură client-server, serverul de baze de date nu numai că oferă acces la datele partajate, dar se ocupă și de întreaga procesare a acestor date. Clientul trimite cereri către server de citire sau modificare a datelor, care sunt formulate în SQL. Serverul face totul singur modificările necesare sau mostre, în timp ce se monitorizează integritatea și consistența datelor, iar rezultatele sub forma unui set de înregistrări sau a unui cod de returnare sunt trimise la computerul clientului.

    Vă permite să distribuiți în mod optim sarcina de calcul între client și server, ceea ce afectează și multe caracteristici ale sistemului: cost, performanță, suport.

    1.2. Poveste…

    Arhitectura și termenul „client-server” au fost folosite pentru prima dată la începutul anilor 80. Primele aplicații cu arhitectură client-server au fost bazele de date.

    Înainte de aceasta, nu exista o diviziune clară - programul făcea de obicei totul singur - inclusiv lucrul cu date în Sistemul de fișiere, prezentarea datelor către utilizator etc. De-a lungul timpului, volumul și criticitatea datelor pentru afaceri au crescut, iar acest lucru în timp a început să dea naștere la probleme (performanță, securitate și altele).

    Apoi și-au dat seama că ar fi convenabil să instaleze baza de date pe un puternic calculator separat(server) și să permită ca această bază de date să fie utilizată de mulți utilizatori de computere mici (clienți) prin rețea, ceea ce a fost făcut.

    În esență, „explozia” în popularitatea tehnologiei client-server a fost cauzată de invenția companiei IBM simplu limbajul de interogare baze de date relaționale date SQL. Astăzi, SQL este standardul universal pentru lucrul cu bazele de date. ÎN În ultima vreme această „explozie” continuă cu invenția Internetului, în care literalmente fiecare interacțiune are loc folosind o arhitectură client-server.

    1.3. Protocoale

    Serverul și clientul din rețea „vorbesc” unul cu celălalt într-o „limbă” (în în sens larg cuvinte) înțeles de ambele părți. Acest „limbaj” se numește protocol.

    În cazul unei bănci, protocolul poate fi numit formularele pe care clientul le completează.

    În cazul nostru, exemple de protocoale:

    FTP ( Transfer de fișier protocol)

    HTTP ( Hyper Text protocol de transfer)

    SMTP (Simple Mail Transfer Protocol)

    IP (Internet Protocol)

    Protocolul client/server MySQL

    Rețineți că protocoalele pot fi diferite niveluri. Sistemele de clasificare a nivelurilor pot fi diferite, dar una dintre cele mai cunoscute linii este OSI (Open Systems Interconnection), care are 7 niveluri.

    De exemplu, HTTP este un protocol de nivel de aplicație (al șaptelea - cel mai înalt) protocol, iar IP este un protocol de nivel de rețea (al treilea).

    1.4. Distribuția funcțiilor în arhitectura client-server

    ÎN arhitectura clasica Client-server trebuie să distribuie cele trei părți principale ale aplicației pe două module fizice. De obicei, software-ul de stocare a datelor este amplasat pe un server (de exemplu, un server de baze de date), interfața cu utilizatorul este pe partea client, dar procesarea datelor trebuie distribuită între părțile client și server. Acesta este principalul dezavantaj al arhitecturii pe două niveluri, din care mai multe caracteristici neplăcute, complicând foarte mult dezvoltarea sistemelor client-server.

    Procesul de dezvoltare a unor astfel de sisteme este destul de complex, iar una dintre cele mai importante sarcini este decizia modului în care funcționalitatea aplicației ar trebui să fie distribuită între părțile client și server. Încercând să rezolve această problemă, dezvoltatorii obțin arhitecturi cu două niveluri, trei niveluri și mai multe niveluri. Totul depinde de câte legături intermediare sunt incluse între client și server.

    Sarcina principală pe care o rezolvă aplicația client este furnizarea unei interfețe cu utilizatorul, adică introducerea datelor și prezentarea rezultatelor într-un formular ușor de utilizat și gestionarea scenariilor aplicației.

    Principalele funcții ale unui SGBD server sunt asigurarea fiabilității, consistenței și securității datelor, gestionarea solicitărilor clienților, procesare rapidă interogări SQL.

    Întreaga logică a aplicației - sarcini de aplicație, reguli de afaceri - într-o arhitectură pe două niveluri este distribuită de dezvoltator între două procese: client și server (Fig. 1).

    La început, majoritatea funcțiilor aplicației au fost rezolvate de client, serverul fiind implicat doar în procesarea interogărilor SQL. Această arhitectură se numește „client gros - server subțire”.

    Apariția capacității de a crea proceduri stocate pe server, adică programe compilate cu logică internă de operare, a condus la tendința de a transfera o parte din ce în ce mai mare a funcțiilor către server. Serverul a devenit din ce în ce mai „gras”, iar clientul a devenit „mai subțire”.

    Această soluție are avantaje evidente, de exemplu, este mai ușor de întreținut, deoarece toate modificările trebuie făcute într-un singur loc - pe server.

    Modelele discutate mai sus au următoarele dezavantaje.

    1. Client „gros”:

    – complexitatea administrării;

    – actualizarea software-ului devine mai complicată, deoarece acesta trebuie înlocuit simultan în întregul sistem;

    – repartizarea puterilor devine mai complicată, deoarece accesul este limitat nu de acțiuni, ci de tabele;

    – rețeaua este supraîncărcată din cauza transmiterii de date neprelucrate prin aceasta;

    – protecția datelor slabă, deoarece este dificil să se distribuie corect competențele.

    2. Server „Fat”:

    – implementarea devine mai complicată, deoarece limbaje precum PL/SQL nu sunt potrivite pentru dezvoltarea unui astfel de software și nu există fonduri bune depanare;

    – performanța programelor scrise în limbaje precum PL/SQL este semnificativ mai scăzută decât cele create în alte limbi, ceea ce este important pentru sisteme complexe;

    – programele scrise în limbaje DBMS de obicei nu funcționează în mod fiabil; o eroare în ele poate duce la defecțiunea întregului server de baze de date;

    – programele rezultate sunt complet neportabile pe alte sisteme și platforme.

    Pentru a rezolva aceste probleme, sunt utilizate arhitecturi client-server cu mai multe niveluri (trei sau mai multe niveluri). O arhitectură client-server pe mai multe niveluri poate simplifica semnificativ calculul distribuit, făcându-l nu numai mai fiabil, ci și mai accesibil.

    Cu toate acestea, limbajul în care sunt scrise procedurile stocate nu este suficient de puternic sau flexibil pentru a implementa cu ușurință logica complexă a aplicației.

    Apoi a existat tendința de a încredința execuția probleme aplicateși regulile de afaceri componentă separată aplicații (sau mai multe componente) care pot rula atât pe un computer dedicat - serverul de aplicații, cât și pe același computer pe care rulează serverul de baze de date. Așa au apărut arhitecturile client-server cu trei niveluri și mai multe niveluri.


    Orez. 1. Distribuția funcțiilor între client și server

    A fost o specială software Middleware (software) care trebuie să permită mai multor componente ale unei astfel de aplicații cu mai multe componente să funcționeze împreună. Astfel de aplicații sunt flexibile, scalabile, dar greu de dezvoltat.


    BIBLIOGRAFIE

  1. Informatică / Ed. N.V. Makarova. – M.: Finanțe și Statistică, 1998.

    Evdokimov V.V. si altele.Informatica economica. Sankt Petersburg: Peter, 2004.

    Kazakov S.I. Bazele tehnologii de rețea– M.: Radio și Comunicații, 2004.

    Kogalovsky M.R., Tehnologia bazelor de date pe computerele personale, - M.: Finanțe și Statistică, 2003.

    Popov V.V. Fundamentele tehnologiei computerelor. –M.: Finanțe și Statistică, 2001.

    Figurnov V.E. PC IBM pentru utilizator. M., 2000.

SISTEM DE OPERARE MS-DOS. CONCEPTE ȘI COMENZI DE BAZĂ CONCEPTE DE BAZĂ: BAZĂ DE DATE, SGBD, ENTITATE, ATRIBUT, RELATIE (UN-LA-UNUL, ONE-TO-MANY, MANY-TO-MANY), RELATIE, CHEIE PRIMARĂ

DB, pe structural limba interogări SQL (Structured Query Language), care este standard industrialîn lumea bazelor de date relaţionale. Server la distanta acceptă cererea și o trimite către serverul bazei de date SQL. SQL Server - program special, care gestionează baza de date la distanță. Serverul SQL asigură interpretarea cererii, executarea acesteia în baza de date, generarea rezultatului cererii și livrarea acestuia către aplicația client. În acest caz, resursele computerului client nu sunt implicate în executarea fizică a cererii; computerul client trimite doar o cerere către baza de date server și primește rezultatul, după care îl interpretează după cum este necesarși îl prezintă utilizatorului. Deoarece rezultatul solicitării este trimis către aplicația client, doar datele de care clientul are nevoie „călătoresc” prin rețea. Ca urmare, sarcina pe rețea este redusă. Deoarece cererea este executată acolo unde sunt stocate datele (serverul), nu este nevoie să trimiteți loturi mari de date. În plus, SQL Server, dacă este posibil, optimizează interogarea primită astfel încât să fie executată în timp minim cu cea mai mică suprafață [[3.2], [3.3]]. sistemul este prezentat în fig. 3.3.

Toate acestea măresc performanța sistemului și reduc timpul necesar pentru a aștepta rezultatul unei cereri. Atunci când interogările sunt executate de către server, gradul de securitate a datelor este semnificativ crescut, deoarece regulile de integritate a datelor sunt definite în baza de date de pe server și sunt aceleași pentru toate aplicațiile care utilizează această bază de date. Acest lucru elimină posibilitatea de a defini reguli conflictuale pentru menținerea integrității. Motorul puternic de tranzacții susținut de serverele SQL face posibilă prevenirea modificărilor simultane ale acelorași date de către diferiți utilizatori și oferă posibilitatea de a reveni la valorile originale atunci când faceți modificări în baza de date care s-au încheiat anormal [[3.2], [3.3]].


Orez. 3.3. Arhitectura client-server

  • Există o rețea locală formată din computere client, fiecare dintre ele având instalată o aplicație client pentru lucrul cu baza de date.
  • Pe fiecare dintre computerele client, utilizatorii au capacitatea de a rula aplicația. Folosind aplicația furnizată interfața cu utilizatorul, inițiază un apel către DBMS situat pe server pentru a prelua/actualiza informații. Folosit pentru comunicare limbaj special Interogări SQL, de ex. Doar textul solicitării este transmis prin rețea de la client la server.
  • SGBD inițiază apeluri la datele aflate pe server, în urma cărora toată prelucrarea datelor este efectuată pe server și numai rezultatul solicitării este copiat pe computerul client. Astfel, SGBD returnează rezultatul în aplicație.

Să ne uităm la cum arată separarea funcțiilor dintre server și client.

  • Funcțiile aplicației client:
    • Trimiterea cererilor către server.
    • Interpretarea rezultatelor interogărilor primite de la server.
    • Prezentarea rezultatelor utilizatorului într-o formă oarecare (interfață cu utilizatorul).
  • Funcții pe partea serverului:
    • Primirea cererilor de la aplicațiile client.
    • Interpretarea cererilor.
    • Optimizarea și executarea interogărilor bazei de date.
    • Trimiterea rezultatelor către aplicația client.
    • Asigurarea unui sistem de securitate si control acces.
    • Managementul integrității bazei de date.
    • Implementarea stabilității modului de operare multi-utilizator.

Așa-numitele SGBD-uri „industriale” funcționează în arhitectura client-server. Ele sunt numite industriale deoarece este SGBD-ul acestei clase care poate asigura funcționarea sistemelor informaționale la scara unei întreprinderi, organizații sau bănci mijlocii și mari. Categoria DBMS-urilor industriale include MS SQL Server, Oracle, Gupta, Informix, Sybase, DB2, InterBase și o serie de altele [[3.2]].

De regulă, un server SQL este întreținut de un angajat individual sau de un grup de angajați (administratori de server SQL). Aceștia gestionează caracteristicile fizice ale bazelor de date, efectuează optimizarea, configurarea și redefinire diverse componente baze de date, creați baze de date noi, modificați pe cele existente etc. și, de asemenea, emite privilegii (permisiuni de acces de un anumit nivel la anumite baze de date, server SQL) utilizatori diferiți [ [ 3.2 ] ].

Să ne uităm la principalele avantaje ale acestei arhitecturi în comparație cu arhitectura server de fișiere:

  • Traficul în rețea este redus semnificativ.
  • Complexitatea aplicațiilor client este redusă (cea mai mare parte a încărcăturii cade pe partea de server) și, în consecință, cerințele pentru capacitatea hardware a computerelor client sunt reduse.
  • Disponibilitate specială instrument software– SQL server – duce la faptul că o parte semnificativă a sarcinilor de proiectare și programare a fost deja rezolvată.
  • Integritatea și securitatea bazei de date este semnificativ crescută.

Dezavantajele includ costuri financiare mai mari pentru hardware și software, precum și faptul că un număr mare de computere client situate în locuri diferite, provoacă anumite dificultăți cu actualizarea la timp a aplicațiilor client pe toate computerele client. Cu toate acestea, arhitectura client-server s-a dovedit în practică, în în prezent Există un număr mare de baze de date construite în conformitate cu această arhitectură.

3.4. Arhitectură client-server pe trei niveluri (multi-nivel).

Trei legături (în unele cazuri, cu mai multe legături) arhitectură(N-nivel sau multi- arhitectura pe trei niveluri? Acum, când logica de afaceri se schimbă, nu mai este nevoie să schimbați aplicațiile client și să le actualizați pentru toți utilizatorii. În plus, cerințele pentru echipamentele utilizatorului sunt reduse cât mai mult posibil.

Prin urmare, lucrarea este structurată după cum urmează:

  • Baza de date sub forma unui set de fișiere se află pe hard disk-ul unui computer special dedicat (server de rețea).
  • SGBD-ul este, de asemenea, localizat pe serverul de rețea.
  • Există un server de aplicații special dedicat pe care se află software-ul de analiză a afacerii (logica de afaceri) [[3.1]].
  • Există multe computere client, fiecare dintre ele având așa-numitul „ client slab" este o aplicație client care implementează interfața cu utilizatorul.
  • Pe fiecare dintre computerele client, utilizatorii au posibilitatea de a rula o aplicație - un client subțire. Folosind interfața de utilizator furnizată de aplicație, inițiază un apel către software-ul de business intelligence situat pe serverul de aplicații.
  • Serverul de aplicații analizează cerințele utilizatorilor și generează interogări către baza de date. Pentru comunicare, se folosește un limbaj special de interogare SQL, de ex. Doar textul solicitării este transmis prin rețea de la serverul de aplicații la serverul de baze de date.
  • SGBD-ul încapsulează în sine toate informațiile despre structura fizică a bazei de date situate pe server.
  • SGBD inițiază apeluri către datele aflate pe server, în urma cărora rezultatul interogării este copiat pe serverul de aplicații.
  • Serverul de aplicații returnează rezultatul aplicației client (utilizatorului).
  • Aplicația, folosind interfața cu utilizatorul, afișează rezultatul interogărilor.

Avantaje

· Face posibilă, în majoritatea cazurilor, distribuirea funcțiilor sistem de calculîntre mai multe calculatoare independente din rețea. Acest lucru facilitează întreținerea sistemului informatic. În special, înlocuirea, repararea, modernizarea sau mutarea unui server nu afectează clienții.

· Toate datele sunt stocate pe server, care, de regulă, este protejat mult mai bine decât majoritatea clienților. Este mai ușor să aplicați controalele de permisiuni pe server pentru a permite doar clienților cu drepturi de acces adecvate să acceseze date.

· Vă permite să combinați diverși clienți. Clienții cu diferite platforme hardware, sisteme de operare etc. pot folosi adesea resursele unui singur server.

Defecte

· Eșecul serverului poate face ca întreaga rețea de computere să fie inoperabilă.

· Sprijinirea funcționării acestui sistem necesită un specialist separat - un administrator de sistem.

· Cost ridicat al echipamentelor.

Arhitectură client-server multi-nivel

Arhitectura client-server cu mai multe niveluri este un tip de arhitectură client-server în care funcția de procesare a datelor este efectuată pe unul sau mai multe servere separate. Acest lucru vă permite să separați funcțiile de stocare, procesare și prezentare a datelor pentru mai multe utilizare eficientă capabilitățile serverelor și clienților.

Cazuri speciale de arhitectură pe mai multe niveluri:

ÎN tehnologii informatice arhitectura cu trei niveluri, sinonimă cu arhitectura cu trei niveluri sau Multitier, presupune prezența următoarelor componente ale aplicației: o aplicație client (numită de obicei „client subțire” sau terminal) conectată la un server de aplicații, care la rândul său este conectat la un server de baze de date.

Privire de ansamblu asupra arhitecturii

Client- aceasta este o componentă de interfață (de obicei grafică) care reprezintă primul nivel, aplicația propriu-zisă pentru Utilizator final. Primul nivel nu ar trebui să aibă conexiuni directe cu baza de date (din motive de securitate), să fie încărcat cu logica de business de bază (din motive de scalabilitate) și să stocheze starea aplicației (din motive de fiabilitate). Cea mai simplă logică de afaceri poate fi, și de obicei este, plasată la primul nivel: interfața de autorizare, algoritmi de criptare, verificarea validității și respectarea formatului valorilor introduse, operațiuni simple (sortare, grupare, numărare a valorilor) cu date deja încărcat pe terminal.

Serverul de aplicații este situat la al doilea nivel. Al doilea nivel conține cea mai mare parte a logicii de afaceri. În afara acestuia rămân fragmente exportate către terminale (vezi mai sus), precum și proceduri stocate și declanșatoare scufundate în al treilea nivel.

Serverul de baze de date asigură stocarea datelor și este mutat la al treilea nivel. De obicei, acesta este un SGBD standard relațional sau orientat pe obiecte. Dacă al treilea nivel este o bază de date împreună cu proceduri stocate, declanșatoare și o schemă care descrie aplicația în termeni model relațional, atunci al doilea nivel este construit ca interfata software, care leagă componentele clientului cu logica aplicației bazei de date.

În cea mai simplă configurație, serverul de aplicații poate fi combinat fizic cu un server de baze de date pe un singur computer, la care sunt conectate unul sau mai multe terminale prin intermediul rețelei.

În configurația „corectă” (din punct de vedere al securității, fiabilității, scalarii), serverul bazei de date este situat pe un computer (sau cluster) dedicat, la care sunt conectate prin rețea unul sau mai multe servere de aplicații, la care, la rândul lor, terminalele sunt conectate prin intermediul rețelei.

Avantaje

În comparație cu arhitectura client-server sau fișier-server, pot fi identificate următoarele avantaje: arhitectura pe trei niveluri:

· scalabilitate

· configurabilitatea - izolarea nivelurilor unele de altele permite (cu implementarea corectă a arhitecturii) rapid și prin mijloace simple reconfigurați sistemul atunci când apar defecțiuni sau în timpul întreținerii programate la unul dintre niveluri

· Securitate inalta

· fiabilitate ridicată

cerințe scăzute pentru viteza canalului (rețea) între terminale și serverul de aplicații

cerințe scăzute de performanță și specificatii tehnice terminale, rezultând o reducere a costului acestora. Terminalul poate fi nu numai un computer, ci și, de exemplu, un telefon mobil.

Defecte

Dezavantajele decurg din avantaje. În comparație cu arhitectura client-server sau fișier-server, pot fi identificate următoarele dezavantaje ale arhitecturii pe trei niveluri:

· complexitate mai mare a creării aplicațiilor;

· mai dificil de implementat și administrat;

· cerințe ridicate pentru performanța serverelor de aplicații și a serverelor de baze de date și, prin urmare, costul ridicat al echipamentelor server;

· cerințe ridicate pentru viteza canalului (rețea) între serverul de baze de date și serverele de aplicații.

Client-server este o arhitectură de calcul sau de rețea în care sarcinile sau încărcarea rețelei sunt distribuite între furnizorii de servicii, numiți servere, și clienții de servicii, numiți clienți. Adesea, clienții și serverele comunică printr-o rețea de computere și pot fi diferite dispozitive fizice sau software.

Avantaje

Face posibilă, în majoritatea cazurilor, distribuirea funcțiilor unui sistem de calcul între mai multe computere independente dintr-o rețea. Acest lucru facilitează întreținerea sistemului informatic. În special, înlocuirea, repararea, actualizarea sau mutarea unui server nu afectează clienții.

Toate datele sunt stocate pe server, care, de regulă, este protejat mult mai bine decât majoritatea clienților. Este mai ușor să aplicați controalele de permisiuni pe server pentru a permite doar clienților cu drepturi de acces adecvate să acceseze date.

Vă permite să combinați diferiți clienți. Clienții cu diferite platforme hardware, sisteme de operare etc. pot folosi adesea resursele unui singur server.

[Editați | ×]

Defecte

Eșecul serverului poate face ca întreaga rețea de computere să fie inoperabilă.

Sprijinirea funcționării acestui sistem necesită un specialist separat - un administrator de sistem.

Cost ridicat al echipamentelor.

[Editați | ×]

Arhitectură client-server multi-nivel

Arhitectura client-server cu mai multe niveluri este un tip de arhitectură client-server în care funcția de procesare a datelor este efectuată pe unul sau mai multe servere separate. Acest lucru vă permite să separați funcțiile de stocare, procesare și prezentare a datelor pentru o utilizare mai eficientă a capabilităților serverelor și clienților.

Cazuri speciale de arhitectură pe mai multe niveluri:

Arhitectură cu trei niveluri

[Editați | ×]

Rețea de servere dedicate

O rețea cu un server dedicat (rețeaua client/server engleză) este locală rețea de calculatoare(LAN), în care dispozitive de rețea centralizat și gestionat de unul sau mai multe servere. Stațiile de lucru sau clienții individuale (cum ar fi PC-urile) trebuie să acceseze resursele de rețea prin server(e).

Introducere

S-au scris deja multe despre tehnologia client-server. Se poate observa că o parte din entuziasmul în jurul acestui subiect care a avut loc în urmă cu doi ani s-a domolit cu siguranță. Articolele din presă și conversațiile de pe margine au căpătat un ton calm, de afaceri și acum, de regulă, se discută aspecte specifice ale aplicării acestei tehnologii. Întrebarea „A fi sau a nu fi o arhitectură client-server?” Acum nimeni nu o ridică - toată lumea știe că „A fi!”

Cu toate acestea, este posibil ca mulți cititori să fi devenit interesați de acest subiect abia recent, așa că, în opinia noastră, merită să revenim la el din nou și cu calm, într-o manieră de afaceri, să discutăm ce este arhitectura client-server, de ce este necesară și cum să abordează-l.

Ce este arhitectura client-server?

În general, un sistem client-server se caracterizează prin prezența a două procese independente care interacționează - un client și un server, care, în general, pot fi executate pe computere diferite, schimbând date prin rețea. Conform acestei scheme, pot fi construite sisteme de procesare a datelor bazate pe DBMS, mail și alte sisteme. Desigur, vom vorbi despre baze de date și sisteme bazate pe acestea. Și aici va fi mai convenabil nu doar să luăm în considerare arhitectura client-server, ci și să o comparăm cu un altul - server de fișiere.

Într-un sistem server de fișiere, datele sunt stocate pe un server de fișiere (de exemplu, Novell NetWare sau Windows NT Server), iar prelucrarea lor se realizează pe stații de lucru, care, de regulă, operează unul dintre așa-numitele „DBMS-uri de birou” - Access, FoxPro, Paradox etc.

Aplicația de pe stația de lucru este „responsabilă pentru tot” - pentru crearea interfeței cu utilizatorul, procesarea logică a datelor și pentru manipularea directă a datelor. Server de fișiere oferă numai servicii nivel scăzut- deschiderea, inchiderea si modificarea fisierelor, subliniez - fisiere, nu baze de date. Baza de date există doar în „creierul” stației de lucru.

Astfel, în manipularea directă a datelor sunt implicate mai multe procese independente și inconsistente. În plus, pentru a efectua orice prelucrare (căutare, modificare, însumare etc.), toate datele trebuie să fie transferate prin rețea de la server la stația de lucru (vezi Fig. Comparația modelelor de fișiere-server și client-server)

Într-un sistem client-server, există (cel puțin) două aplicații - un client și un server, care împart între ele acele funcții care, într-o arhitectură de fișiere-server, sunt realizate în întregime de o aplicație pe o stație de lucru. Stocarea și manipularea directă a datelor este efectuată de un server de baze de date, care poate fi Microsoft SQL Server, Oracle, Sybase etc..

Interfața cu utilizatorul este creată de client, pentru care puteți utiliza întreaga linie instrumente speciale, precum și majoritatea SGBD-urilor desktop. Logica de procesare a datelor poate fi executată atât pe client, cât și pe server. Clientul trimite cereri către server, de obicei formulate în SQL. Serverul procesează aceste solicitări și trimite rezultatul către client (desigur, pot fi mulți clienți).

Astfel, un proces este responsabil pentru manipularea directă a datelor. În același timp, prelucrarea datelor are loc în același loc în care sunt stocate datele - pe server, ceea ce elimină nevoia de a transfera cantități mari de date prin rețea.

Când aveți nevoie de o arhitectură client-server?

Chiar și o analiză foarte detaliată a caracteristicilor arhitecturii client-server poate să nu răspundă la întrebarea „Ce îmi va oferi asta?” Să privim această arhitectură din punctul de vedere al nevoilor afacerii. Ce calități aduce un client-server unui sistem informațional:

Fiabilitate

Oricine a fost cel puțin o dată în rolul de administrator al bazei de date în momentul în care această bază de date „a murit” din cauza „înghețului” unui server sau stație de lucru, a unei căderi de curent sau a unei alte nenorociri nu va mai neglija niciodată problemele de fiabilitate (dacă , de bineînțeles, va putea păstra acest rol). Dacă nu ai jucat încă acest rol, sper că ai imaginația de a reda acest thriller în cap și prudența de a-ți păstra baza de date (și pe tine) cât mai în siguranță. Cum ajută arhitectura client-server aici?

Serverul bazei de date efectuează modificarea datelor pe baza unui mecanism de tranzacție, care oferă oricărui set de operațiuni declarate ca tranzacție următoarele proprietăți:

atomicitate - în orice circumstanță, fie se vor efectua toate operațiunile tranzacției, fie nu se va efectua niciuna; integritatea datelor la finalizarea tranzacției;

independență - tranzacțiile inițiate de diferiți utilizatori nu interferează în treburile celuilalt;

rezistență la eșec - după finalizarea tranzacției, rezultatele acesteia nu se vor pierde.

Mecanismul de tranzacție suportat de serverul de baze de date este mult mai eficient decât mecanismul similar din SGBD-urile desktop, deoarece serverul controlează central operarea tranzacțiilor. În plus, într-un sistem de fișiere-server, o defecțiune la oricare dintre stațiile de lucru poate duce la pierderea datelor și la inaccesibilitatea acestora la alte stații de lucru, în timp ce într-un sistem client-server, o defecțiune a clientului aproape niciodată nu afectează integritatea datelor. și disponibilitatea acestora pentru alți clienți.

Scalabilitate

Scalabilitatea este capacitatea sistemului de a se adapta la creșterea numărului de utilizatori și a volumului bazei de date cu o creștere adecvată a performanței platformei hardware, fără a înlocui software-ul.

Este bine cunoscut faptul că capacitățile DBMS-urilor desktop sunt serios limitate - cinci până la șapte utilizatori și, respectiv, 30-50 MB. Cifrele, desigur, reprezintă niște valori medii; în cazuri specifice, ele pot abate în ambele direcții. Cel mai important, aceste bariere nu pot fi depășite prin creșterea capacităților hardware.

Sistemele bazate pe servere de baze de date pot suporta mii de utilizatori și sute de GB de informații - doar oferiți-le platforma hardware adecvată.

Siguranță

Serverul de baze de date oferă mijloace puternice de protejare a datelor împotriva accesului neautorizat, ceea ce nu este posibil în SGBD-urile desktop. În același timp, drepturile de acces sunt administrate foarte flexibil - până la nivelul câmpurilor de tabel. În plus, puteți interzice complet accesul direct la tabele, permițând utilizatorului să interacționeze cu datele prin obiecte intermediare - vizualizări și proceduri stocate. Deci, administratorul poate fi sigur că niciun utilizator prea inteligent nu va citi ceea ce nu trebuie să citească.

Flexibilitate

Într-o aplicație de date, există trei straturi logice:

interfața cu utilizatorul;

reguli de procesare logică (reguli de afaceri);

gestionarea datelor (nu trebuie să confundăm straturile logice cu niveluri fizice, despre care se va discuta mai jos).

După cum sa menționat deja, într-o arhitectură de server de fișiere, toate cele trei straturi sunt implementate într-o aplicație monolitică care rulează pe o stație de lucru. Prin urmare, modificările în oricare dintre straturi duc în mod clar la modificarea aplicației și la actualizarea ulterioară a versiunilor acesteia pe stațiile de lucru.

În aplicația client-server pe două niveluri prezentată în Fig. 1, de regulă, toate funcțiile pentru crearea unei interfețe cu utilizatorul sunt implementate pe client, toate funcțiile de gestionare a datelor sunt implementate pe server, dar regulile de afaceri pot fi implementate atât pe server folosind mecanisme de programare a serverului (proceduri stocate, declanșatoare, vizualizări etc.), și asupra clientului. Într-o aplicație cu trei niveluri, apare un al treilea nivel, intermediar, care implementează regulile de afaceri, care sunt componentele aplicației cel mai frecvent modificate (vezi Fig. Modelul de aplicație client-server pe trei niveluri)

Prezența nu a unuia, ci a mai multor niveluri permite flexibilitate și costuri minime adaptarea aplicației la cerințele de afaceri în schimbare.

Să încercăm să ilustrăm toate cele de mai sus cu un mic exemplu. Să presupunem că regulile de salarizare ale unei anumite organizații (reguli de afaceri) s-au schimbat și software-ul corespunzător trebuie actualizat.

1) Într-un sistem server de fișiere, „pur și simplu” facem modificări aplicației și actualizăm versiunile acesteia pe stațiile de lucru. Dar acest „pur și simplu” implică costuri maxime cu forța de muncă.

2) Într-un sistem client-server cu două niveluri, dacă algoritmul de salarizare este implementat pe server sub forma unei reguli de salarizare, acesta este executat de un server de reguli de afaceri, implementat, de exemplu, ca un server OLE, iar noi va actualiza unul dintre obiectele sale fără a schimba nimic nici în aplicație client, nici pe serverul bazei de date.

Etapele construirii unui sistem client-server.

Să presupunem că utilizați astăzi o aplicație, implementată într-o arhitectură de server de fișiere, folosind mijloace Microsoft Accessși gândiți-vă la dezvoltarea sa. Pot fi luați în considerare următorii pași.

1. Transferați baza de date în Microsoft SQL Server, păstrând interfața și logica de operare neschimbate. În același timp, nu vei profita de toate avantajele arhitecturii client-server, dar poți fi sigur că datele tale sunt stocate în siguranță.

2. Dezvoltați o aplicație client-server pe două niveluri, folosind aceeași combinație Access - SQL Server, care funcționează foarte bine. Acest lucru se poate face, de exemplu, prin schimbarea treptată a componentelor individuale ale aplicației obținute la pasul 1. O alternativă ar fi dezvoltarea unei aplicații complet nouă folosind Visual Basic, Delphi sau oricare dintre zecile de instrumente disponibile ca client.

3. Dacă planificați o creștere serioasă a organizației dvs., atunci utilizarea unei arhitecturi cu trei niveluri vă va permite să distribuiți mai flexibil sarcina în creștere între servere și să minimizați costurile de întreținere și dezvoltare a sistemului.

Sperăm că acest articol v-a oferit o înțelegere generală a arhitecturii client-server și a beneficiilor acesteia. În numerele viitoare, intenționăm să vorbim mai detaliat despre Microsoft SQL Server și construirea de sisteme bazate pe acesta.

Arhitectură IS pe două niveluri client-server

Diferența cheie Arhitectura client-server din arhitectura file-server este o abstracție din reprezentarea internă a datelor (schema fizică de date). Cu această arhitectură, programele client manipulează datele la nivel circuit logic. Pentru a implementa arhitectura client-server, sunt utilizate de obicei SGBD-uri multi-utilizator, de exemplu, Oracle sau Microsoft SQL Server.

Client server Sistem informatic constă din trei componente principale: software-ul server; software pentru utilizatorul final; middleware (fig. 1.7). Software-ul server, pe lângă gestionarea bazei de date, oferă servicii pentru clienți.

Astfel de SGBD-uri oferă mecanisme de blocare și controale de acces multi-utilizator care protejează datele de riscurile inerente accesului concurent. În plus, serverul de baze de date trebuie să protejeze datele de accesul neautorizat, să optimizeze interogările bazei de date, să asigure integritatea datelor și să controleze finalizarea tranzacțiilor. Într-o organizație client-server, clienții pot fi destul de subțiri, dar serverul trebuie să fie suficient de gros pentru a satisface nevoile tuturor clienților. Software-ul pentru utilizatorul final include instrumente de dezvoltare programe de aplicațieși generatoare de rapoarte, inclusiv foi de calculȘi procesoare de cuvinte Folosind acest software, utilizatorii stabilesc o conexiune cu serverul, formulează interogări care sunt generate automat în interogări SQL și trimise către server. Serverul acceptă și procesează cereri, apoi transmite rezultatele clienților. Middleware este partea sistemului client-server care conectează software-ul utilizatorului final la server.

Utilizarea arhitecturii client-server a făcut posibilă crearea de sisteme informaționale multi-utilizator fiabile (din punct de vedere al integrității datelor) cu o bază de date centralizată, independentă de hardware-ul (și adesea software) al serverului de baze de date și care suportă GUI utilizator pe stațiile client conectate retea locala. Mai mult, costurile de dezvoltare a aplicațiilor au fost reduse semnificativ.

Această arhitectură are două niveluri, trăsătură caracteristică care este că programele client lucrează cu date prin solicitări către software-ul server și funcții de bază aplicațiile sunt împărțite între client și server (Fig. 1.8).

Avantajele acestei arhitecturi includ:

· sprijin deplin munca multi-utilizator;

· asigurarea integritatii datelor.

Este recomandabil să folosiți o arhitectură cu două niveluri în întreprinderile cu câteva zeci de utilizatori, deoarece sistem de operare server în timpul întreținerii cantitate mare Clienții sunt suprasolicitați cu gestionarea mai multor conexiuni la server.

Dezavantajele unei arhitecturi client-server pe două niveluri sunt:

· Logica de afaceri a aplicațiilor a rămas în software-ul client. Cu orice modificare a algoritmilor, este necesar să actualizați software-ul utilizatorului pe fiecare client.

· Cerințe ridicate pentru lățime de bandă canale de comunicatie cu serverul, ceea ce împiedică utilizarea stațiilor client altele decât cele din rețeaua locală.

· Protecție slabă date de la hacking, în special de la utilizatori fără scrupule ai sistemului.

· Complexitate ridicată de administrare și configurare a stațiilor de lucru ale utilizatorilor sistemului.

· Necesitatea de a utiliza computere puternice pe site-urile clientului.

· Complexitatea ridicată a dezvoltării sistemului datorită necesității de a efectua logica de afaceri și de a oferi interfața cu utilizatorul într-un singur program.