Gelaagde client-server-architectuur. Verschillende architecturale oplossingen die worden gebruikt bij de implementatie van subd voor meerdere gebruikers. een kort overzicht van de subd

Ongeacht hoe het concept van "client-server"-architectuur wordt gedefinieerd (en er zijn veel van dergelijke definities in de literatuur), dit concept is gebaseerd op een gedistribueerd computermodel. In het meest algemene geval, onder cliënt en server Er worden twee op elkaar inwerkende processen verstaan, waarvan de ene een leverancier is van een dienst voor de andere.

De term "client-server" betekent een softwarepakketarchitectuur waarin de functionele delen samenwerken volgens het "verzoek-antwoord"-schema. Als we twee op elkaar inwerkende delen van dit complex beschouwen, voert een van hen (de client) een actieve functie uit, dat wil zeggen, initieert verzoeken, en de andere (de server) reageert passief op hen. Naarmate het systeem zich ontwikkelt, kunnen de rollen veranderen, bijvoorbeeld, een software-eenheid zal tegelijkertijd de functies van een server uitvoeren met betrekking tot de ene eenheid en een client met betrekking tot een andere.

Server - een of meer multi-user processors met een enkel geheugenveld, die, in overeenstemming met de behoeften van de gebruiker, hen voorziet van de functies van computergebruik, communicatie en toegang tot databases. Server je kunt een programma aanroepen dat bepaalde diensten levert aan andere programma's. Voorbeelden van servers zijn Apache-webserver, databaseservers zijn MySQL, ORACLE, netwerkbestandssystemen en Windows-printers.

Client - een werkstation voor één gebruiker, dat een registratiemodus en andere functies van berekening, communicatie, toegang tot databases, enz. biedt die nodig zijn op zijn werkplek. Een client kan een programma worden genoemd dat gebruikmaakt van een service die wordt geleverd door een serverprogramma. Voorbeelden van clients - MSIE (MS Internet Explorer), ICQ-client.

Vaak verwijzen mensen gewoon naar de computer waarop een van deze programma's wordt uitgevoerd als een client of server.

In wezen zijn de client en server rollen die programma's spelen. Clients en servers kunnen zich fysiek op dezelfde computer bevinden. Een en hetzelfde programma kan tegelijkertijd zowel een client als een server zijn, enz ... dit zijn slechts rollen.

Als we een analogie trekken met de samenleving - een bank of een winkel - "servers". Ze bieden een soort van service aan hun klanten. Maar de bank kan tegelijkertijd klant zijn van een ander bedrijf, enz.

Client-to-Server-verwerking is een omgeving waarin applicatieverwerking wordt gedistribueerd tussen client en server. Vaak zijn machines van verschillende typen betrokken bij de verwerking en communiceren de client en server met elkaar door middel van een vaste set sen procedures voor toegang tot externe platforms.

DBMS van personal computers (zoals Clipper, DBase, FoxPro, Paradox, Clarion hebben netwerkversies die eenvoudig databasebestanden van dezelfde indeling voor een pc delen, terwijl netwerkvergrendelingen worden geïmplementeerd om de toegang tot tabellen en records te beperken. Het werk wordt gedaan op een PC, de server wordt gewoon gebruikt als een gedeelde externe schijf met grote capaciteit, en deze manier van werken loopt het risico gegevens te verliezen in het geval van hardwarestoringen.

In vergelijking met dergelijke systemen hebben systemen die zijn gebouwd in de Client-Server-architectuur de volgende voordelen:

    u in staat stellen de omvang en complexiteit van programma's op een werkstation te vergroten;

    zorgt voor de overdracht van de meest tijdrovende bewerkingen naar de server, een machine met meer rekenkracht;

    minimaliseert de mogelijkheid om de informatie in de database te verliezen door gebruik te maken van de interne gegevensbeschermingsmechanismen die beschikbaar zijn op de server, zoals bijvoorbeeld systemen voor het traceren van transacties, terugdraaien na een storing, middelen voor gegevensintegriteit;

    meerdere malen vermindert de hoeveelheid informatie die via het netwerk wordt verzonden.

    In een client-server-architectuur biedt de databaseserver niet alleen toegang tot de gedeelde gegevens, maar zorgt hij ook voor alle verwerking van die gegevens. De client stuurt verzoeken naar de server om gegevens in SQL te lezen of te wijzigen. De server maakt zelf alle noodzakelijke wijzigingen of selecties, terwijl hij de integriteit en consistentie van de gegevens controleert, en stuurt de resultaten in de vorm van een set records of een retourcode naar de computer van de klant.

    Hiermee kunt u de computerbelasting optimaal verdelen tussen de client en de server, wat ook van invloed is op veel kenmerken van het systeem: kosten, prestaties, ondersteuning.

    1.2. Geschiedenis…

    De architectuur en de term "client-server" werden voor het eerst gebruikt in het begin van de jaren tachtig. De eerste client-server-applicaties waren databases.

    Daarvoor was er geen duidelijke scheiding - het programma deed meestal alles zelf - inclusief het werken met gegevens in het bestandssysteem, het presenteren van gegevens aan de gebruiker, enz. dit begon problemen te geven (prestaties, beveiliging andere).

    Toen bedachten ze dat het handig zou zijn om de database op een krachtige aparte computer (server) te zetten en deze database via het netwerk door veel kleine computergebruikers (clients) te laten gebruiken, wat ook gebeurde.

    In wezen werd de explosie in client-servertechnologie aangewakkerd door IBM's uitvinding van een eenvoudige querytaal voor relationele databases, SQL. SQL is tegenwoordig de universele standaard voor het werken met databases. Onlangs zette deze "explosie" de uitvinding van het internet voort, waarbij letterlijk elke interactie plaatsvindt op een client-server-architectuur.

    1.3. Protocollen

    De server en de client in het netwerk "spreken" met elkaar in een "taal" (in de breedste zin van het woord) die voor beide partijen begrijpelijk is. Deze "taal" wordt een protocol genoemd.

    In het geval van een bank kan het protocol de formulieren worden genoemd die de klant invult.

    In ons geval voorbeelden van protocollen:

    FTP (File Transfer Protocol)

    HTTP (Hyper Text Transfer Protocol)

    SMTP (Simple Mail Transfer Protocol)

    IP (internetprotocol)

    MySQL Client / Server-protocol

    Merk op dat de protocollen van verschillende niveaus kunnen zijn. Classificatiesystemen van niveaus kunnen verschillen, maar een van de meest bekende lijnen is OSI (Open Systems Interconnection), waarin er 7 niveaus zijn.

    HTTP is bijvoorbeeld het applicatie (zevende - hoogste) laagprotocol en IP is het netwerk (derde) laagprotocol.

    1.4. Distributie van functies in de client-server-architectuur

    In de klassieke client-server-architectuur moet je de drie hoofdonderdelen van de applicatie over twee fysieke modules verdelen. Gewoonlijk bevindt software voor gegevensopslag zich op een server (bijvoorbeeld een databaseserver), de gebruikersinterface bevindt zich aan de clientzijde, maar de gegevensverwerking moet worden verdeeld tussen de client- en serverdelen. Dit is het belangrijkste nadeel van de two-tier-architectuur, waarvan er verschillende onaangename functies zijn die de ontwikkeling van client-serversystemen enorm bemoeilijken.

    Het ontwikkelingsproces van dergelijke systemen is nogal ingewikkeld en een van de belangrijkste taken is de beslissing over hoe de applicatiefunctionaliteit moet worden verdeeld tussen de client- en serveronderdelen. Door te proberen dit probleem op te lossen, krijgen ontwikkelaars two-tier, three-tier en multi-tier architecturen. Het hangt allemaal af van het aantal tussenliggende koppelingen tussen de client en de server.

    De belangrijkste taak die de clienttoepassing oplost, is het bieden van een interface met de gebruiker, dat wil zeggen het invoeren van gegevens en het presenteren van de resultaten in een gebruiksvriendelijke vorm, en het beheren van de toepassingsscenario's.

    De belangrijkste functies van een server-side DBMS zijn het garanderen van betrouwbaarheid, consistentie en beveiliging van gegevens, het beheren van clientverzoeken en snelle verwerking van SQL-query's.

    Alle logica van de applicatie - applicatietaken, bedrijfsregels - in een two-tier architectuur wordt door de ontwikkelaar verdeeld over twee processen: de client en de server (Fig. 1).

    Aanvankelijk werden de meeste functies van de applicatie door de client afgehandeld; de server hield zich alleen bezig met het verwerken van SQL-query's. Deze architectuur wordt "thick client - thin server" genoemd.

    De opkomst van de mogelijkheid om opgeslagen procedures op de server te creëren, dat wil zeggen gecompileerde programma's met interne werklogica, leidde tot de trend om een ​​steeds groter deel van de functies naar de server over te dragen. De server werd dikker en de client werd dunner.

    Deze oplossing heeft duidelijke voordelen, het is bijvoorbeeld gemakkelijker te onderhouden, omdat alle wijzigingen op slechts één plaats hoeven te worden aangebracht - op de server.

    de hierboven besproken modellen hebben de volgende nadelen.

    1. "Dikke" cliënt:

    - de complexiteit van de administratie;

    - software-update wordt ingewikkelder, omdat deze tegelijkertijd door het hele systeem moet worden vervangen;

    - de verdeling van bevoegdheden wordt ingewikkelder, aangezien de differentiatie van toegang niet plaatsvindt volgens acties, maar volgens tabellen;

    - het netwerk is overbelast door de overdracht van ruwe data erover;

    - zwakke gegevensbescherming, aangezien het moeilijk is om bevoegdheden goed te verdelen.

    2. "Dikke" server:

    - de implementatie wordt ingewikkelder, aangezien talen zoals PL / SQL niet zijn aangepast voor de ontwikkeling van dergelijke software en er geen goede debugging-tools zijn;

    - de prestaties van programma's die zijn geschreven in talen zoals PL / SQL zijn aanzienlijk lager dan programma's die in andere talen zijn geschreven, wat belangrijk is voor complexe systemen;

    - programma's die zijn geschreven in DBMS-talen werken meestal niet betrouwbaar genoeg; een fout daarin kan leiden tot het uitvallen van de hele databaseserver;

    - de resulterende programma's zijn volledig niet-overdraagbaar naar andere systemen en platforms.

    Om de genoemde problemen op te lossen, wordt een client-serverarchitectuur met meerdere niveaus (drie of meer niveaus) gebruikt. multi-tier client-server-architectuur kan gedistribueerde computing aanzienlijk vereenvoudigen, waardoor ze niet alleen betrouwbaarder, maar ook betaalbaarder worden.

    De taal waarin opgeslagen procedures zijn geschreven, is echter niet krachtig of flexibel genoeg om complexe applicatielogica eenvoudig te implementeren.

    Toen was er een tendens om de uitvoering van toegepaste taken en bedrijfsregels toe te vertrouwen aan een afzonderlijk onderdeel van de applicatie (of meerdere componenten), die zowel op een speciaal daarvoor bestemde computer kunnen draaien - de applicatieserver, als op dezelfde computer waar de database server draait. Zo ontstonden de drie- en meerlagige client-server-architecturen.


    Rijst. 1. Functieverdeling tussen client en server

    Er is speciale software (software) van de middelste laag verschenen, die moet zorgen voor het gezamenlijk functioneren van veel componenten van zo'n multicomponent-applicatie. Deze applicaties zijn flexibel, schaalbaar, maar moeilijk te ontwikkelen.


    BIBLIOGRAFIE

  1. Informatica / Uitg. NV Makarova –M.: Financiën en statistiek, 1998.

    VV Evdokimov en andere economische informatica. SPb.: Peter, 2004.

    S. I. Kazakov Grondbeginselen van netwerktechnologieën - M.: Radio en communicatie, 2004.

    Kogalovsky M.R., Technologie van databases op personal computers, - M.: Financiën en statistiek, 2003.

    Popov V.V. Grondbeginselen van computertechnologie. –M.: Financiën en statistiek, 2001.

    Figurnov V.E. IBM PC voor de gebruiker. M., 2000.

BESTURINGSSYSTEEM MS-DOS. BASISCONCEPTEN EN COMMANDO'S BASISCONCEPTEN: DATABASE, DBMS, ESSENCE, ATTRIBUTE, COMMUNICATIE (ONE-TO-ONE, ONE-TO-MANY, VEEL-TO-MANY), RELATIE, PRIMAIRE SLEUTEL

Vertaald uit het Engels: Chernobay Yu.A.

Ontwikkeling van client-server systemen

De architectuur van het computersysteem is geëvolueerd, samen met het vermogen van de hardware om uitvoerbare applicaties te gebruiken. De eenvoudigste (en vroegste) van allemaal was de "Mainframe-architectuur", waarin alle bewerkingen en functies worden uitgevoerd binnen de server (of "host") computer. Gebruikers communiceerden met de server via domme terminals, die instructies doorgaven, waarbij de toetsaanslag werd vastgelegd, naar de server en de resultaten van het uitvoeren van de instructies aan de gebruiker lieten zien. Dergelijke toepassingen waren typisch en, ondanks de relatief grote verwerkingskracht van servercomputers, waren ze over het algemeen relatief traag en onhandig in gebruik, omdat elke toetsaanslag naar de server moest worden verzonden.

De introductie en wijdverbreide acceptatie van de pc, met zijn eigen verwerkingskracht en grafische gebruikersinterface, zorgde ervoor dat applicaties complexer werden, en de uitbreiding van netwerksystemen leidde tot het tweede belangrijke type systeemarchitectuur, "Bestandspartitionering". In deze architectuur downloadt de pc (of "werkstation") bestanden van een speciale "bestandsserver" en beheert vervolgens de toepassing (inclusief gegevens) lokaal. Dit werkt goed wanneer er weinig gegevens worden gedeeld, gegevens worden vernieuwd en de hoeveelheid gegevens die moet worden overgedragen. Al snel werd echter duidelijk dat het splitsen van bestanden het netwerk steeds meer verstopte, en applicaties werden complexer en vereisten dat er steeds meer gegevens in beide richtingen moesten worden overgedragen.

De problemen in verband met de verwerking van gegevens door applicaties via een bestand dat via een netwerk wordt gedeeld, leidden begin jaren tachtig tot de ontwikkeling van de client-server-architectuur. In deze benadering wordt de bestandsserver vervangen door de databaseserver, die, in plaats van alleen bestanden over te dragen en op te slaan naar aangesloten werkstations (clients), verzoeken om gegevens ontvangt en daadwerkelijk uitvoert, waarbij alleen het door de client gevraagde resultaat wordt geretourneerd. Door alleen de door de klant gevraagde gegevens over te dragen, en niet het hele bestand, vermindert deze architectuur de belasting van het netwerk aanzienlijk. Hierdoor kon een systeem worden gecreëerd waarin meerdere gebruikers gegevens kunnen bijwerken via GUI-interfaces die zijn gekoppeld aan een enkele gedeelde database.

Meestal wordt Structured Query Language (SQL) of Remote Procedure Call (RPC's) gebruikt om te communiceren tussen client en server. Hieronder worden verschillende basisopties beschreven voor het organiseren van een client-server-architectuur.

In een two-tier architectuur wordt de belasting verdeeld tussen de server (die de database huisvest) en de client (die de gebruikersinterface huisvest). Ze bevinden zich meestal op verschillende fysieke machines, maar dit is geen vereiste. Mits de niveaus logisch gescheiden zijn, kunnen ze (bijvoorbeeld voor ontwikkeling en testen) op dezelfde computer worden geplaatst (Fig. 1).

Afbeelding 1: Architectuur met twee lagen

De distributie van applicatielogica en dataverwerking in dit model was en blijft problematisch. Als de klant "slim" is en de hoofdverwerking van de gegevens uitvoert, zijn er problemen met betrekking tot de distributie, installatie en onderhoud van de applicatie, aangezien elke klant zijn eigen lokale kopie van de software nodig heeft. Als de client "dom" is, moeten de toepassingslogica en -verwerking in de database worden geïmplementeerd en wordt het daarom volledig afhankelijk van het specifieke DBMS dat wordt gebruikt. In ieder geval moet elke klant zich registreren en, afhankelijk van de door hem ontvangen toegangsrechten, bepaalde functies uitvoeren. Desalniettemin was de two-tier client-server-architectuur een goede oplossing toen het aantal gebruikers relatief klein was (tot ongeveer 100 gelijktijdige gebruikers), maar naarmate het aantal gebruikers groeide, kwamen er een aantal beperkingen op het gebruik van deze architectuur.

Prestaties: naarmate het aantal gebruikers groeit, beginnen de prestaties te verminderen. De prestatievermindering is recht evenredig met het aantal gebruikers, die elk hun eigen verbinding met de server hebben, wat betekent dat de server al deze verbindingen moet onderhouden (met behulp van een "Keep-Alive"-bericht), zelfs als de database niet is benaderd wordt.

Beveiliging: Elke gebruiker moet zijn eigen individuele toegang tot de database hebben en over de rechten beschikken om de applicatie te bedienen. Om dit te doen, moet u de toegangsrechten voor elke gebruiker in de database opslaan. Wanneer u functionaliteit aan de applicatie moet toevoegen en gebruikersrechten moet bijwerken.

Functionaliteit: ongeacht welk type client wordt gebruikt, de meeste gegevensverwerking moet in de database plaatsvinden, wat betekent dat deze volledig afhankelijk is van de mogelijkheden die door de fabrikant in de database worden geboden. Dit kan de functionaliteit van een applicatie ernstig beperken omdat verschillende databases verschillende functionaliteit ondersteunen, verschillende programmeertalen gebruiken en zelfs basistools zoals triggers anders implementeren.

Mobiliteit: de two-tier architectuur is zo afhankelijk van de specifieke database-implementatie dat het overzetten van bestaande applicaties naar verschillende DBMS'en een grote uitdaging wordt. Dit geldt met name voor toepassingen in verticale markten waar de keuze voor DBMS niet door de leverancier wordt bepaald.

Desondanks vond de two-tier-architectuur een nieuw leven in het internettijdperk. Het kan goed werken in niet-verbonden omgevingen waar de gebruikersinterface "dom" is (bijvoorbeeld een browser). In veel opzichten vertegenwoordigt deze implementatie echter een terugkeer naar de oorspronkelijke mainframe-architectuur.

In een poging om de beperkingen van de hierboven geschetste two-tier-architectuur te overwinnen, is een extra laag geïntroduceerd. Deze architectuur is het standaard client-servermodel met een drielaagse architectuur. Het doel van de extra laag (gewoonlijk de "middelste" of "regel"-laag genoemd) is om de uitvoering van de toepassing en het databasebeheer te regelen. Net als bij het two-tier-model kunnen de tiers zich ofwel op verschillende computers bevinden (Afbeelding 2), of op dezelfde computer in de testmodus.

Afbeelding 2: Architectuur met drie lagen

Met de introductie van de middelste rij zijn de beperkingen van de two-tier architectuur grotendeels weggenomen, wat resulteert in een veel flexibeler en schaalbaarder systeem. Omdat clients nu alleen verbinding maken met de applicatieserver en niet rechtstreeks met de dataserver, wordt de last van het onderhouden van verbindingen weggenomen, evenals de noodzaak om applicatielogica in de database te implementeren. De database kan nu alleen de functies van het opslaan en ophalen van gegevens uitvoeren, en de taak van het ontvangen en verwerken van verzoeken kan worden uitgevoerd door de middelste laag van de drielaagse architectuur. De evolutie van besturingssystemen, inclusief elementen zoals pooling van verbindingen, wachtrijen en gedistribueerde transactieverwerking, heeft de ontwikkeling in het middensegment versterkt (en vereenvoudigd).

Merk op dat in dit model de applicatieserver de gebruikersinterface niet bestuurt, en dat de gebruiker ook geen rechtstreekse query's naar de database maakt. In plaats daarvan kunnen meerdere klanten bedrijfslogica, berekeningen en toegang tot gegevenszoekmachines delen. Het grote voordeel is dat de klant minder software nodig heeft en geen directe verbinding met de database meer nodig heeft, wat de veiligheid ten goede komt. Hierdoor is de applicatie schaalbaarder, zijn de ondersteunings- en installatiekosten op een enkele server aanzienlijk lager dan voor het onderhouden van applicaties direct op de computer van de klant of zelfs op een two-tier architectuur.

Er zijn veel variaties op de basismodellen met drie niveaus, ontworpen om verschillende doelen te dienen. Deze omvatten gedistribueerde transactieverwerking (waarbij meerdere DBMS'en worden bijgewerkt in hetzelfde protocol), op berichten gebaseerde toepassingen (waarbij toepassingen niet in realtime communiceren) en platformonafhankelijke compatibiliteit (Object Request Broker of "ORB"-toepassingen).

Gelaagde architectuur of N-tier architectuur

Met de ontwikkeling van internettoepassingen tegen de achtergrond van een algemene toename van het aantal gebruikers, is het basismodel met drie lagen client-server uitgebreid met extra lagen. Deze architecturen worden "gelaagde" architecturen genoemd, en ze hebben gewoonlijk vier lagen (Figuur 3) waarbij op het netwerk een server verantwoordelijk is voor het afhandelen van de verbinding tussen de clientbrowser en de applicatieserver. Het voordeel is dat meerdere webservers verbinding kunnen maken naar dezelfde applicatieserver, waardoor de verwerking van meer gelijktijdig verbonden gebruikers wordt verbeterd.

Afbeelding 3: N-Tier-architectuur

Lagen versus lagen

Deze termen worden (helaas) vaak verward. Er is echter een groot verschil tussen hen en hebben een bepaalde betekenis. Het belangrijkste verschil is dat de lagen zich op het fysieke niveau bevinden en de lagen op het logische niveau. Met andere woorden, het niveau kan in theorie onafhankelijk op een aparte computer worden ingezet en de laag is een logische scheiding binnen het niveau (Figuur 4). Het typische drieledige model dat hierboven is beschreven, bevat doorgaans ten minste zeven lagen, gescheiden op alle drie de lagen.

Het belangrijkste om te onthouden over gelaagde architectuur is dat verzoeken en antwoorden van elke stroom in dezelfde richting door alle lagen gaan en dat lagen nooit kunnen worden overgeslagen. Dus in het model dat wordt getoond in figuur 4, is de enige laag die kan verwijzen naar laag "E" (gegevenstoegangslaag) laag "D" (regellaag). Evenzo kan laag "C" (toepassingsvalidatielaag) alleen reageren op verzoeken van laag "B" (foutafhandelingslaag).

Afbeelding 4: Rijen verdeeld in logische lagen

Client-server two-tier IC-architectuur

Het belangrijkste verschil tussen de client-server-architectuur en de file-server-architectuur is de abstractie van de interne gegevensrepresentatie (fysiek gegevensschema). Met deze architectuur manipuleren clientprogramma's gegevens op logisch niveau. Om de client-server-architectuur te implementeren, worden meestal DBMS'en voor meerdere gebruikers gebruikt, bijvoorbeeld Oracle of Microsoft SQL Server.

Het client-server informatiesysteem bestaat uit drie hoofdcomponenten: serversoftware; eindgebruikerssoftware; middleware (Figuur 1.7). De serversoftware biedt naast databasebeheer ook klantenservice.

Deze DBMS'en hebben vergrendelingsmechanismen en toegangscontroles voor meerdere gebruikers die gegevens beschermen tegen de inherente risico's van gelijktijdige toegang. Bovendien moet de databaseserver gegevens beschermen tegen ongeoorloofde toegang, databasequery's optimaliseren, gegevensintegriteit waarborgen en de voltooiing van transacties controleren. In een client-serverorganisatie kunnen clients dun genoeg zijn en moet de server dik genoeg zijn om aan de behoeften van alle clients te voldoen.De software voor eindgebruikers omvat hulpprogramma's voor het ontwikkelen van toepassingen en rapportgeneratoren, waaronder spreadsheets en tekstverwerkers Met deze software kunnen gebruikers verbinding maken met de server, query's vormen die automatisch worden gegenereerd in SQL-query's en naar de server worden verzonden. De server accepteert en verwerkt verzoeken en verzendt de resultaten vervolgens naar de clients. Middleware is het deel van het client-serversysteem dat de eindgebruikersoftware aan de server koppelt.

Het gebruik van de client-server-architectuur maakte het mogelijk om betrouwbare (in termen van gegevensintegriteit) IS voor meerdere gebruikers te creëren met een gecentraliseerde database, onafhankelijk van het hardware (en vaak software) deel van de databaseserver en met ondersteuning van een grafische gebruikersinterface op clientstations die via een lokaal netwerk zijn aangesloten. Bovendien zijn de kosten voor het ontwikkelen van applicaties aanzienlijk verlaagd.

Deze architectuur kent twee niveaus, met als kenmerk dat de clientprogramma's werken met data door middel van verzoeken aan de serversoftware, en de basisfuncties van de applicatie zijn verdeeld over de client en de server (Figuur 1.8).

De voordelen van deze architectuur zijn onder meer:

· Volledige ondersteuning voor werken met meerdere gebruikers;

· Waarborgen van gegevensintegriteit.

Het is raadzaam om een ​​tweeledige architectuur te gebruiken in ondernemingen met enkele tientallen gebruikers, omdat het serverbesturingssysteem, wanneer het een groot aantal clients bedient, te veel wordt belast met het beheren van meerdere verbindingen met de server.

De nadelen van een client-server-architectuur met twee lagen zijn:

· De bedrijfslogica van de applicaties bleef in de clientsoftware. Wanneer de algoritmen veranderen, moet de gebruikerssoftware op elke client worden bijgewerkt.

· Hoge eisen aan de bandbreedte van communicatiekanalen met de server, waardoor het gebruik van andere clientstations dan in het lokale netwerk wordt voorkomen.

· Zwakke bescherming van gegevens tegen hacking, vooral van gewetenloze gebruikers van het systeem.

· Hoge complexiteit van beheer en configuratie van werkstations van systeemgebruikers.

· De noodzaak om krachtige pc's te gebruiken op klantlocaties.

· Hoge complexiteit van systeemontwikkeling vanwege de noodzaak om bedrijfslogica uit te voeren en een gebruikersinterface in één programma te bieden.

DB, op structurele SQL-querytaal(Structured Query Language), de industriestandaard in de wereld van relationele databases. De externe server ontvangt het verzoek en stuurt het door naar de SQL-databaseserver. SQL Server is een speciaal programma dat een externe database beheert. SQL - de server zorgt voor de interpretatie van de query, de uitvoering ervan in de database, de vorming van het resultaat van de uitvoering van de query en de uitgifte ervan aan de clienttoepassing. In dit geval zijn de bronnen van de clientcomputer niet betrokken bij de fysieke uitvoering van het verzoek; de clientcomputer stuurt alleen een verzoek naar de serverdatabase en ontvangt het resultaat, waarna deze het indien nodig interpreteert en aan de gebruiker presenteert. Aangezien het resultaat van het verzoek naar de clienttoepassing wordt verzonden, "reizen" alleen de gegevens die de client nodig heeft over het netwerk. Hierdoor wordt de belasting van het netwerk verminderd. Aangezien het verzoek wordt uitgevoerd op dezelfde plaats waar de gegevens zijn opgeslagen (op de server), is het niet nodig om grote datapakketten te verzenden. Bovendien optimaliseert de SQL-server, indien mogelijk, de ontvangen query zodat deze in de kortst mogelijke tijd wordt uitgevoerd met de minste overhead [[3.2], [3.3]]. systeem wordt getoond in Fig. 3.3.

Dit alles verhoogt de systeemprestaties en vermindert de wachttijd voor het queryresultaat. Wanneer de server query's uitvoert, wordt de mate van gegevensbeveiliging aanzienlijk verhoogd, omdat de regels voor gegevensintegriteit zijn gedefinieerd in de database op de server en hetzelfde zijn voor alle toepassingen die deze database gebruiken. Dit elimineert de mogelijkheid om tegenstrijdige regels te definiëren voor het handhaven van integriteit. Krachtig transactieapparaat, ondersteund door SQL-servers, maakt het mogelijk om de gelijktijdige wijziging van dezelfde gegevens door verschillende gebruikers uit te sluiten en biedt de mogelijkheid om terug te gaan naar de oorspronkelijke waarden bij het aanbrengen van wijzigingen aan de database die abnormaal eindigde [[3.2], [ 3.3]].


Rijst. 3.3. Client-server-architectuur

  • Er is een lokaal netwerk dat bestaat uit clientcomputers, op elk van deze computers is een clienttoepassing geïnstalleerd om met de database te werken.
  • Op elk van de clientcomputers kunnen gebruikers de toepassing uitvoeren. Met behulp van de gebruikersinterface die door de toepassing wordt geleverd, initieert het een oproep naar het DBMS op de server om informatie op te halen / bij te werken. Voor communicatie wordt een speciale querytaal SQL gebruikt, d.w.z. alleen de verzoektekst wordt via het netwerk van de client naar de server verzonden.
  • Het DBMS initieert oproepen naar de gegevens die zich op de server bevinden, waardoor alle gegevensverwerking op de server wordt uitgevoerd en alleen het resultaat van de query naar de clientcomputer wordt gekopieerd. Het DBMS stuurt het resultaat dus terug naar de toepassing.

Laten we eens kijken hoe de differentiatie van functies tussen de server en de client eruit ziet.

  • Functies van clientapplicaties:
    • Verzendverzoeken naar de server.
    • Interpretatie van de resultaten van query's die van de server zijn ontvangen.
    • De resultaten in een of andere vorm aan de gebruiker presenteren (gebruikersinterface).
  • Functies aan de serverzijde:
    • Aanvragen ontvangen van klantapplicaties.
    • Interpretatie van verzoeken.
    • Optimalisatie en uitvoering van databasequery's.
    • Resultaten naar de clienttoepassing verzenden.
    • Voorzien van een beveiligingssysteem en toegangscontrole.
    • Beheer van database-integriteit.
    • Implementatie van de stabiliteit van de multi-user modus.

De zogenaamde "industriële" DBMS werken in de client-server-architectuur. Ze worden industrieel genoemd omdat het de DBMS van deze klasse is die de werking kan garanderen van informatiesystemen van de schaal van een middelgrote en grote onderneming, organisatie, bank. De categorie van industriële DBMS omvat MS SQL Server, Oracle, Gupta, Informix, Sybase, DB2, InterBase en een aantal andere [[3.2]].

In de regel wordt de SQL-server onderhouden door een individuele medewerker of een groep medewerkers (SQL-serverbeheerders). Ze controleren de fysieke kenmerken van databases, voeren optimalisatie, afstemming en herdefinitie verschillende databasecomponenten, nieuwe databases maken, bestaande wijzigen, enz., en ook privileges verlenen (permissies om een ​​bepaald niveau toegang te krijgen tot specifieke databases, SQL-server) aan verschillende gebruikers [[3.2]].

Laten we eens kijken naar de belangrijkste voordelen van deze architectuur in vergelijking met de "file-server"-architectuur:

  • Het netwerkverkeer wordt aanzienlijk verminderd.
  • De complexiteit van clienttoepassingen wordt verminderd (de meeste belasting valt aan de serverzijde) en bijgevolg worden de hardwarevereisten voor clientcomputers verminderd.
  • De aanwezigheid van een speciale softwaretool - een SQL-server - leidt ertoe dat een aanzienlijk deel van de ontwerp- en programmeertaken al is opgelost.
  • De integriteit en veiligheid van de database wordt aanzienlijk vergroot.

De nadelen zijn onder meer hogere financiële kosten voor hardware en software en ook het feit dat een groot aantal clientcomputers op verschillende locaties bepaalde problemen veroorzaakt bij het tijdig bijwerken van clienttoepassingen op alle clientcomputers. Desalniettemin heeft de "client-server" architectuur zich in de praktijk goed bewezen, momenteel zijn en functioneren er een groot aantal databases gebouwd volgens deze architectuur.

3.4. Three-tier (multi-tier) client-server architectuur.

Drie-link (in sommige gevallen multi-link) architectuur(N-laag of multi- drieledige architectuur? Bij het wijzigen van de bedrijfslogica is het niet langer nodig om clienttoepassingen te wijzigen en deze voor alle gebruikers bij te werken. Bovendien worden de vereisten voor gebruikersapparatuur geminimaliseerd.

Het werk is dan ook als volgt opgebouwd:

  • De database in de vorm van een set bestanden bevindt zich op de harde schijf van een speciaal daarvoor bestemde computer (netwerkserver).
  • Het DBMS bevindt zich ook op de netwerkserver.
  • Er is een speciale applicatieserver die als host fungeert voor de bedrijfsanalysesoftware (bedrijfslogica) [[3.1]].
  • Er zijn veel clientcomputers, die elk een zogenaamde "thin client" hebben - een clienttoepassing die de gebruikersinterface implementeert.
  • Op elk van de clientcomputers kunnen gebruikers een thin client-toepassing uitvoeren. Met behulp van de gebruikersinterface die door de applicatie wordt geleverd, initieert het een oproep naar de bedrijfsanalysesoftware die zich op de applicatieserver bevindt.
  • De applicatieserver analyseert de eisen van de gebruiker en genereert queries naar de database. Voor communicatie wordt een speciale querytaal SQL gebruikt, d.w.z. alleen de aanvraagtekst wordt over het netwerk verzonden van de applicatieserver naar de databaseserver.
  • Het DBMS kapselt in zichzelf alle informatie in over de fysieke structuur van de database die zich op de server bevindt.
  • Het DBMS initieert aanroepen naar de gegevens die zich op de server bevinden, waardoor het resultaat van de query wordt gekopieerd naar de applicatieserver.
  • De applicatieserver stuurt het resultaat terug naar de clientapplicatie (naar de gebruiker).
  • De applicatie geeft, met behulp van de gebruikersinterface, het resultaat van de zoekopdrachten weer.

Client-servertechnologie wordt beschouwd als een van de "walvissen" van de moderne wereld van computernetwerken. Maar de taken waarvoor het is ontworpen, behoren tot het verleden. Nieuwe taken en technologieën vereisen een heroverweging van de principes van client-serversystemen. Een van die technologieën is het World Wide Web. Webtechnologie is een evolutie van de client-server-architectuur, d.w.z. één client kan verbinding maken met veel servers. Het informatiesysteem moet, naast de interface, niveaus van gegevensverwerking en -opslag hebben. Het probleem voor internetontwerpers is dat het web goed samenwerkt met andere elementen van het systeem, zoals databases. Een van de veelbelovende manieren om dit probleem op te lossen is een client-serversysteem met meerdere niveaus.

Het klassieke client-server systeem werkt volgens het "request-response" schema (two-tier architectuur). De client vervult een actieve functie (verzoeken), de server reageert er passief op.


Elk informatiesysteem moet ten minste drie functionele onderdelen hebben: gegevensopslagmodules, gegevensverwerking en gebruikersinterface.

Elk van deze onderdelen kan onafhankelijk van de andere twee worden geïmplementeerd.

Bijvoorbeeld ... Zonder de programma's die worden gebruikt voor het opslaan en verwerken van gegevens te wijzigen, kunt u de gebruikersinterface zo wijzigen dat dezelfde gegevens worden weergegeven in de vorm van tabellen, grafieken of histogrammen. Zonder de gegevenspresentatie- en opslagprogramma's te wijzigen, kunt u de verwerkingsprogramma's wijzigen door het zoekalgoritme voor volledige tekst te wijzigen. Zonder de gegevenspresentatie- en verwerkingsprogramma's te wijzigen, kunt u de gegevensopslagsoftware wijzigen door over te schakelen naar een ander bestandssysteem.

In de klassieke client-server-architectuur zijn de drie hoofdonderdelen van de applicatie verdeeld over twee fysieke modules. Meestal bevindt de opslagsoftware zich op de server (/: databaseserver), de gebruikersinterface bevindt zich aan de clientzijde, maar de gegevensverwerking moet worden verdeeld tussen de client- en servergedeelten. Dit is het grootste nadeel van deze architectuur. Het splitsen van gegevensverwerkingsalgoritmen vereist het synchroniseren van de acties van beide delen van het systeem. Om de inconsistentie van de verschillende elementen van de architectuur te voorkomen, worden pogingen ondernomen om gegevensverwerking uit te voeren op een van de twee delen - ofwel aan de clientzijde (dikke client) of op de server (thin client of 2.5-tier client-server) . Elke aanpak heeft zijn eigen nadeel: In het eerste geval het netwerk is onterecht overbelast; er worden onbewerkte (redundante) gegevens doorheen verzonden, de ondersteuning en verandering van het systeem wordt gecompliceerder, omdat het vervangen van het rekenalgoritme of het corrigeren van een fout de gelijktijdige volledige vervanging van alle interfaceprogramma's vereist, anders zal inconsistentie van de gegevens volgen; in het tweede geval wanneer alle informatieverwerking op de server wordt uitgevoerd, ontstaat het probleem van het beschrijven van ingebouwde procedures en hun foutopsporing (de beschrijving is declaratief en staat stapsgewijze foutopsporing niet toe). Daarnaast is het systeem met informatieverwerking op de server absoluut niet over te zetten naar een ander platform.

De meeste moderne Rapid Application Development (RAD)-tools, die met verschillende databases werken, implementeren het eerste model ("dikke" client), dat een interface biedt naar de databaseserver via de SQL-taal. Deze optie, naast de bovengenoemde nadelen, heeft een laag beveiligingsniveau.

Bijvoorbeeld. In banksystemen hebben alle stemopnemers het recht om naar de hoofdtabel van het boekhoudsysteem te schrijven. Bovendien is dit systeem bijna niet te vertalen naar webtechnologieën, aangezien gespecialiseerde clientsoftware wordt gebruikt om toegang te krijgen tot de databaseserver.

Nadelen van de hierboven besproken modellen:

1. "Dikke" cliënt

F complexiteit van administratie;

F Moeite met het updaten van de software, omdat het moet tegelijkertijd door het hele systeem worden vervangen;

F complexiteit in de verdeling van bevoegdheden, aangezien de differentiatie van toegang niet plaatsvindt volgens acties, maar volgens tabellen;

F netwerkcongestie als gevolg van de overdracht van onbewerkte gegevens erover;

F zwakke gegevensbescherming.

2. "Dikke" server

ð de implementatie wordt ingewikkelder, aangezien de PL / SQL-talen niet zijn aangepast voor de ontwikkeling van dergelijke software en er geen debugging-tools zijn;

ð de prestaties van programma's in PL/SQL-talen zijn lager dan in andere talen, wat belangrijk is voor complexe systemen;

ð programma's die zijn geschreven in DBMS-talen werken niet betrouwbaar, wat kan leiden tot uitval van de gehele databaseserver;

ð De programma's die op deze manier zijn gemaakt, zijn volledig niet overdraagbaar naar andere systemen en platforms.



Om de bovenstaande problemen op te lossen, worden client-servermodellen met meerdere niveaus (drie of meer) gebruikt.

Gelaagde client-server-architecturen - Verdeel op intelligentere wijze gegevensverwerkingsmodules die op een of meer afzonderlijke servers draaien.

Deze softwaremodules voeren de functies uit: server voor gebruikersinterfaces en cliënt- voor databaseservers. Bovendien kunnen verschillende applicatieservers met elkaar communiceren om het systeem nauwkeuriger op te delen in functionele blokken die specifieke rollen vervullen.

Bijvoorbeeld. U kunt een personeelsbeheerserver selecteren die alle functies uitvoert die nodig zijn voor personeelsbeheer. Door er een afzonderlijke database aan te koppelen, kunt u alle implementatiedetails van deze server voor gebruikers verbergen, zodat u alleen toegang hebt tot de openbare functies. Zo'n systeem is gemakkelijker aan te passen aan het web, omdat: het is gemakkelijker om html-formulieren te ontwerpen om gebruikers toegang te geven tot specifieke databasefuncties dan alle gegevens.

In het drieledige model wordt de "thin" client niet overladen met gegevensverwerkingsfuncties, maar speelt hij de hoofdrol van een systeem voor het presenteren van informatie van de applicatieserver. (Deze interface wordt geïmplementeerd met behulp van standaard webtechnologietools - browser, CGI en Java). Dit vermindert de hoeveelheid gegevens die tussen de client en de applicatieserver wordt uitgewisseld, waardoor clients met trage telefoonlijnen verbinding kunnen maken.

Met het drieledige client-servermodel kunt u gebruikersmachtigingen nauwkeuriger toewijzen, omdat ze niet rechten krijgen op de database zelf, maar op bepaalde functies van de applicatieserver, wat de beveiliging van het systeem verhoogt.

Multi-tier client/server-systemen kunnen eenvoudig worden geconverteerd naar webtechnologie - het enige wat u hoeft te doen is de clientzijde te vervangen door een universele browser en de applicatieserver aan te vullen met een webserver en kleine serverprocedure-aanroepprogramma's. In een drielaags systeem wordt veel informatie verzonden via het communicatiekanaal tussen de applicatieserver en de database, terwijl de berekeningen niet vertragen, omdat er snellere lijnen worden gebruikt om deze elementen met elkaar te verbinden. Dit is minder kostbaar omdat beide servers zich in dezelfde ruimte bevinden. Maar dit roept het probleem op van de consistentie van joint computing, die transactiemanagers moeten oplossen - nieuwe elementen van multi-tier-systemen.

Transactiemanagers

MT-één applicatieserver toestaan ​​om gelijktijdig gegevens uit te wisselen met meerdere databaseservers. Hoewel Oracle-servers een mechanisme hebben voor het uitvoeren van gedistribueerde transacties, kunt u niet zonder MT als de gebruiker een deel van de informatie opslaat in de Oracle-database, een deel in de Informix-database en een deel in tekstbestanden. MT wordt gebruikt om gedistribueerde heterogene operaties te beheren en de acties van verschillende componenten van het informatiesysteem te coördineren. Elke complexe software vereist het gebruik van MT.

Bijvoorbeeld. Banksystemen moeten verschillende transformaties van documentrepresentaties uitvoeren, d.w.z. gelijktijdig werken met gegevens die zowel in de database als in gewone bestanden zijn opgeslagen - dit zijn de functies die MT helpt uit te voeren.

MT is een programma of een reeks programma's met behulp waarvan het mogelijk is om het werk van verschillende componenten van een informatiesysteem te coördineren.

Logischerwijs is MT verdeeld in verschillende delen:

· Communicatiemanager (stuurt de uitwisseling van berichten tussen de onderdelen van het informatiesysteem aan;

· Transactiemanager (beheert gedistribueerde operaties);

· Beheerder van het bijhouden van logboekrecords (bewaakt herstel en terugdraaiing van gedistribueerde bewerkingen);

· Lock manager (biedt correcte toegang tot gedeelde gegevens).

Meestal wordt M-communicatie gecombineerd met M-autorisatie, en M-transacties met M-locks en systeemrecords. Bovendien wordt zo'n M zelden opgenomen in de leveringsset, aangezien zijn functies (registratie, toewijzing van middelen en controle van bewerkingen) in de regel door de database zelf worden uitgevoerd (bijvoorbeeld Oracle).

De grootste veranderingen hebben plaatsgevonden in M-communicatie, aangezien er nieuwe objectgeoriënteerde technologieën (CORBA, DCOM, enz.) op dit gebied zijn verschenen. Het multi-tier client-servermodel kan gedistribueerd computergebruik aanzienlijk vereenvoudigen, waardoor het niet alleen betrouwbaarder, maar ook betaalbaarder wordt.

4.4. Technologische postsystemen­ -

het is een gegarandeerde levering van informatie en een hulpmiddel voor het integreren van applicaties

Het ontwerp van informatiesystemen biedt oplossingen voor de volgende problemen voor systeemanalisten:

ð distributie van het systeem;

ð integratie van verschillende applicaties;

ð gemak van administratie.

Moderne vliegtuigen worden voornamelijk gedistribueerd, dus het probleem doet zich voor bij het kiezen van een methode voor interactie tussen afzonderlijke delen van dergelijke systemen. De samenvoeging van meerdere informatiesystemen vraagt ​​om een ​​oplossing om een ​​groot aantal heterogene toepassingen te integreren. Een dergelijk (geïntegreerd) systeem dient alle functionaliteit van de gecombineerde subsystemen te hebben en eenvoud en gebruiksgemak te behouden. De oplossing voor dit probleem kan worden uitgevoerd met behulp van technologische postsystemen(STP).

De term "technologische post" wordt gebruikt om de interactie tussen applicaties aan te duiden ("e-mail" - interactie tussen mensen), de verzonden informatie is technologisch, de vorming en verzending ervan kan worden uitgevoerd zonder / of met minimale menselijke tussenkomst.

Het technologische postsysteem omvat twee verschillende communicatiemethoden die in moderne gedistribueerde systemen worden gebruikt.

De ene is gebaseerd op het concept van verbinding (Figuur 1) en de andere is gebaseerd op het idee van berichten.

1


Figuur 1. Verbindingsgericht communicatiemechanisme

Het proces van interactie tussen applicaties en het gebruik van verbindingsopbouw kan worden onderverdeeld in drie fasen:

1. het tot stand brengen van een verbinding;

2. overdracht van informatie;

3. de verbinding sluiten.

Een dergelijke interactie vereist de aansluiting van alle drie de fasen en de gelijktijdige werking van applicaties, wat niet altijd mogelijk is.

Systemen die zijn gebaseerd op het principe van berichtenuitwisseling, maken gebruik van message queuing-technologie voor interactie (Fig. 2).



Fig. 2. Interoperabiliteit van applicaties met behulp van message queuing-technologie

Applicaties die informatie uitwisselen, richten deze niet rechtstreeks naar elkaar, maar naar de berichtenwachtrijen die bij de applicaties horen. De verbinding tussen de applicatie en de wachtrij vindt in de regel online plaats, waardoor het tijdrovende proces van het tot stand brengen van een verbinding wordt vermeden. De besturingssoftware kan zich ofwel op dezelfde machine als de applicaties bevinden, ofwel op een dedicated server. Systemen die gebruikmaken van message queuing-technologie, in tegenstelling tot systemen voor het tot stand brengen van verbindingen, vereisen geen permanente verbinding in het proces van interactie of de gelijktijdige werking van interactieve applicaties. Deze eigenschappen geven ze flexibiliteit en aanvaardbaarheid in een verscheidenheid aan toepassingen.

De veelzijdigheid van technologische postsystemen stelt hen in staat om aan te werken heterogeen (een verscheidenheid aan software- en hardwareplatforms waarop afzonderlijke STP-componenten werken, evenals een verscheidenheid aan verbindingsmethoden en interactieprotocollen die in het systeem worden gebruikt) structuren. Heterogeniteit wordt bereikt door de server- en clientdelen van de STP te scheiden. De client-onderdelen hebben weinig functionaliteit en kunnen naar verschillende platforms worden geporteerd. Voor het functioneren van de STP zijn er dus geen extra apparatuurkosten nodig - het systeem past zich aan aan bestaande middelen (zowel hardware als software, evenals aan bestaande datatransmissiekanalen) en hoeft niet te worden vervangen.

Voordelen van het gebruik van STP:

Ø Bericht levering garantie. Message Queuing-servers

ze bepalen zelf hoe ze de leveringszekerheid garanderen in het geval van uitval van afzonderlijke delen van het systeem: opnieuw verzenden, een alternatieve route vinden of andere methoden toepassen. Aangezien STP's zorgen voor de uitwisseling van informatie tussen applicaties, moet het feit dat een bericht niet wordt bezorgd, worden gevolgd en verwerkt (in tegenstelling tot e-mail, waarbij de gebruiker in geval van niet-levering van een bericht corrigerende maatregelen moet nemen );

Ø Geen blokkering van de applicatie tijdens de overdracht van informatie, omdat de technologie van berichtenwachtrijen is aanwezig en de toewijzing van het servergedeelte van het TP-systeem, dat verantwoordelijk is voor de bezorging van berichten. De afwezigheid van blokkering stelt u in staat de uitvaltijd van applicaties te verminderen;

Ø Mogelijkheid om berichtprioriteiten en opties in te stellen bij het verzenden. Prioriteiten maken het mogelijk om meerdere parallelle berichtensystemen te implementeren. In dit geval hebben berichten met een lagere prioriteit geen invloed op de bezorging van berichten met een hogere prioriteit. Dit heeft een positieve eigenschap bij het ontwerpen en configureren van grote systemen, maar ook bij het beheren van systemen;

Ø Het vermogen om informatie uit te wisselen in een heterogene omgeving, waar modernisering van zowel hardware als software mogelijk is.