Технология клиент- сервер. Технология клиент-сервер
5 Особенности и преимущества архитектуры "клиент/сервер"
Что же представляет собой архитектура клиент/сервер? В определенной степени ее можно назвать возвратом к модели "хост-компьютер + терминалы", так как ядром такой системы является сервер баз данных , представляющий собой приложение, осуществляющее комплекс действий по управлению данными - выполнение запросов, хранение и резервное копирование данных, отслеживание ссылочной целостности, проверка прав и привилегий пользователей, ведение журнала транзакций. При этом в качестве рабочего места может быть использован обычный персональный компьютер, что позволяет не отказываться от привычной рабочей среды (рис.5).
Рис.5. Этап 4: обработка данных в архитектуре "клиент/сервер"
В чем преимущества клиент-серверных информационных систем по сравнению с их аналогами, созданными на основе сетевых версий настольных СУБД?
Одним из важнейших преимуществ является снижение сетевого трафика при выполнении запросов. Например, при необходимости выбора пяти записей из таблицы, содержащей миллион, клиентское приложение посылает лает серверу запрос, который сервером компилируется, оптимизируется и выполняется, после чего результат запроса (те самые пять записей, а вовсе не вся таблица) передается обратно на рабочую станцию (если, конечно клиентское приложение корректно формулирует запросы к серверу). При этом нередко в первом приближении можно не задумываться, а есть ли во обще индекс, способный облегчить поиск нужных записей, - если он есть он будет использован сервером, если нет - запрос все равно будет выполнен, хотя, скорее всего, за большее количество времени.
Вторым преимуществом архитектуры "клиент/сервер" является возможность хранения бизнес-правил на сервере, что позволяет избежать дублирования кода в различных приложениях, использующих общую базу данных Кроме того, в этом случае любое редактирование данных, в том числе и редактирование нештатными средствами, может быть произведено только в рамках этих правил.
Кроме того, для описания серверных бизнес-правил, в наиболее типичных ситуациях (как в примере с заказчиками и заказами) существуют весьма удобные инструменты - так называемые CASE-средства (CASE означает Computer-Aided System Engineering), позволяющие описать подобные правила и создавать реализующие их объекты базы данных (индексы, триггеры), буквально рисуя мышью связи между таблицами, без какого бы то ни было программирования. В этом случае клиентское приложение будет избавлено от значительной части кода, связанного с реализацией бизнес-правил непосредственно в приложении. Отметим также, что часть кода, связанного с обработкой данных, также может быть реализована в виде хранимых проце дур сервера, что позволяет еще более "облегчить" клиентское приложение, г это означает, что требования к рабочим станциям могут быть не столь высоки. Это в конечном итоге удешевляет стоимость информационной системы даже при использовании дорогостоящей серверной СУБД и мощного сервера баз данных.
Помимо перечисленных возможностей современные серверные СУБД обладают многочисленными средствами управления пользовательскими привилегиями и правами доступа к различным объектам базы данных. Как правило, в базе данных хранятся сведения о ее пользователях, их паролях и привилегиях, а каждый объект базы данных, такой, как, например, таблица, принадлежит какому-либо пользователю. Владелец объекта может предоставить другим пользователям право тем или иным способом использовать объект (например, позволить читать из него данные какому-либо другому пользователю).
Некоторые серверные СУБД поддерживают так называемые роли, представляющие собой совокупность прав на доступ к тем или иным объектам базы данных. Это бывает удобно в случае большого количества пользователей с однотипными должностными обязанностями. Возьмем, к примеру, коммерческий банк . Очевидно, что операционистов такого банка может добавлять записи в таблицу, в которой хранятся сведения об операциях по счетам, но не должна редактировать план счетов банка, тогда как другие сотрудники банка в общем случае не должны вносить изменения в таблицу операций по счетам. В случае наличия в банке нескольких десятков операционисток имеет смысл, если данный сервер позволяет, определить соответствующую роль, описать для нее совокупность прав на объекты базы данных и раздать ее нужному контингенту пользователей.
Современные серверные СУБД обладают также широкими возможностями резервного копирования и архивации данных, а нередко и" оптимизации выполнения запросов. Они также, как правило, предоставляют возможность параллельной обработки данных, особенно в случае использования многопроцессорных компьютеров в качестве сервера баз данных.
Итак, клиент-серверная информационная система состоит в простейшем случае из трех основных компонентов:
Сервера баз данных, управляющего хранением данных, доступом и защитой, резервным копированием, отслеживающего целостность данных в соответствии с бизнес-правилами и, самое главное, выполняющего запросы клиента;
Клиента, предоставляющего другим клиентам интерфейс пользователя, выполняющий логику приложения, проверяющий допустимость данных, посылающий запросы к серверу и получающий ответы от него;
Сети и коммуникационного программного обеспечения , осуществляющего взаимодействие между клиентом и сервером посредством сетевых протоколов.
Есть и более сложные реализации архитектуры "клиент/сервер", например трехуровневые информационные системы с использованием сервере приложений, а также информационные системы, использующие Web-сервер, под управлением которого выполняются приложения, доставляющие данные в Web-браузер пользователя.
1.6. Компоненты системы
Клиент
Компьютер-Клиент является входной точкой конечного пользователя в среду клиент-сервер. Для этого рабочая станция должна быть довольно хорошими вычислительными возможностями и быть способной делать запросы общих ресурсов системы. Клиент использует ресурсы, предоставляемые ему одним или более серверов-обработчиков. Клиент является активным членом этой связки - отправляет запросы и получает ответы. Компьютер- клиент в данном случае относится к конкретному пользователю. В некоторых случаях сама рабочая станция может функционировать как клиент, а в некоторых - как сервер. Клиент может быть как на базе Intel 386, так и на мощном RISC процессоре. Эти рабочие станции работают под графическим пользовательским интерфейсом GUI и перед пользователем предстают в не отличающемся друг от друга виде. Взаимодействуя с пользователем, клиент эффективно скрывает сервер и сеть от пользователя, что создает иллюзию целостности приложения и независимости от всех остальных процессов, машин или сетей.
Сервер
Сервер выполняет ряд заданий для многочисленных клиентов. Суть его функционирования в обработке множественных и зачастую спонтанных запросов клиентов. Тем не менее, сервер должен обеспечивать многозадачность и совместный доступ к памяти. Программное обеспечение операционной системы на сервере выполняет те же функции, что и на компьютере-клиенте (например, обработка прерываний и связь), а так же физические процессы записи-чтения данных. Серверы обеспечивают работу программ, обработку баз данных и файлов, печать, факс-передачу, связь, системы ограничения доступа и систему управления сетью. Сервер довольно специфичен, т. е. выполняет определенные заранее функционально связанные процессы.
Сеть
Суть сети системы к/с - в ее неразрывности с внешней средой. Сеть соединяет рабочие станции общими ресурсами и является системой, в которой передаются данные. Сети могут быть классифицированы по их географической протяженности. Локальные сети обслуживают отдельные 1| строения или несколько отдельно стоящих зданий (к примеру, студ. городок). Городские сети обслуживают целые города или метрополии. Далее идут областные и республиканские сети.
Приложения
Программное обеспечение связывает воедино остальные три компонента архитектуры. Основной отличительной чертой является наличие возможностей обработки данных, физически распределяющих их между клиентом и сервером, но для пользователя представляющего единое целое (так называемая совмещенная обработка).
Есть два различного рода программного обеспечения для технологии клиент-сервер. Программное обеспечение, установленное на сервере (back-end tool), обеспечивает сбор, хранение и обработку данных. Примером подобных программ может служить Oracle, Sybase и Ingres.
Программное обеспечение на компьютере-клиенте (front-end application, фронтальное, предварительной обработки данных) более интерактивное, простое в использовании и более дружественное к пользователю. В качестве примера можно привести такие программы, как Developer 2000, Power Builder и Designer 2000.
С ростом популярности технологии к/с на рынке появилось много фирм-производителей соответствующего ПО. Это не могло не привести к хаосу и беспорядку. По мере роста хаоса были выработаны правила, обязующие разработчиков следовать определенным стандартам. В этих стандартах отражено требование совместимости программного обеспечения, используемого на фронтальных машинах и машинах баз данных.
Каждая машина обработки данных имеет свое фронтальное программное обеспечение. Для Oracle это Developer 2000, а для Sybase – Power Builder. Особенностью системы является то, что каждый фронтальный компьютер может общаться с компьютером базы данных. Так, в случае базы данных Oracle, может использоваться приложение Power Builder с небольшими изменениями.
1.6.1 Соберем все части вместе
Система клиент-сервер - это гармоничная композиция трех отдельных технологий, работающих в неразрывной связке, чтобы обеспечить эффективное хранение и быстрый доступ к данным.
Программное обеспечение на компьютере клиенте, так называемое фронтальное ПО, отвечает за экран и ввод-вывод информации пользователем. Программное обеспечение на сервере несет ответственность за обработку введенной информации и доступ к дискам данных. К примеру, пользователь на машине-клиенте создает запрос данных в базе, фронтальная программа посылает данный запрос через сеть к серверу. Сервер базы данных проводит поиск, и отправляет обратно соответствующие запросу данные (см. устройство системы на рис.6).
Рис.6. Устройство системы «клиент-сервер»
1.7 Многозвенные информационные системы Internet
Распределенные информационные системы представляют собой следующий этап развития архитектуры информационных систем. Потребность в ни появляется при дальнейшем укрупнении информационных систем, связанное с увеличением количества пользователей, появлением удаленных филиалов необходимостью в централизованном хранении и обработке данных. В случае большого числа пользователей возникают проблемы своевременной и синхронной замены версий клиентских приложений на рабочих станция (особенно в случае территориальной разбросанности предприятия), проблемы поддержания настроек, а также перегрузки сети и сервера баз данных.
Эти проблемы решаются путем создания многозвенных информационных систем с "тонким" клиентом (рис.7).
В этом случае проблема поддержки настроек решается за счет переноса и на промежуточное звено (такое программное обеспечение носит название middleware), называемое сервером приложений. На него же можно возложит и другие функции, например проведение расчетов, обработку данных, генерацию отчетов. Соответственно эти же функции изымаются из клиентского приложения, поэтому снижаются требования, как к ресурсам рабочей станции так и к частоте обновления самого клиентского приложения. При разумном распределении функций между сервером приложений и клиентом последний, обычно содержит лишь функциональность, связанную с предоставлением пользователю интерфейса для просмотра и редактирования. По этой причине обычно называется "тонким" клиентом (в отличие от классического "толстого клиента, характерного для традиционной архитектуры "клиент/сервер").
Что касается своевременного обновления версий "тонкого" клиента, эта проблема нередко решается путем поставки приложений с помощью технологий, применяемых в Internet (использование Web-серверов, Web-браузеров, Internet-протоколов). Если речь идет о сети масштаба предприятия, в которой используются для корпоративных целей подобные технологии, то обычно употребляется термин intranet.
Рис.7. Этап 5: обработка данных в многозвенной архитектуре
Наиболее распространенными на сегодняшний день способами поставки "тонких" клиентов с помощью таких технологий являются копирование или установка приложений с Web-сервера, и как один из вариантов - копирование компонента ActiveX, полностью реализующего функциональность "тонкого" клиента, с целью отображения его в браузере.
Говоря об использовании Internet/Intranet, нельзя не остановиться на возможностях создания приложений для Web-серверов. Такие приложения, с одной стороны, могут являться клиентами серверных СУБД, а с другой стороны, обычно генерируют динамические HTML-страницы (в том числе с данными из этих СУБД) по запросу клиентского приложения, роль которого в данном случае выполняет Web-браузер (называемый в этом случае "ультратонким" клиентом, рис.8). Отметим, что в последнее время такие приложения получают все большее распространение.
Рис.8. Принципы работы Web-приложения
1.8 Зачем нужны многозвенные информационные системы
Информационные системы, созданные на основе классической архитектуры "клиент/сервер", называемые двухзвенными системами или системами с "толстым" клиентом, состоят из сервера баз данных, содержащего сгенерированные тем или иным способом таблицы, индексы, триггеры и другие объекты, реализующие бизнес-правила данной информационной системы, и одного или нескольких клиентских приложений, предоставляющих интерфейс пользователя и производящих проверку допустимости и обработку данных, согласно содержащимся в них алгоритмам. Если говорить о клиентских приложениях, созданных для доступа к источникам данных они применяют вызовы функций прикладных программных интерфейсов клиентских частей соответствующих серверных СУБД. Эти вызовы осуществляются например посредством использования библиотеки Borland Database Engine (BDE), хотя в целом это не является обязательным (например, некоторые пользователи Oracle непосредственно вызывают функции Oracle Call Interfase в своих приложениях). Соответственно подобное клиентское приложение требует наличия на компьютере Конечного пользователя клиентской части применяемой серверной СУБД (и наличия лицензии на ее использование) и присутствия в оперативной памяти набора динамически загружаемых библиотек как из клиентской части, так и из ВDE (либо иной заменяющей ее библиотеки), таких, как драйверы баз данных, библиотеки, содержащие функции API клиентских частей и др. При использовании доступа посредством ООВС требуется также наличие на рабочей станции соответствующего ODBC-драйвера и ODBC администратора. Это усложняет технические требования, предъявляемые аппаратной части клиентской рабочей станции, и в конечном итоге приводит к удорожанию всей системы в целом (рис.9).
Другим фактором, приводящим к удорожанию эксплуатации информационной системы, является необходимость инсталляции и конфигурации BDE, ODBC и клиентской части серверной СУБД, что нередко является весьма трудоемким процессом, особенно при большом количестве и неоднородном парке рабочих станций. Отметим, что при создании дистрибутива клиентского приложения, как правило, можно включить в него BDI, но в подавляющем большинстве случаев в него нельзя включить клиентскую часть серверной СУБД, так как она должна быть установлена в соответствии с правилами, указанными в лицензионном соглашении производителя серверной СУБД.
Есть и еще один немаловажный фактор: чем сложнее конфигурация, обеспечивающая доступ к данным рабочей станции, тем чаще происходят нарушения в ее работе. По данным некоторых западных источников, переконфигурация и сопровождение программного обеспечения, позволяющего рабочим станциям получить доступ к данным, приводит в среднем к четырем дням простоя рабочей станции в год.
Имеется еще один фактор, напрямую связанный с немалой популярностью средств разработки, использующих BDE. На сегодняшний день как на российском, так и на мировом рынке имеется немалое количество различных программных продуктов (в особенности энциклопедий и справочников), при инсталляции которых устанавливается и BDE. В этом случае нет никакой гарантии, что версия BDE, входящая в комплект поставки такого продукта, окажется новее, чем используемая в корпоративной информационной системе, и что программа установки не перепишет файл конфигурации BDE, заменив его своим (это, конечно, противоречит правилам создания дистрибутивов, но такие случаи время от времени случаются даже с неплохими коммерческими продуктами). И то и другое обычно приводит к нарушению работоспособности программного обеспечения, предоставляющего доступ к данным.
Рис.-9. Классическое клиентское приложение («толстый» клиент).
Выходом из этой ситуации является создание систем с так называемым "тонким" клиентом, в частности с клиентом, не содержащим в своем составе BDE и клиентскую часть серверной СУБД. В этом случае функциональность, связанная с доступом к данным (а нередко и какая-либо иная функциональность), возлагается на другое приложение, называемое обычно сервером приложений и являющееся клиентом серверной СУБД. В свою очередь, клиентские приложения обращаются не непосредственно к серверной СУБД с помощью вызова функций клиентских API, а к серверу приложений, являющемуся для них источником данных, при этом собственно клиентская часть серверной СУБД и библиотеки типа BDE на рабочей станции, где используется такое клиентское приложение, присутствовать не обязаны. Вместо них (например) применяется одна-единственная динамически загружаемая библиотека. Таким образом, созданная информационная система становится трехзвенной, а сервер приложений является средним звеном в цепи "тонкий клиент - сервер приложений - сервер баз данных" и, соответственно, относится к классу продуктов middleware (рис.10).
Рис.10. Решение проблем: "тонкий" клиент и сервер приложении
Как может быть практически реализована данная технология? С одно стороны, с помощью набора компонентов и классов, обеспечивающих создание серверов приложений и клиентских частей, а с другой стороны, с помощью MIDAS, позволяющего осуществлять запуск удаленных серверов приложений, осуществлять межреестровый обмен сведениями об OLE-серверах и оптимизировать нагрузку в случае использования нескольких серверов приложений. В данной главе будут рассмотрены простейшие практические примеры реализации подобной трехзвенной системы.
1.9 ТЕРМИНОЛОГИЯ РАСПРЕДЕЛЕННЫХ СУБД
В этом разделе в общих чертах описываются специфичные термины, которые используются в книге и касаются взаимодействия компонентов и программ. Такое взаимодействие неизбежно для распределенных СУБД, поэтому, если вы собираетесь разрабатывать только локальные СУБД, можете пропустить этот раздел.
На сегодняшний день существуют три параллельно развивающиеся и конкурирующие технологии взаимодействия объектов и программ: MIDAS (Multitier Distributed Application Srevices Suite), СОМ (Common Object Model - компонентная модель объектов) корпорации Microsoft, CORBA (Common Object Require Broken Architecture - архитектура с поставщиком требуемых общих объектов) независимой группы OMG. Основные принципы этих технологий и использующиеся в них термины описываются ниже.
1.10 Технология MIDAS
Midas (Multitier Distributed Application Srevices Suite) - новый продукт компании Inprise (Borland), предназначенный для эксплуатации сервера приложений, созданных с помощью C++ Builder 3 и Delphi 3. Этот продукт расширяет возможности, предоставляемые разработчикам технологией Microsoft DCOM (Distributed Component Object Model). Этот продукт позволяет обеспечить высокую производительность, надежность и защиту от сбоев при эксплуатации подобных систем.
Архитектура трехзвенной информационной системы, построенной с использованием MIDAS, представлена на рис. 11.
Рис.11. Архитектура трехзвенной информационной системы с использованием MIDAS
Рассмотрим, что представляют собой технологии, используемые в MIDAS.
Remote Data Broker позволяет создавать распределенные трехзвенные информационные системы, состоящие из серверной СУБД, среднего звена и "тонкого" клиента, при этом среднее звено может в общем случае состоять из нескольких серверов приложений и функционировать на нескольких компьютерах. Заметим, что "тонкий" клиент (пример создания которого был рассмотрен выше) представляет собой приложение, не содержащее бизнес-правил, а лишь предоставляющее интерфейс пользователя.
Источником данных для "тонкого" клиента является сервер приложений, получающий от клиента запросы на выборку или изменение данных. При получении такого запроса сервер приложений обращается к серверу баз данных, клиентом которого он является, со своим собственным запросом. Получив от сервера результат выполнения собственного запроса, сервер приложений передает данные клиенту.
Компонент для хранения данных, полученных от сервера приложений, в кэше клиента и обладает как навигационными методами, так и методами, осуществляющими редактирование данных. Кроме того, этот компонент обладает методами позволяющими сохранять данные из кэша в файле и восстанавливать их оттуда, реализуя так называемую "briefcase model"- модель обработки данных, основанную на том, что "тонкий" клиент осуществляет редактирование данных по большей части при отсутствии соединения с сервером, используя лишь кэш или локальные внешние устройства, и лишь иногда соединяется с сервером приложений для передачи ему измененных данных с целью дальнейшей обработки.
Как только клиент получает набор данных от сервера приложений, этот набор может быть использован компонентом, который наряду с другими компонентами, а также поддерживающими их функционирование библиотеками составляет клиентскую часть Remote Data Broker.
Отметим, что Remote Data Broker предоставляет разработчикам широкие возможности для решения характерных для многопользовательского доступа к данным проблем, связанных с попытками одновременного редактирования несколькими пользователями одних и тех же данных. В данном случае механизм блокировок, применяемый в традиционной двухзвенной модели "клиент/сервер", может оказаться неэффективным или даже неприемлемым, так как промежуток времени между редактированием записи и сохранением ее в базе данных может быть весьма длительным. Поэтому при попытке сохранения сервером приложений измененной записи в базе данных производится поиск изменяемой записи либо по ключевому полю, либо по всем полям в зависимости от значения свойства ответственного за этот процесс компонента на сервере приложений и сравнение всех полей изменяемой записи с исходными значениями (т. е. теми, которые были в кэше клиента на момент получения этой записи с сервера до того, как пользователь изменил в кэше эту запись). Если какие-либо поля за время между получением оригинала записи клиентом и попыткой сохранить изменения были модифицированы другим пользователем, запись может быть передана обратно в клиентское приложение для дальнейшей обработки пользователем.
Отметим также, что удаленные модули данных (объекты Remote Data Module), входящие в состав серверной части Remote Data Broker, позволяют предоставить DCOM-интерфейс для| соответствующих объектов, делая их управляемыми извне и превращая, таким образом, сервер приложений в DCOM-сервер. Осуществляется такая публикация объектов путем выбора опции экспорта из удаленного модуля данных та контекстного меню соответствующего компонента при разработке сервера приложений.
Business Object Broker осуществляет для "тонкого" клиента поиск нужного сервера приложений среди доступных извне серверов, опубликованных в глобальном реестре - global registry, представляющем собой открытые части реестров компьютеров, содержащих серверы приложений. Применяется он в случае, когда требуется дублирование серверов приложений и возможность при сбое работы используемого сервера приложений подключить Клиентское приложение к другому серверу, либо при необходимости равномерного распределения клиентов по серверам приложений. Еще одной важной составляющей частью MIDAS является ConstraintBroker, дающий возможность использовать бизнес-правила сервера баз данных "тонким" клиентом. Обычно при проектировании баз данных бизнес-правила и правила ссылочной целостности реализуются в виде объектов базы данных, таких, как индексы, триггеры, хранимые процедуры. Такой подход к проектированию данных позволяет использовать эти объекты различными клиентскими приложениями без написания дополнительного кода.
В случае классической двухзвенной клиент-серверной информационной системы при изменении данных клиентское приложение пытается отправить измененную запись на сервер, а сервер, в свою очередь, пытается сохранить ее в базе данных, начав соответствующую транзакцию. Если запись не удовлетворяет условиям ссылочной целостности, определенным на сервере, производится откат транзакции и сервер возвращает клиентскому приложению сообщение об ошибке, после чего пользователь должен будет корректировать предназначенные для сохранения данные. Если подобные случаи происходят часто, это приводит к перегрузке сети и увеличению времени отклика сервера.
Чтобы уменьшить количество отправляемых на сервер некорректных записей, иногда часть бизнес-правил воспроизводят в клиентском приложении. В этом случае частичный контроль соответствия записи бизнес-правилам производится без обращения к серверу, но возможность отправки некорректной записи все же сохраняется, так как обычно код, содержащийся в хранимых процедурах и триггерах, в клиентских приложениях не воспроизводится. Кроме того, при изменении бизнес-правил такое приложение требует внесения в него изменений, что влечет за собой трудозатраты, связанные с установкой и конфигурацией новой версии на рабочих станциях.
При использовании ConstraintBroker эта проблема решается по-другому. В этом случае Remote Data Broker не только доставляет данные клиентскому приложению, но и обращается к словарю данных сервера приложений с целью получения ограничений сервера и передачи их клиенту. Соответственно при попытке передачи записи на сервер приложений анализ соответствия записи правилам сервера производится непосредственно в клиентском приложении без обращения к серверу баз данных, что снижает загрузку серверов и сети. Отметим, что при изменении бизнес-правил следует внести соответствующие изменения в словарь данных сервера приложений, что можно сделать с помощью входящей в состав MIDAS утилиты, позволяющей помимо этого вносить серверные ограничения, создавать и изменять таблицы, индексы, триггеры, хранимые процедуры, правила ссылочной целостности на сервере баз данных.
Таким образом, использование технологии MIDAS позволяет создавать многозвенные информационные системы с "тонким" клиентом, не нуждающимся в инсталляции и настройке, обеспечивая защиту от сбоев в работе серверов приложений, а также снижение загрузки серверов и сети за счет переноса бизнес-правил и серверных ограничений в клиентское приложение вместе с данными.
Помимо перечисленных очевидных преимуществ трехзвенной архитектуры MIDAS также предоставляет разработчикам дополнительные возможности повышения надежности созданной информационной системы. Например, при наличии в сети нескольких однотипных серверов приложений Сбой одного из них приведет к распределению подключенных к нему "тонких" клиентов по другим серверам - это сделает Business Object Broker. Он же обеспечивает и равномерную загрузку серверов приложений клиентскими соединениями.
Но это еще не все. Именно трехзвенная архитектура позволяет реально осуществить централизацию хранения и обработки данных с одновременным доступом к актуальной информации I случае, когда рабочая станция находится на значительном расстоянии от сервера приложений исключающем прокладку локальной сети, так как доступ к серверу приложений может осуществляться » иными способами, такими, как модемное соединение или доступ через Internet. Требования к надежности такого соединения невысоки, так как при использовании подобной архитектуры активно применяется кеширование данных на рабочей станции, и при этом применение ConstraintBroker позволяет проверять соответствие изменяемых данных правилам сервера непосредственно на рабочей станции, поэтому применение "тонких" клиентов и серверов приложений, управляемых MIDAS, является одним из решений для территориально разбросанных предприятий, организаций с удаленными филиалами, в том числе в других городах и странах.
1.11 Технология СОМ
Технология СОМ разрабатывается корпорацией Microsoft и предназначена для того, чтобы одна программа (клиент) смогла заставить работать объект, являющийся частью другой программы (частью сервера), так, как если бы этот объект был частью клиента, причем обе программы в общем случае могут быть расположены на разных компьютерах (в том числе - находящихся в разных частях света), написаны на разных языках и исполняться под управлением разных операционных систем. Более того, сами компьютеры могут быть разного типа - например, IBM-совместимый ПК и рабочая станция SUN.
Ключевым аспектом СОМ является так называемый интерфейс. Интерфейс имеет уникальный идентификатор и набор параметров, описывающих методы, события и свойства общего объекта. Идентификатор интерфейса ID (Interface Identifier) является частным случаем GUID (Global Unique Identifier - глобально уникальный идентификатор). В состав Windows32 включены функции, генерирующие GUID, причем вероятность совпадения двух GUID ничтожно мала. Параметры интерфейса в общем случае описывают некоторый класс с идентификатором CLSID (Class ID реализуется как GUID), т. е. типы и имена используемых в нем полей, количество и типы параметров обращения к доступным методам и свойствам, имена методов и свойств и т. д. Получив интерфейс внешнего СОМ-объекта, клиент может его использовать так же, как свои собственные объекты. Любой СОМ-объект имеет интерфейс IUnknow, с помощью которого он может получить доступ к основному интерфейсу объекта.
Сервер СОМ представляет собой исполняемую программу или DLL, содержащую один или несколько объектов СОМ.
В зависимости от местоположения клиента и сервера возможны три варианта:
Клиент и сервер располагаются на одной машине и запускаются в одном процессе (именно так взаимодействует программа Delphi с компонентами ActiveX)", в этом случае сервер представляет собой DLL; клиент и сервер располагаются на одной машине, но запускаются в разных процессах (например, таблицы Exel вставлены в документ Word); в этом случае сервер представляет собой программу;
Клиент и сервер располагаются на разных машинах; сервером может быть как программа, так и DLL, используется распределенный вариант СОМ, который называется DСОМ (DСОМ).
В первом случае клиент с помощью интерфейса объекта непосредственно обращается к методам объекта в своем собственном адресном пространстве (рис.12).
Рис.12 Взаимодействие клиента и сервера в одном процессе.
Если сервер запускается в другом процессе или на другой машине, между объектом и клиентом располагаются два посредника - Proxy (уполномоченный) и Stub (заглушка) (рис.13). Клиент помещает параметры вызова в стек и обращается к методу интерфейса объекта. Однако это обращение перехватывает Proxy, упаковывает параметры вызова в пакет СОМ и направляет его в Stub другого процесса, возможно, на другой машине. Stub распаковывает параметры, помещает их в стек и делает вызов нужного метода объекта. Таким образом, метод объекта выполняется в собственном адресном пространстве процесса сервера.
1.12 Технология CORBA
Подобно СОМ, в CORBA активно используется интерфейс объекта. Главным отличием CORBA от СОМ является интегрированный в нее слой, реализующий доступ к удаленным объектам.
В соответствии с этой технологией схема взаимодействия клиента и сервера выглядит следующим образом (рис.14).
На машине клиента создаются два объекта-посредника: Stub (заглушка) и ORB (Object Require Broker - брокер требуемого объекта). Stub выступает как полномочный представитель объекта: с помощью интерфейса объекта клиент обращается к Stub так, как если бы это был сам объект.
Рис.13. Взаимодействие клиента и сервера в разных процессах.
Рис. 14. Взаимодействие клиента и сервера в CORBA.
Получив вызов метода, Stub транслирует этот вызов объекту ORB, который посылает в сеть широковещательное сообщение. На это сообщение откликается один из объектов Smart Agent((«умный» агент), установленный в сетевом окружении клиента (как в локальной сети, так и в Internet). Smart Agent моделирует сетевой каталог, в котором зарегистрированы известные ему серверы объектов. Он отыскивает нужный сетевой адрес сервера и передает запрос объекту ORB на машине сервера. Заметим, что обмен данными между ORB (клиента и сервера) и Smart Agent осуществляется с использованием специального протокола UDP, который более бережно использует сетевые ресурсы, чем протокол ТСР. Через ВОА (Basic Object Adapter - базовый объектный адаптер) данные получает особый объект сервера, который называется Skeleton (скелет). Skeleton помещает параметры вызова в стек адресного пространства объекта и реализует собственно вызов. Роль объекта ВОА заключается в фильтрации обращений к объекту сервера: с помощью его методов сервер через Skeleton может объявить некоторые свои поля и свойства доступными только для чтения иди вовсе срытыми от данного клиента. (Поскольку в рамках технологии данные, которыми обмениваются клиент и сервер, рассматриваются просто как цепочки байт, клиент должен поместить в буфер вызова свой авторизованный ключ в системах, защищенных от «посторонних» клиентов.)
«Изюминкой» CORBA является способ описания интерфейса объекта. Для этих целей разработан специальный язык IDL (Interface Definition Language - язык описания интерфейса), очень напоминающий язык С++. После описания интерфейса в терминах этого языка компилятор IDL автоматически создает объекты Stub и Skeleton. Обмен информацией об интерфейсе между разработчиками осуществляется в терминах языка высокого уровня, в то время как компилятор описания интерфейса переводит его текст в машинные инструкции конкретного компьютера (клиента или сервера). В результате достигается высокая степень независимости обмена данными от аппаратных средств клиента и пользователя.
Для реализации технологии в сетевом окружении клиента должен существовать хотя бы один Smart Agent. Если обмен данными осуществляется в локальной сети офиса, Smart Agent устанавливается на головную машину (на файл-сервер или машину с SQL-сервером), а при обмене данными по Internet - на одном из ее узлов. При создании сервера осуществляется автоматическая регистрация объектов в одном или нескольких Smart Agent. Таким образом, Smart Agent «знает», по каким сетевым адресам расположены его серверы. Это позволяет системе повысить свою надежность: если в одном из серверов произошел сбой, Smart Agent повторит вызов и при повторном сбое переключится на другой сервер.
1.13 Некоторые выводы
Таким образом, архитектура "клиент/сервер" обладает рядом существенных преимуществ по сравнению с традиционной архитектурой информационных систем, основанных на сетевых версиях настольных СУБД: более высокой производительностью, более низким сетевым графиком, улучшенными средствами обеспечения безопасности и целостности данных, возможностью задания бизнес-правил.
Отметим также, что существуют возможности совершенствования клиент-серверных систем путем перехода к многозвенной архитектуре с "тонким" клиентом либо, в случае необходимости, к приложениям для Web-серверов.
1.14. Применение систем Клиент/Сервер
Применение систем клиент-сервер в основном сконцентрировано в:
Банковском деле;
Системе продаж авиа билетов;
Сети Интернет.
Банковское дело
Все мы хорошо знакомы с основными банковскими операциями . Вот они:
2. Размещение и снятие с депозита наличных и безналичных денег ;
3. Предоставление займов;
4. Инвестиции;
5. Следование инструкциям банковского клиента.
Это лишь некоторые из многих функций, исполняемых банком в наши дни. Глобализация экономики привела к широкому распределению филиалов банков по стране. Так, например, у клиента банка открыт счет в Нью-Йорке, а оплатить чек он желает в Лос-Анджелесе, или получить наличными из банкомата во Флориде.
Возможности, о которых мы ранее могли только мечтать, стали реальностью с появлением архитектуры клиент-сервер. Как это выглядит сейчас. Вкладчик, открывший счет в Лос-Анджелесе, хочет снять деньги во Флориде. Он находит ближайший филиал во Флориде и снимает деньги при помощи банковской машины.
Как происходит перевод?
После того, как пользователь вводит номер счета, локальный терминал передает запрос по номеру и сумму счета к узловому компьютеру. Сервер сличает номер счета и проверяет достаточность баланса. Если на счету достаточно денег, с него снимается нужная сумма, и новый баланс «прописывается» на сервере. Это способ проплаты платежей между локальным терминалом и сервером.
Система продаж авиабилетов
Сегодня, например, можно заказать в Коннектикуте билеты на рейс компании TWA из Нью-Йорка через Санкт Луис в Сан-Франциско. Это стало возможным благодаря комбинированным технологическим усилиям сконфигурированных по типу клиент-сервер сетей и баз данных.
По мере того, как необходимо купить билет на самолет из Нью-Йорка в Санкт Луис, из Санкт Луиса в Сан-Франциско, резервируется место для путешественника. Преимущество данной системы в том, что на запрос, сделанный пассажиром из Нью-Йорка о состоянии его заказа, будет выдан ответ на терминал покупки именно о его билетах.
Интеренет
Интернет - это наиболее яркий пример организации системы по типу клиент-сервер. Интернет можно назвать широчайшей подборкой различного материала, доступ к которому можно получить в любой точке мира. Некоторое время назад доступ к ней могли получить те, кто точно знал, где она расположена. Архитектура к/с сделала ее общедоступной.
Известно, что Интернет представляет собой совокупность малых сетей, расположенных по всему миру. Для того, чтобы все сети могли понимать друг друга, необходимо, чтобы они изъяснялись на одном и том же языке, названном ТСР/IР. Вне зависимости от географического расстояния и платформы становится возможным клиентским и серверным машинам разговаривать друг с другом.
Давайте посмотрим, почему Мировая Паутина (WWW) может быть названа наиболее популярным программным приложением к/с в сети Интернет.
Предположим, WWW является подборкой множества страниц информации различного рода - спорт, религия, технология, театр, искусство, музыка, и все это хранится на компьютере. Такой содержащий информацию компьютер называется Веб Сервером. Компьютер-клиент по запросу пользователя обращается к серверу, и запрос этот производится при помощи программы-броузера. Броузер показывает содержимое сервера в форме списка, очень похожего на оглавление книги. Пользователь может выбрать то, что он желает, и запрашивает это на сервере. Сервер выдает именно ту информацию, по которой был запрос.
1.15. Примеры развития серверов индивидуальных баз данных
Так как их главные функции остаются теми же, индивидуальные серверы баз данных различаются в зависимости от области применения. Некоторые из этих различий приведены ниже:
Совместимость между собой;
Оптимизация и производительность;
Контроль за целостностью данных;
Обработка переводов;
Конкурентоспособность, защита от зависаний и контроль многопользовательского доступа;
Защита от несанкционированного доступа и проверка подлинности клиента;
Резервирование, восстановление данных и другие функции базы.
К достоинствам системы клиент/сервер следует отнести:
сильную централизованную защиту;
центральное хранилище файлов;
возможность совместного использования серверами доступного технического и программного обеспечения;
простую управляемость при большом числе пользователей и
централизованную организацию, предотвращающую потерю данных на компьютерах.
Недостатками же этой системы являются:
дорогое техническое обеспечение;
дорогие серверные операционные системы и клиентские лицензии;
кроме того, часто требуется администратор сети.
27.Распределенные информационные системы и обработка транзакций Понятие транзакции в информационной системе.
К современным информационным системам предъявляются жесткие требования надежности. Никакие отказы и сбои не должны порождать рассогласование данных информационной системы. Не менее важно предотвращать рассогласование данных, порождаемое параллельной работой нескольких пользователей с одними и теми же данными.
Одним из распространенных методов обеспечения отказоустойчивости систем является восстановление ближайшего по времени корректного состояния системы. Этот принцип ложится в основу обработки транзакций.
Все операции с данными можно представить в виде набора логических единиц работы, которые, возможно, пересекаются по времени выполнения. Считается, что изначально данные информационной системы согласованы и ее состояние корректно. Это означает, что:
удовлетворяются все ограничения, накладываемые на наборы данных моделью системы (логическая целостность);
состояние файлов хранилища данных корректно (физическая целостность), т. е. ни один из элементов хранилища не является испорченным с точки зрения СУБД и, возможно, других систем, если физическую целостность хранилища обеспечивает не только СУБД.
Очевидно, что требуется обеспечить согласованность данных информационной системы в течение всего времени ее работы.
Очевидно, что операции чтения данных, не изменяющие состояния базы данных, не могут нарушить целостность данных. Операции модификации данных информационной системы всегда должны довольно жестко контролироваться. На данный момент наиболее распространены механизмы контроля операций с данными информационной системы (как операций записи данных, так и операций чтения данных) посредством транзакций.
Приведем пример простой информационной системы: пусть в ней содержатся данные о клиентах банка и информация о текущем состоянии счета каждого клиента (например, для простоты, в одной валюте - в рублях). Пусть эта упрощенная информационная система обеспечивает единственную операцию - перевод денег с одного счета на другой. Очевидно, что такая операция перевода денег может быть разложена на две атомарные операции: (1) снятие суммы с одного счета и (2) добавление суммы к другому счету. Очевидно, что информационная система будет всегда находиться в корректном состоянии, если допускается выполнение только пар таких операций. Тогда не будут возникать суммы, которые уже сняты с одного счета, но, ни на какой другой счет еще не поступили. Также очевидно, что если пользователь получил подтверждение перевода денег с одного счета на другой, то информация об этой операции ни в коем случае не должна быть утеряна, а сохранность этой информации не должна зависеть от возможных отказов информационной системы.
В случае отказа пользовательской части (например, в случае разрыва связи с информационной системой), который произошел в промежуток времени между выполнением действия (1) и действия (2), операция перевода денег аннулируется, так для сохранения согласованности данных требуется прохождение пары атомарных операций. В случае отказа системы непосредственно после того, как она послала уведомление пользователю, что перевод денег осуществлен успешно, информация об этой операции должна быть сохранена. Обе эти ситуации отказа должны быть обработаны. Если информационная система не предоставляет сервис такого уровня, то она ненадежна, а в современных условиях просто не пригодна к эксплуатации.
В данном примере продемонстрирована простейшая транзакция - перевод денег с одного счета на другой. Здесь она является логически завершенной последовательностью действий над данными информационной системы, не нарушающей ограничения целостности. Очевидно, что при работе нескольких пользователей с данной информационной системой согласованность данных должна быть обеспечена на том же уровне, что и при работе с информационной системой единственного пользователя. Пользователь не должен видеть, что кроме него с системой работают еще какие-то пользователи.
С одной стороны, информационная система должна автоматически обеспечивать согласованность данных при любых сбоях, а так же обеспечивать сохранность данных. С другой стороны, никакие действия пользовательских приложений не должны приводить к рассогласованию данных информационной системы. Так, в приведенном выше примере информационной системы, не допустимы приложения, выполняющие только действие (1) или выполняющие только действие (2). Это означает, что набор действий над данными информационной системы строго ограничивается правилами. Для упомянутой выше информационной системы таким правилом является разрешение выполнения только пар операций (1) и (2) и запрет любых других действий над данными информационной системы.
Современные информационные системы обеспечивают выполнение запросов нескольких пользователей одновременно. Трудно представить, например, банк, который в каждый момент времени обслуживает одного единственного клиента. У пользователя должна создаваться иллюзия монопольного доступа к системе; параллельная работа нескольких пользователей не должна приводить к рассогласованию данных информационной системы.
Определение транзакции можно дать с двух точек зрения.
С точки зрения пользователя транзакция представляет собой последовательность операторов языка SQL, которая рассматривается как некоторое неделимое действие над базой данных.
С точки зрения аппаратно-программного комплекса транзакция - это логическая единица работы системы, реализующая некоторую прикладную функцию, например, перевод денег с одного счета на другой в банковской системе.
Технология «клиент-сервер», заменившая технологию «файл-сервер», является более мощной, так как позволила совместить достоинства однопользовательских систем (высокий уровень диалоговой поддержки, дружественный интерфейс, низкую цену) с достоинствами более крупных компьютерных систем (поддержкой целостности, защитой данных, многозадачностью). Она за счет распределения обработки сообщения между многими ПК повышает производительность, позволяет пользователям электронной почты распределять работу над документами, обеспечивает доступ к более совершенным доскам объявлений и конференциям.
В классическом понимании СУБД представляет собой набор программ, позволяющих создавать и поддерживать базу данных в актуальном состоянии и обслуживать запросы пользователей. Функционально СУБД состоит из трех частей: ядра базы данных, языка и инструментальных средств программирования. Инструментальные средства программирования относятся к интерфейсу клиента, или внешнему интерфейсу. Они могут включать процессор обработки данных на языке запросов. Наиболее употребительными языками являются SQL и QBE. Язык – это совокупность процедурных и непроцедурных команд, поддерживаемых СУБД. В последнее время наблюдается тенденция применения объектно-ориентированных языков (Visual Objects – VO) для разработки приложений с использованием СУБД. Например, такие СУБД, как FoxPro, Dbase, расширены визуальными редакторами.
Ядро выполняет все остальные функции, которые включены в понятие «обработка базы данных». Термины «ядро », «сервер базы данных », «внутренний интерфейс » – синонимы.
Основная идея технологии «клиент-сервер» заключается в том, чтобы расположить серверы на мощных машинах, а приложения клиентов, использующих язык инструментальных средств, – на менее мощных машинах. Тем самым будут задействованы ресурсы более мощного сервера и менее мощных машин клиентов. Ввод-вывод к базе основан не на физическом дроблении данных, а на логическом, т.е. клиентам отправляется не полная копия базы, а сервер посылает только логически необходимые порции, тем самым, сокращая трафик сети. Трафик сети – это поток сообщений сети. В технологии «клиент-сервер» программы клиента и его запросы хранятся отдельно от СУБД. Сервер обрабатывает запросы клиентов, выбирает необходимые данные из базы данных, посылает их клиентам по сети, производит обновление информации, обеспечивает целостность и сохранность данных.
Рассмотрим основные виды технологии распределенной обработки данных:
1. Технология «клиент-сервер», ориентированная на автономный компьютер, т.е. и клиент, и сервер размещены на одной ЭВМ. По функциональным возможностям такая система аналогична централизованной СУБД. Ни распределенная обработка, ни распределенная СУБД не поддерживаются.
2. Технология «клиент-сервер», ориентированна на централизованное распределение. Клиенты получают доступ к данным одиночного сервера. Данные могут только считываться. Динамический доступ к данным реализуется посредством удаленных транзакций и запросов. Их число должно быть невелико, иначе снизится производительность системы.
3. Технология «клиент-сервер», ориентированная на локальную вычислительную сеть. Единственный сервер обеспечивает доступ к базе. Клиент формирует процесс, отвечающий за содержательную обработку данных, их представление и логический доступ к базе. Доступ к базе данных замедлен, так как клиент и сервер связаны через локальную сеть.
4. Технология «клиент-сервер», ориентированная на изменения данных в одном месте. Удаленные серверы не связаны между собой сетью ЭВМ, т.е. отсутствует сервер-координатор. Клиент может изменять данные только в своей локальной базе. Возникает опасность «смертельных объятий», т.е. ситуация, когда задача А ждет записи, заблокированные задачей В, а задача В ждет записи, заблокированные задачей А. Поэтому распределенная СУБД должна иметь средство контроля совпадений противоречивых запросов. Распределение данных реализует метод расчленения; реализуется обработка распределенной транзакции.
5.
Технология «клиент-сервер», ориентированная на изменение данных в нескольких местах. В отличие от предыдущей технологии здесь имеется сервер-координатор, поддерживающий протокол передачи данных между различными серверами.
Возможна обработка распределенных транзакций в разных удаленных серверах. Это создает предпосылки разработки распределенной СУБД. Реализуется стратегия смешанного распределения путем передачи копий с помощью сетевой СУБД.
6. Технология «клиент-сервер», ориентированная на сетевую СУБД. Обеспечивает стратегию расчленения и дублирования. Позволяет получить более быстрый доступ к данным. Распределенная СУБД обеспечивает независимость клиента от места размещения сервера, глобальную оптимизацию, распределенный контроль целостности базы, распределенное административное управление.
Во всех технологиях существуют два способа связи прикладных программ клиента и сервера баз данных: прямой и непрямой. При прямом соединении прикладная программа клиента связывается непосредственно с сервером базы данных, а при непрямом – доступ к удаленному серверу обеспечивается средствами локальной базы. Возможно объединение обоих способов.
Преимущества технологии «клиент-сервер»:
ü не требуются одновременные крупные финансовые вложения, так как мощность можно наращивать постепенно;
ü добавление сервера или рабочей станции повышает общую мощность системы;
ü пользователь имеет большой выбор платформ;
ü технология «клиент-сервер» имеет большую гибкость и производительность при построении многоуровневых информационных систем.
Использование технологии «клиент-сервер» позволяет перенести часть работы с сервера баз данных на ЭВМ клиента, оснащенную инструментальными средствами для выполнения его профессиональных обязанностей. Тем самым данная технология позволяет независимо наращивать возможности сервера баз данных и инструментальные средства клиента. Недостаток технологии «клиент-сервер» заключается в повышении требований к производительности ЭВМ-сервера, в усложнении управления вычислительной сетью, кроме того, при отсутствии сетевой СУБД трудно организовать распределенную обработку.
Под платформой сервера баз данных понимают возможности операционной системы компьютера и сетевой операционной системы (ОС). Каждый сервер баз данных может работать на определенном типе компьютера и сетевой ОС. Операционные системы серверов – это DOS версии выше 5.0, Unix, Windows NT, OS/2 и др. В настоящее время наиболее употребительными являются около десяти серверов. Наиболее популярными из них являются Microsoft SQL-server 6.5, SQLbase-server, Oracle-server и др.
Серверы баз данных рассчитаны на поддержку большого числа различных типов приложений. Для реализации интерфейса с сервером базы данных можно использовать объектно-ориентированные средства, электронные таблицы, текстовые процессоры, графические пакеты, настольные издательства и другие информационные технологии. Рост объемов распределенных баз данных выявил следующие проблемы их использования:
ü управление распределенными системами очень сложно, и инструментов для него катастрофически не хватает;
ü сложные распределенные решения обходятся дороже, чем планировалось;
ü производительность многих приложений в распределенных системах недостаточна;
ü усложнилось решение проблем безопасности данных.
Решением этих проблем становится возврат к централизованной обработке на базе больших ЭВМ, называемых мэйнфреймами третьего поколения. Новое семейство CMOS-мэйнфреймов IBM S/390 Parallel Enterprise Server – Generation 3 с воздушным охлаждением конкурентно по цене и производительности Unix/RISC-серверам. Оперативная память мэйнфреймов от 512 Мбайтов до 8 Гбайт. Они имеют от 3 до 25 каналов. Внутреннее дисковое устройство может иметь суммарную емкость от 18 до 288 Гбайт. Операционная система OS/390 версия 2 поддерживает реляционную СУБД ДВ2, систему обеспечения транзакций CICS и серверы безопасности, отвечающие стандартам DCE Security Server OSF 1.1 и RACF V2R2. Посредством Web-сервера можно подключаться к сети Internet и вести коммерческую деятельность. Операционная система OS/390 имеет средства работы с Java-приложениями.
Компания Oracle совместно с Hewlett-Packard и ЕМС предложила другое решение. Для хранения данных предназначены направляемые дисковые подсистемы Integrated Cached Disk Array ЕМС Symmetrix 3500, работающие под управлением операционной системы HP-UX 100. Суммарная информационная емкость таких систем от 500 Гбайт до 1 Тбайт. Такие системы являются основой для создания информационных хранилищ.
"Клиент-сервер" - это модель взаимодействия компьютеров в сети. Как правило, компьютеры не являются равноправными. Каждый из них имеет свое, отличное от других, назначение, играет определенную роль. Некоторые компьютеры в сети владеют и распоряжаются информационно-вычислительными ресурсами, такими как процессоры, файловая система, почтовая служба, служба печати, база данных. Другие имеют возможность обращаться к этим службам, пользуясь услугами первых. Компьютер, управляющий тем или иным ресурсом, принято называть сервером этого ресурса, а компьютер, желающий им воспользоваться - клиентом. Конкретный сервер определяется видом ресурса, которым он владеет. Так, если ресурсом являются базы данных, то речь идет о сервере баз данных, назначение которого - обслуживать запросы клиентов, связанные с обработкой данных; если ресурс - это файловая система, то говорят о файловом сервере или файл-сервере и т.д.
В сети один и тот же компьютер может выполнять как роль клиента, так и роль сервера. Например, в информационной системе, включающей персональные компьютеры, большую ЭВМ и мини-компьютер под управлением UNIX, последний может выступать как в качестве сервера базы данных, обслуживая запросы от клиентов - персональных компьютеров, так и в качестве клиента, направляя запросы большой ЭВМ.
Этот же принцип распространяется и на взаимодействие программ. Если одна из них выполняет некоторые функции, предоставляя другим соответствующий набор услуг, то такая программа рассматривается в качестве сервера. Программы, которые пользуются этими услугами, принято называть клиентами. Так, ядро реляционной SQL-ориентированной СУБД часто называют сервером базы данных или SQL-сервером, а программу, обращающуюся к нему за услугами по обработке данных - SQL-клиентом.
Рис. 1. Системы с централизованной архитектурой.
Первоначально СУБД имели централизованную архитектуру (Рис. 1). В ней сама СУБД и прикладные программы, которые работали с базами данных, функционировали на центральном компьютере (большая ЭВМ или мини-компьютер). Там же располагались базы данных. К центральному компьютеру были подключены терминалы, выступавшие в качестве рабочих мест пользователей. Все процессы, связанные с обработкой данных: поддержка ввода, осуществляемого пользователем, формирование, оптимизация и выполнение запросов, обмен с устройствами внешней памяти и т.д., выполнялись на центральном компьютере, что предъявляло жесткие требования к его производительности. Особенности СУБД первого поколения напрямую связаны с архитектурой больших ЭВМ и мини-компьютеров и адекватно отражают все их преимущества и недостатки. Далее будем рассматривать современное состояние многопользовательских СУБД, для которых архитектура "клиент-сервер" стала фактическим стандартом.
Для более четкого представления о ее особенностях необходимо рассмотреть несколько моделей технологии "клиент-сервер", что и будет сделано ниже.
Если предполагается, что проектируемая информационная система (ИС) будет построена по технологии "клиент-сервер", то это означает, что прикладные программы, реализованные в ее рамках, будут иметь распределенный характер. Иными словами, часть функций прикладной программы (или, проще, приложения) будет реализована в программе-клиенте, другая - в программе-сервере, причем для их взаимодействия будет определен некоторый протокол.
Основной принцип технологии "клиент-сервер" заключается в разделении функций стандартного интерактивного приложения на четыре группы, имеющие различную природу.
Первая группа - это функции ввода и отображения данных.
Вторая группа объединяет чисто прикладные функции, характерные для данной предметной области (например, для банковской системы - открытие счета, перевод денег с одного счета на другой и т.д.).
К третьей группе относятся фундаментальные функции хранения и управления информационными ресурсами (базами данных, файловыми системами и т.д.).
Функции четвертой группы - служебные, играющие роль связок между функциями первых трех групп.
В соответствии с этим в любом приложении выделяются следующие логические компоненты:
компонент представления, реализующий функции первой группы;
прикладной компонент, поддерживающий функции второй группы;
компонент доступа к информационным ресурсам, поддерживающий функции третьей группы,
а также вводятся и уточняются соглашения о способах их взаимодействия (протокол взаимодействия).
Различия в реализациях технологии "клиент-сервер" определяются четырьмя факторами. Во-первых, тем, в какие виды программного обеспечения интегрирован каждый из этих компонентов. Во-вторых, тем, какие механизмы программного обеспечения используются для реализации функций всех четырех групп. В-третьих - как логические компоненты распределяются между компьютерами в сети. В-четвертых, какие механизмы используются для связи компонентов между собой.
Выделяются четыре подхода, реализованные в следующих моделях:
модель файлового сервера (File Server - FS);
модель доступа к удаленным данным (Remote Data Access - RDA);
модель севера базы данных (DataBase Server - DBS);
модель сервера приложений (Application Server - AS).
Характер взаимодействия компьютеров в локальной сети принято связывать с их функциональным назначением. Как и в случае прямого соединения, в рамках локальных сетей используется понятие клиент и сервер. Технология клиент-сервер - это особый способ взаимодействия компьютеров в локальной сети, при котором один из компьютеров (сервер) предоставляет свои ресурсы другому компьютеру (клиенту) . В соответствии с этим различают одноранговые сети и серверные сети.
При одноранговой архитектуре в сети отсутствуют выделенные серверы, каждая рабочая станция может выполнять функции клиента и сервера. В этом случае рабочая станция выделяет часть своих ресурсов в общее пользование всем рабочим станциям сети. Как правило, Одноранговые сети создаются на базе одинаковых по мощности компьютеров. Одноранговые сети являются достаточно простыми в наладке и эксплуатации. В том случае, когда сеть состоит из небольшого числа компьютеров и ее основной функцией является обмен информацией между рабочими станциями, одноранговая архитектура является наиболее приемлемым решением. Подобная сеть может быть достаточно быстро и просто реализована средствами такой популярной операционной системы как Windows 95.
Наличие распределенных данных и возможность изменения своих серверных ресурсов каждой рабочей станцией усложняет защиту информации от несанкционированного доступа, что является одним из недостатков одноранговых сетей. Понимая это, разработчики начинают уделять особое внимание вопросам защиты информации в одноранговых сетях.
Другим недостатком одноранговых сетей является их более низкая производительность. Это объясняется тем, что сетевые ресурсы сосредоточены на рабочих станциях, которым приходится одновременно выполнять функции клиентов и серверов.
В серверных сетях осуществляется четкое разделение функций между компьютерами: одни их них постоянно являются клиентами, а другие - серверами. Учитывая многообразие услуг, предоставляемых компьютерными сетями, существует несколько типов серверов, а именно: сетевой сервер, файловый сервер, сервер печати, почтовый сервер и др.
Сетевой сервер представляет собой специализированный компьютер, ориентированный на выполнение основного объема вычислительных работ и функций по управлению компьютерной сетью. Этот сервер содержит ядро сетевой операционной системы, под управлением которой осуществляется работа всей локальной сети. Сетевой сервер обладает достаточно высоким быстродействием и большим объемом памяти. При подобной сетевой организации функции рабочих станций сводятся к вводу-выводу информации и обмену ею с сетевым сервером.
Термин файловый сервер относится к компьютеру, основной функцией которого является хранение, управление и передача файлов данных. Он не обрабатывает и не изменяет сохраняемые и передаваемые им файлы. Сервер может "не знать", является ли файл текстовым документом, графическим изображением или электронной таблицей. В общем случае на файловом сервере может даже отсутствовать клавиатура и монитор. Все изменения в файлах данных осуществляются с клиентских рабочих станций. Для этого клиенты считывают файлы данных с файлового сервера, осуществляют необходимые изменения данных и возвращают их обратно на файловый сервер. Подобная организация наиболее эффективна при работе большого количества пользователей с общей базой данных. В рамках больших сетей может одновременно использоваться несколько файловых серверов.
Сервер печати (принт-сервер) представляет собой печатающее устройство, которое с помощью сетевого адаптера подключается к передающей среде. Подобное сетевое печатающее устройство является самостоятельным и работает независимо от других сетевых устройств. Сервер печати обслуживает заявки на печать от всех серверов и рабочих станций. В качестве серверов печати используются специальные высокопроизводительные принтеры.
При высокой интенсивности обмена данными с глобальными сетями в рамках локальных сетей выделяются почтовые серверы , с помощью которых обрабатываются сообщения электронной почты. Для эффективного взаимодействия с сетью Internet могут использоваться Web-серверы .


