Архитектура «файл-сервер».
Сетевое многопользовательское приложение строится по принципу файл-серверной архитектуры. Данные в виде одного или нескольких файлов размещаются на файловом сервере. Файловый сервер принимает запросы, поступающие по сети от компьютеров-клиентов, и передает им требуемые данные. Однако обработка этих данных выполняется на компьютерах-клиентах. На каждом из компьютеров запускается полная копия процессора обработки данных Jet Engine. Любая копия Jet независимо управляет файлами MDB, содержащими данные. Единственная связь между этими независимыми действиями — файл блокировок (файл, который имеет имя, совпадающее с именем файла приложения, но с расширением Idb), который обязательно создается для каждого файла базы данных с расширением mdb. При этом каждая копия Jet выполняет изменения индексов, работу с системными таблицами и другие функции, входящие в компетенцию СУБД.
В архитектуре «клиент-сервер» сервер базы данных не только обеспечивает доступ к общим данным, но и берет на себя всю обработку этих данных. Клиент посылает на сервер запросы на чтение или изменение данных, которые формулируются на языке SQL. Сервер сам выполняет все необходимые изменения или выборки, контролируя при этом целостность и согласованность данных, и результаты в виде набора записей или кода возврата посылает на компьютер клиента.
Недостатки архитектуры с файловым сервером очевидны и вытекают главным образом из того, что данные хранятся в одном месте, а обрабатываются в другом. Это означает, что их нужно передавать по сети, что приводит к очень высоким нагрузкам на сеть и, вследствие этого, резкому снижению производительности приложения при увеличении числа одновременно работающих клиентов. Вторым важным недостатком такой архитектуры является децентрализованное решение проблем целостности и согласованности данных и одновременного доступа к данным. Такое решение снижает надежность приложения.
Архитектура «клиент-сервер» позволяет устранить все указанные недостатки. Кроме того, она позволяет оптимальным образом распределить вычислительную нагрузку между клиентом и сервером, что также влияет на многие характеристики системы: стоимость, производительность, поддержку.
Архитектура «клиент-сервер».
Клиент-серверная система характеризуется наличием двух взаимодействующих самостоятельных процессов — клиента и сервера, которые, в общем случае, могут выполняться на разных компьютерах, обмениваясь данными по сети.
Процессы, реализующие некоторую службу, например службу файловой системы или базы данных, называются серверами (servers). Процессы, запрашивающие службы у серверов путем посылки запроса и последующего ожидания ответа от сервера, называются клиентами (clients) .
По такой схеме могут быть построены системы обработки данных на основе СУБД, почтовые и другие системы. Мы будем говорить о базах данных и системах на их основе. И здесь удобнее будет не просто рассматривать клиент-серверную архитектуру, а сравнить ее с другой — файл-серверной.
В файл-серверной системе данные хранятся на файловом сервере (например, Novell NetWare или Windows NT Server), а их обработка осуществляется на рабочих станциях, на которых, как правило, функционирует одна из, так называемых, «настольных СУБД» — Access, FoxPro, Paradox и т.п..
Приложение на рабочей станции «отвечает за все» — за формирование пользовательского интерфейса, логическую обработку данных и за непосредственное манипулирование данными. Файловый сервер предоставляет услуги только самого низкого уровня — открытие, закрытие и модификацию файлов. Обратите внимание — файлов, а не базы данных. Система управления базами данных расположена на рабочей станции.
Таким образом, непосредственным манипулированием данными занимается несколько независимых и несогласованных между собой процессов. Кроме того, для осуществления любой обработки (поиск, модификация, суммирование и т.п.) все данные необходимо передать по сети с сервера на рабочую станцию (см. рис. Сравнение файл-серверной и клиент-серверной моделей)
Рис. Сравнение файл-серверной и клиент-серверной моделей
В клиент-серверной системе функционируют (как минимум) два приложения — клиент и сервер, делящие между собой те функции, которые в файл-серверной архитектуре целиком выполняет приложение на рабочей станции. Хранением и непосредственным манипулированием данными занимается сервер баз данных, в качестве которого может выступать Microsoft SQL Server, Oracle, Sybase и т.п..
Формированием пользовательского интерфейса занимается клиент, для построения которого можно использовать целый ряд специальных инструментов, а также большинство настольных СУБД. Логика обработки данных может выполняться как на клиенте, так и на сервере. Клиент посылает на сервер запросы, сформулированные, как правило, на языке SQL. Сервер обрабатывает эти запросы и передает клиенту результат (разумеется, клиентов может быть много).
Таким образом, непосредственным манипулированием данными занимается один процесс. При этом, обработка данных происходит там же, где данные хранятся — на сервере, что исключает необходимость передачи больших объемов данных по сети.
57.Архитектура файл-сервер.
При наличии компьютерной сети открывается возможность хранить и использовать в многопользовательском режиме централизованные БД, размещаемые на одном компьютере – сервере сети. В этом случае каждый пользователь своего ПК получает доступ к общей для всех пользователей централизованной БД. Существуют различные концепции сетевой обработки данных.
Рассмотрим архитектуру с совместным использованием файлов, которая была разработана до клиент/серверной архитектуры и во многих отношениях является достаточно упрощенной.
Почти во всех системах с совместным использованием файлов применяются локальные сети. Для этой архитектуры характерен коллективный доступ к общей БД на сервере, который является файловым сервером. Файловый сервер содержит файлы, необходимые для работы приложений и самой СУБД. Он обеспечивает функционирование той части сетевой версии СУБД, которая осуществляет управление данными в БД. Однако пользовательские приложения и сама сетевая СУБД размещены и функционируют на отдельных рабочих станциях и обращаются к файловому серверу по мере необходимости.
Рассмотрим организацию архитектуры файл/сервер с использованием настольной СУБД.
Сетевые версии настольных СУБД отличаются от локальных версий тем, что они обладают некоторыми специальными механизмами, позволяющими многим пользователям совместно обращаться к общим ресурсам данных из централизованной базы данных. СУБД на каждой рабочей станции посылает запросы файловому серверу по всем необходимым ей данным, которые хранятся на диске файлового сервера. Все данные из БД пересылаются на компьютер пользователя, независимо от того, сколько реально их нужно для выполнения запроса. В результате на компьютере пользователя создается локальная копия БД (время от времени обновляемая из реальной БД на сервере). Затем СУБД пользователя выполняет запрос.
Недостатки архитектуры файл/сервер
1. Поскольку файловый сервер не может обрабатывать SQL-запросы, то при совместном использовании файлов по локальной сети передаются большие объемы данных (полные копии БД перемещаются по сети с сервера на компьютер клиента). При такой архитектуре трафик[1] в локальной сети достаточно большой.
2. С увеличением объема хранимых данных и числа пользователей снижается производительность настольных СУБД. Из-за этих проблем системы с совместным использованием файлов редко используются для обработки больших объемов данных.
3. При такой архитектуре вся тяжесть выполнения запроса к БД и управления целостностью БД ложится на СУБД пользователя.
4. На каждой рабочей станции должна находиться сама сетевая версия настольной СУБД, что требует наличия больших объемов оперативной памяти на компьютере пользователя.
5. Доступ к одним и тем же файлам могут осуществлять сразу несколько пользователей, что усложняет управление целостностью, восстановлением БД на сервере.
58.Клиент-серверные системы и модели доступа к данным.
Клиент-сервер (англ. Client-server) — сетевая архитектура, в которой устройства являются либо клиентами, либо серверами. Клиентом (front end) является запрашивающая машина (обычно ПК), сервером (back end) — машина, которая отвечает на запрос. Оба термина (клиент и сервер) могут применяться как к физическим устройствам, так и к программному обеспечению. В зависимости от того, как распределены логические компоненты приложения между клиентами и серверами, различают четыре модели архитектуры клиент-сервер:
Основной принцип технологии «клиент-сервер» заключается в разделении функций приложения на три группы:
— ввод и отображение данных (взаимодействие с пользователем);
— прикладные функции, характерные для данной предметной области; — функции управления ресурсами (файловой системой, базой даных и т.д.) Поэтому, в любом приложении выделяются следующие компоненты: компонент представления данных, прикладной компонент, компонент управления ресурсом. Связь между компонентами осуществляется по определенным правилам, которые называют «протокол взаимодействия».Основной принцип технологии «клиент—сервер» применительно к технологии баз данных заключается в разделении функций стандартного интерактивного приложения на 5 групп, имеющих различную природу:
- функции ввода и отображения данных (Presentation Logic);
- прикладные функции, определяющие основные алгоритмы решения задач приложения (Business Logic);
- функции обработки данных внутри приложения (Database Logic);
- функции управления информационными ресурсами (Database Manager System);
- служебные функции, играющие роль связок между функциями первых четырех групп.