Отличие
архитектуры "клиент-сервер" от архитектуры "файл-сервер"
Такое приложение
от сетевого многопользовательского приложения, которое рассматривалось в предыдущей
главе, отличается только тем, где конкретно ведется обработка данных.
Сетевое многопользовательское
приложение строится по принципу файл-серверной архитектуры. Данные в виде одного
или нескольких файлов размещаются на файловом сервере. Файловый сервер принимает
запросы, поступающие по сети от компьютеров-клиентов, и передает им требуемые
данные. Однако обработка этих данных выполняется на компьютерах-клиентах. На
каждом из компьютеров запускается полная копия процессора обработки данных Jet
Engine. Любая копия Jet независимо управляет файлами MDB, содержащими данные.
Единственная связь между этими независимыми действиями — файл блокировок (файл,
который имеет имя, совпадающее с именем файла приложения, но с расширением Idb),
который обязательно создается для каждого файла базы данных с расширением mdb.
При этом каждая копия Jet выполняет изменения индексов, работу с системными
таблицами и другие функции, входящие в компетенцию СУБД.
В архитектуре
"клиент-сервер" сервер базы данных не только обеспечивает доступ к
общим данным, но и берет на себя всю обработку этих данных. Клиент посылает
на сервер запросы на чтение или изменение данных, которые формулируются на языке
SQL. Сервер сам выполняет все необходимые изменения или выборки, контролируя
при этом целостность и согласованность данных, и результаты в виде набора записей
или кода возврата посылает на компьютер клиента.
Недостатки
архитектуры с файловым сервером очевидны и вытекают главным образом из того,
что данные хранятся в одном месте, а обрабатываются в другом. Это означает,
что их нужно передавать по сети, что приводит к очень высоким нагрузкам на сеть
и, вследствие этого, резкому снижению производительности приложения при увеличении
числа одновременно работающих клиентов. Вторым важным недостатком такой архитектуры
является децентрализованное решение проблем целостности и согласованности данных
и одновременного доступа к данным. Такое решение снижает надежность приложения.
Архитектура "клиент-сервер" позволяет устранить все указанные недостатки. Кроме того, она позволяет оптимальным образом распределить вычислительную нагрузку между клиентом и сервером, что также влияет на многие характеристики системы: стоимость, производительность, поддержку.