4.8 Клиент – серверная архитектура
Сервер Баз данных
Функции: физическое хранение данных,
логика обработки,
управление данными
Невысокая нагрузка на сеть:
передаются запросы и результаты
Функции: интерфейс пользователя,
логика обработки
рис.11
Архитектура клиент-сервер предназначена для разрешения проблем файл-серверных приложений путем разделения компонентов приложения и
размещения их там, где они будут функционировать наиболее эффективно. Особенностью данной архитектуры является использование выделенных серверов БД, понимающих запросы на языке структурированных запросов SQL(Structured Query Language) и выполняющих поиск, сортировку и агрегирование информации.
Отличительная черта серверов БД – наличие справочника данных, в котором записана структура БД, ограничения целостности данных, форматы и даже серверные процедуры обработки данных по вызову или по событиям в программе. Объектами разработки в таких приложениях помимо диалога и логики обработки являются, прежде всего, реляционная модель данных и связанный с ней набор SQL-операторов для типовых запросов для этой БД.
Типовое определение архитектуры клиент-сервер – приложение на клиенте, СУБД – на сервере - использует эту схему. Для эффективной реализации такой схемы часто применяют неоднородную сеть. Как минимум, предполагается, что диалоговые компоненты PS и PL размещаются на клиенте, что позволяет обеспечить графический интерфейс. Далее возможно разместить компоненты управления данными DS и FS на сервере, а диалог (PS, PL), логику BL и DL на клиенте.
Поскольку эта схема предъявляет наименьшие требования к серверу, она обладает наилучшей масштабируемостью. Однако сложные приложения, вызывающие большое взаимодействие с БД, могут жестко загрузить как клиента, так и сеть. Результаты SQL-запроса должны вернуться клиенту для обработки, потому что там находится логика принятия решения. Такая схема возлагает дополнительное время администрирования приложений, разбросанных по различным клиентским узлам.
Можно сократить нагрузку на клиента и сеть, переместив целиком компонент BL на сервер, при этом вся логика принятия решений оформлена в виде хранимых процедур и выполняется на сервере БД. Хранимая процедура – процедура с операторами SQL для доступа к БД, вызываемая по имени с передачей требуемых параметров и выполняемая на сервере БД. Компиляция повышает скорость исполнения хранимых процедур и сокращает нагрузку на сервер. Но, перегрузив хранимые процедуры прикладной логикой, можно потерять преимущества по производительности. Хранимые процедуры улучшают целостность приложений и БД, гарантируют актуальность коллективно используемых операций и вычислений. Улучшается сопровождение таких процедур, а также безопасность (нет прямого доступа к данным).
Переместив с клиента часть логики приложения на сервер, получим систему клиент-сервер с разделенной логикой. Часть прикладной логики может быть реализована на клиенте, а другая часть логики – в виде обработчиков событий (триггеров) и хранимых процедур на сервере БД. Такая схема при удачном разделений логики приводит к сбалансированной загрузке клиентов и сервера, но при этом затрудняется сопровождение приложений.
Из рассмотренных вариантов была выбрана системы с архитектурой клиент-сервер, которая имеет ряд преимуществ:
-
уменьшение сетевого трафика за счет того, что выборка данных производится на сервере, и они не "прокачиваются" по сети;
-
увеличение производительности за счет того, что сам сервер может эффективно кэшировать данные (в отличие от клиента, который никогда не может быть уверен в том, что его данные "первой свежести");
-
перенос части функциональности на сервер с уменьшением трафика и увеличением производительности;
-
масштабируемость – при возрастании нагрузки достаточно заменить лишь сервер, а не все станции и сетевые платы;
-
и, наконец, самое главное, это наличие транзакций, без которых практически невозможно обеспечить логическую непротиворечивость данных.
Так как разрабатываемый нами модуль будет реализован с помощью одной из систем быстрой разработки приложений - Delphi, то было принято решение, использовать в качестве клиент-серверной СУБД - InterBase фирмы IBPhoenix, что позволит, во-первых, обойтись без BDE(Borland Database Engine) и драйверов SQL-Links, т.е. набор компонентов для связи с сервером InterBase, специально разработанный фирмой Borland, использует прямой доступ к БД без каких-либо промежуточных программных слоев. Во-вторых, позволит несколько повысить скорость разработки БД.
Язык SQL ориентирован на выполнение действий с таблицами БД и данными в этих таблицах, а также некоторых вспомогательных действий. В отличие от процедурных языков программирования, в нем нет операторов управления вычислительным процессом (циклов, переходов, ветвления) и средств ввода-вывода.
Команды языка SQL обычно подразделяют на несколько групп, основными из которых являются следующие:
-
DDL (Data Definition Language) – язык определения данных Команды данной группы используются для создания и изменения структуры объектов БД;
-
DML (Data Manipulation Language) – язык манипулирования данными. Команды DML используются для манипулирования информацией, содержащейся в объектах БД;
-
DCL (Data Control Language) – язык управления данными. Соответствующие команды предназначены для управления доступом к информации, хранящейся в БД;
-
DQL (Data Query Language) – язык запросов. Это наиболее часто используемые команды, предназначенные для формирования запросов к БД (Запрос – это обращение к БД для получения соответствующей информации);
|