Файл-серверные базы данных отличаются от автономных тем, что они могут быть доступны многим клиентам через сеть. Изменения в таких базах данных видят все пользователи.
База данных хранится на сетевом файл-сервере в единственном экземпляре.
Для каждого клиента во время работы создается локальная копия данных, обработка которой осуществляется СУБД клиента.
Рис. 1.
При этом возникают проблемы, связанные одновременным доступом нескольких пользователей к одной и той же информации (пользователь прочел некоторую запись и, пока он ее просматривает и собирается изменить, другой пользователь меняет или удаляет эту запись).
Одним из недостатков файл-серверных баз данных является непроизводительная загрузка сети. При каждом запросе клиента данные в его локальной копии полностью обновляются из базы данных на сервере. Даже если запрос относится всего к одной записи, обновляются все записи данных.
Другой недостаток связан с тем, что забота о целостности данных такой организации работы возлагается на программы клиентов. Если они недостаточно тщательно продуманы, в базу данных легко занести ошибки, которые могут отразиться на всех пользователях.
Б) Клиент/серверные базы данных (и, соответственно, клиент/серверные приложения)
Для больших баз данных с множеством пользователей часто используют базы данных на платформе клиент/сервер.
Сразу отметим, что когда идет речь о клиент/серверных приложениях, то речь идет только о локальных сетях (не об Интернете).
В клиент /серверных приложениях хранение и обработка данных (пополнение, поиск, редактирование, удаление) выполняется на стороне сервера, а клиенту по локальной сети передается только результат (рис.2).
Рис. 2.
В этом случае доступ к базе данных для группы клиентов выполняет СУБД, установленная на сервере. Клиент дает задание серверу выполнить те или иные операции поиска или обновления базы данных. Сервер выполняет их и сообщает клиенту результаты своей работы. Для поступления запросов предназначены один или несколько портов сервера, к которым и обращаются клиентские приложения.
К наиболее известным серверам баз данных относятся Microsoft SQL Server и Oracle.
Многие современные СУБД позволяют создавать и использовать специальные программные компоненты, написанные на языке SQL – так называемые представления, хранимые процедуры, триггеры, помогающие обрабатывать данные на сервере. По сути, эти компоненты представляют собой часть клиентского приложения, расположенную на сервере, которая помогает реализовать часть бизнес-логики проекта, сформированной в виде запросов, приходящих на сервер.
Подобная организация работы повышает эффективность выполнения приложений за счет использования мощности сервера, разгружает сеть, обеспечивает хороший контроль целостности данных.
Итак,
Клиент-серверное приложение = (клиентская часть + серверная часть)
Клиентская часть может содержать:
§ файл проекта
(отметим, что в случае проекта Access – содержит еще и саму СУБД Access, поскольку она работает как интерпритатор.
Все эти объекты размещаются соответственно в файле базы данных Access .mdb и в файле проекта Access .adp);
§ комплекс пользовательских программ, написанных на одном из языков программирования, обеспечивающий доступ к серверу и отражение полученных результатов (Visual C/C++, Visual Basic, Delphy и т.д.);
§ локальные таблицы для хранения временных данных.
При этом хранение данных в файле проекта не предусмотрено: все данные в приложениях должны располагаться на сервере.
серверная часть КСП может содержать:
§ базу данных в любом формате и соответствующую СУБД.