Client-Server Architecture and its advantages
The main idea inherent in this technology is to minimize the amount of data transmitted over the network, since the main loss of time and failures occur precisely because of the insufficiently high bandwidth of the network.
Many DBMSs divide their work into two levels according to the "Client-Server" architecture. In terms of execution, the program is divided into 2 parts - client and server. On the client side (computer), there is a contact with the outside world. The server computer contains data common to all clients and runs a special database server program that optimizes the execution of client requests.
Therefore, the two-level system "Client-Server" is:
- A client is a processing program, it's a user’s program, it's an executive program. It is usually engaged in the user interface, and all the actual work with the database rests on the shoulders of the database server.
- Database server is the basis, it is the database engine. A separate program that runs as a separate process. Transmits the selected information from the database via an interprocess channel to the client. Only this actually works with data and deals with their placement on the disk.
Client-server architecture: advantages
At the first moment, the question may arise, what are such difficulties for? Here are some considerations in favor of this approach.
The undoubted advantage is the proximity of the data to the calculation processes. Almost all calculations are performed on the server, which increases the performance tens and hundreds of times.
Client-server technology in contrast to file-server technology gives the user greater security, stability, consistency, scalability, increased confidentiality and reliability of information processing and storage. The development of systems with client-server architecture is largely due to the proven fact: connecting to inexpensive servers of inexpensive PCs allows you to get the best price-performance ratio. In most cases, the processing program (client part) is located on one computer, and the database itself is stored on another. Here the division looks quite natural: the client program (or rather, the part of it that is responsible for the user interface), sends over the network requests for processing the data itself to another computer, and there the database server reads them, performs the required, and returns ready answers to the client over the network. Only useful information is transmitted over the network.
Another consideration: work is constantly going on to improve the method of storing and processing information. And if its implementation (i.e., database server) has changed, it will not be necessary to recompile all developed programs with new libraries, but it will be enough to install a new database server instead of the old one and transfer the databases to the new server format (using the utility attached to it). Of course, all this can be done if the new server adheres to the same rules of exchange between it and the user program as the old one, which, however, is certainly the case.
Using many small computers, client-server system developers can emulate the processing power of large computers by distributing the application task across various microcomputers and servers. Each of them takes on its own part of the computational load, using the information in conjunction with other processors in the network. The essence of the idea is to increase the power of the system not by increasing the performance of one computer but by summing up the resourses of many.
Performance is the main factor in the feasibility of developing systems for client-server architecture. The use of rapid Application Development (RAD) tools, such as Delphi by Borland, PowerBuilder by PowerSoft and Visual Basic by Microsoft, allows developers to "stamp" application systems for client - server architecture in record time. Database server technology also becomes easier to use and can be combined with RAD tools on the same systems. Thus, with this fast and practically foolproof development platform, the time required to prepare and transfer the application program to the user is reduced. In conclusion, it is worth noting that the client-server architecture provides web developers with exceptional freedom of choice and coordination of different types of components for the client, server and all intermediates.
The simplest (and considered in the context of this thesis) form of client-server architecture is the division of computational load between two separate processes: the client and the server. Although both the client and the server can reside on the same computer, most systems in this architecture run the client process on one computer and the server process on the other, using network communications to exchange information. In this model, one process can run independently of another, perform specific tasks, and share the computational load.
Typically, the client is a desktop PC running end-user software. End-user software (front - end software) is any application program or package capable of sending requests over a network to a server and processing the information received in response. The server, in turn, receives requests and takes action on behalf of the client.