Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD-2007-0.doc
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
2.68 Mб
Скачать

Проектирование бд с учетом конкретной архитектуры Архитектура клиент-сервер

Клиент-серверные вычисления играют важную роль при разработке систем. К основным факторам, влияющим на клиент-серверную архитектуру относятся:

- изменения в инфраструктуре бизнеса;

- возросшие требования доступа к данным предприятия;

- необходимость повышения производительности конечных пользователей на базе эффективного использования информации;

- развитие компьютерных технологий, обеспечивающих эффективность использования клиент-серверных технологий.

Термин «клиент-сервер» используется при разработке компьютеризированных систем для описания вычислительной модели. Эта модель основана на распределении функций между двумя типами независимых и автономных процессов: серверами и клиентами. Клиент – это любой процесс, который запрашивает определенные ресурсы или сервисы от других (серверных) процессов. Сервер – это процесс, который предоставляет необходимые сервисы (услуги) другому процессу (клиенту). Клиент и сервер какого-либо ресурса могут находиться как в рамках одной вычислительной системы, так и на различных компьютерах, связанных сетью. Уровень распределения задач обработки данных – главное отличие клиент-серверных систем от систем с мэйнфреймом.

В зависимости от степени разделения процессов между клиентом и сервером, сервер и клиент считаются либо сильным, либо слабым. Слабый («тонкий») клиент (thin client) выполняет минимум отработки на стороне клиента, в то время как сильный («толстый») клиент (fat client) берет на себя относительно большую часть обработки данных. Соответственно, сильный («толстый») сервер (fat server) несет основную нагрузку по обработке данных, нагрузка же на слабый сервер (thin server) относительно невелика. Поэтому, как правило, слабые клиенты связаны с сильными серверами, а сильные клиенты – со слабыми серверами. С этой точки зрения система с мэйнфреймом представляет собой пример максимально сильного сервера и максимально слабого клиента, т.к. все процессы обработки данных выполняются на серверной стороне (главная машина), а на клиентской стороне (неинтеллектуальные терминалы) никакая обработка данных не ведется.

Особенных аппаратных средств для этой архитектуры не требуется.

Это программная архитектура, в которой один набор программных компонентов (клиенты) с помощью сообщений просит другой набор программных компонентов (серверы) выполнить различные действия. Серверы выполняют действия и возвращают полученные результаты клиентам также в виде сообщений.

И клиенты и серверы посылают свои сообщения не по адресам, а по именам. В результате разрешения имен будет определен необходимый физический сервер, а клиент может даже не знать, где расположен сервер, предоставляющий данный сервис.

Главная черта архитектуры клиент – сервер является то, что клиент посылает сообщения именованным серверам. Это дает ряд важных преимуществ:

1) Клиентский и серверный процессы не обязательно должны находиться на одной и той же машине, хотя это допустимо.

2) Клиентский и серверный процессы не обязательно должны работать на однотипных аппаратных средствах или даже под управлением одинаковых операционных систем, если они могут посылать друг другу сообщения.

3) Они не обязательно должны знать об аппаратных и программных средствах друг друга. Привязка к этим средствам – основной источник проблем в приложениях клиент - сервер, так как какие-либо изменения на клиенте или сервере могут сделать всю систему неработоспособной.

Процесс поиска может продолжаться до бесконечности: клиент направляет запрос к именованному серверу, который передает его другому именованному серверу и т.д.

Проектируя любое приложение клиент – сервер, необходимо решить две задачи:

- минимизация числа операций обмена между клиентом и сервером;

- выбор места обработки.

Необходимо спроектировать систему таким образом, чтобы и клиент и сервер выполняли задачи, которые они могут хорошо сделать.

Клиент обычно качественно обеспечивает работу прикладного интерфейса, а сервер – обработку совместно используемых данных.

Очевидное решение состоит в следующем – реализовать на клиенте прикладной интерфейс, а на сервере – выполнять все операции под совместно используемыми данными.

Чтобы число пакетов было минимальным, запросы к совместно используемым данным объединяются, и многие из них выполняются за один проход.

Распределение функций показано на следующих двух схемах, представляющих собой, фактически, одно и то же.

Типы вычислений клиент – сервер

Исторически первой появилась модель распределенного представления данных, которая реализовывалась на универсальной ЭВМ с подключенными к ней неинтеллектуальными терминалами. Управление данными и взаимодействие с пользователем при этом объединялись в одной программе, на терминал передавалась только "картинка", сформированная на центральном компьютере.

Затем, с появлением персональных компьютеров (ПК) и локальных сетей, были реализованы модели доступа к удаленной базе данных. Некоторое время базовой для сетей ПК была архитектура файлового сервера. При этом один из компьютеров является файловым сервером, на клиентах выполняются приложения, в которых совмещены компонент представления и прикладной компонент (СУБД и прикладная программа). Протокол обмена при этом представляет набор низкоуровневых вызовов операций файловой системы. Такая архитектура, реализуемая, как правило, с помощью персональных СУБД (см. параграф 4.8), имеет очевидные недостатки - высокий сетевой трафик и отсутствие унифицированного доступа к ресурсам.

С появлением первых специализированных серверов баз данных появилась возможность другой реализации модели доступа к удаленной базе данных. В этом случае ядро СУБД функционирует на сервере, протокол обмена обеспечивается с помощью языка SQL. Такой подход по сравнению с файловым сервером ведет к уменьшению загрузки сети и унификации интерфейса "клиент-сервер". Однако, сетевой трафик остается достаточно высоким, кроме того, по-прежнему невозможно удовлетворительное администрирование приложений, поскольку в одной программе совмещаются различные функции.

Позже была разработана концепция активного сервера, который использовал механизм хранимых процедур. Это позволило часть прикладного компонента перенести на сервер (модель распределенного приложения). Процедуры хранятся в словаре базы данных, разделяются между несколькими клиентами и выполняются на том же компьютере, что и SQL-сервер. Преимущества такого подхода: возможно централизованное администрирование прикладных функций, значительно снижается сетевой трафик (т.к. передаются не SQL-запросы, а вызовы хранимых процедур). Недостаток - ограниченность средств разработки хранимых процедур по сравнению с языками общего назначения (C и Pascal).

На практике сейчас обычно используются смешанный подход:

  • простейшие прикладные функции выполняются хранимыми процедурами на сервере,

  • более сложные функции реализуются на клиенте непосредственно в прикладной программе.

Сейчас ряд поставщиков коммерческих СУБД объявило о планах реализации механизмов выполнения хранимых процедур с использованием языка Java. Это соответствует концепции "тонкого клиента", функцией которого остается только отображение данных (модель удаленного представления данных).

В последнее время также наблюдается тенденция к большему использованию модели распределенного приложения. Характерной чертой таких приложений является логическое разделение приложения на две и более частей, каждая из которых может выполняться на отдельном компьютере. Выделенные части приложения взаимодействуют друг с другом, обмениваясь сообщениями в заранее согласованном формате. В этом случае двухзвенная архитектура клиент-сервер становится трехзвенной, а в некоторых случаях она может включать и больше звеньев.

Ранее приложение (пользовательская программа) не разделялось на части, оно выполнялось некоторым монолитным блоком. Но возникла идея более рационального использования ресурсов сети. Действительно, при монолитном исполнении используются ресурсы только одного компьютера, а остальные компьютеры рассматриваются как терминалы. Но теперь все компьютеры в сети обладают собственными ресурсами, и разумно так распределить нагрузку на них, чтобы максимально использовать их ресурсы.

Следует стремиться к чему-то среднему между распределенной логикой и удаленным представлением данных и попытаться добиться того, чтобы клиент решал только непосредственно относящиеся к пользовательскому интерфейсу задачи, а сервер – все остальные, включая всю обработку запросов и обновлений, а также внедрение правил обработки данных.

Клиент обрабатывает все события, связанные с клавиатурой, мышью, рисует экранные формы, манипулирует объектами, представлениями на экране, перемещается по ним.

Нецелесообразно, чтобы клиентское программное обеспечение запрашивало с сервера массу необработанных данных (например, целые таблицы), а затем отбирало нужные данные. Это приведет к увеличению трафика в сети, увеличит нагрузку на сервер.

Серверное программное обеспечение рассчитано на прием запросов, их обработку и возвращение данных за минимальное время.

Не нужно, чтобы сервер решал такие задачи, как рисование экранных форм и выполнение программ повышения производительности клиента.

Клиентское программное обеспечение обычно состоит из ядра, выполняющего базовые функции (реализовано в исполняемом файле) и набора подпрограмм в библиотеках связей (в Microsoft Windows они называются динамически загруженными библиотеками или DDL). Если при обращении к подпрограмме DDL не находится в памяти, приходится загружать с сервера довольно большой двоичный файл. Это может происходить регулярно, если на клиенте недостаточно памяти.

Подгрузка исполняемых файлов – характерное явление, и в этом направлении движется компьютерная индустрия.

Архитектура клиент-сервер включает в себя три основных компонента: клиенты, серверы, промежуточное программное обеспечение передачи данных (middleware).

Клиент представляет собой любой процесс компьютера, который запрашивает сервис от сервера. Клиент также называется еще интерфейсным приложением (front-end-application), что отражает факт взаимодействия конечного пользователя с клиентским процессом.

Сервер – это любой компьютерный процесс, предоставляющий сервис клиентам. Сервер также называют серверным приложением (back-end-application), что отражает факт предоставления сервером сервиса клиентскому процессу.

Промежуточное программное обеспечение передачи данных, ППО (communications middleware) представляет собой компьютерный процесс (процессы), посредством которого клиенты и серверы взаимодействуют друг с другом. ППО еще называют уровнем коммуникаций (communication layer), оно состоит из нескольких уровней ПО, помогающих передавать данные и управляющую информацию между клиентами и серверами. ППО обычно привязано к сети.

Правила архитектуры современного поколения клиент-серверных систем включают:

  • независимость от оборудования, которое требует, чтобы процессы клиента, сервера и ППО могли выполняться на различных аппаратных платформах;

  • независимость от программного обеспечения (ОС, сетевой системы, приложений), требующее чтобы все процессы поддерживали несколько ОС (Windows 98, Windows NT, OS/2, Linux, Unix), различные сетевые протоколы (IPX, TCP/IP) и различные приложения (таблицы, БД, электронную почту и т.д.);

  • открытый доступ к сервисам;

  • распределение процессов:

автономность процессов;

максимальное использование локальных ресурсов;

масштабируемость и гибкость;

способность к взаимодействию и интегрируемость;

  • стандартизация.

Клиент включает в себя аппаратные и программные компоненты. Желательно, чтобы в состав клиента были включены:

- мощное оборудование;

- ОС с возможностью многозадачной обработки информации;

- графический интерфейс пользователя (GUI);

- коммуникационные возможности.

Клиентское или интерфейсное приложение функционирует поверх ОС и взаимодействует с коммуникационным ППО для получения доступа ко всем доступным сервисам сети. Для создания прикладных программ используется 3GL и 4GL. Большинство таких прикладных программ используют GUI для того, чтобы скрыть сложность клиент-серверных компонентов от конечного пользователя.

В отличие от клиентского процесса серверный процесс реактивный, т.к. он всегда находится в состоянии ожидания запросов со стороны клиента. Как правило, сервер обеспечивает следующие возможности:

  • файловые сервисы для локальных сетей, в которых компьютер с быстрыми дисками большой емкости совместно используется разными пользователями;

  • сервисы печати для локальных сетей, в которых ПК с одним или более принтерами совместно используется несколькими клиентами;

  • сервисы факсимильной связи, которые требуют, чтобы, по крайней мере, один сервер был оборудован факсом;

  • сервисы передачи данных, которые позволяют клиентам подключаться к серверу передачи данных, чтобы получить доступ к другим хост-компьютерам или сервисам;

  • сервисы БД, в которых содержатся наиболее распространенные клиент-серверные реализации;

  • сервисы транзакций, предоставляемые серверами транзакций, подключенными к серверу БД;

  • другие сервисы, включая обслуживание устройств CD-ROM, видео, резервное копирование и др.

Серверное приложения выполняется поверх ОС и взаимодействует с коммуникационным ППО, которое «слушает» (ожидает) запросы клиента на предоставление сервиса. Сервисному приложению не нужен графический интерфейс.

Коммуникационное ППО предоставляет средства, с помощью которых клиенты и серверы взаимодействуют при выполнении задач. Она также предоставляет специальные сервисы клиентскому процессу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]