
Лекция 3. Клиент-серверные базы данных
Перечисленных выше недостатков в большинстве лишены СУБД, построенные на архитектуре клиент-сервер (рис. 3). Характерной особенностью этой архитектуры есть максимальная разгрузка клиента, перенесения вычислительной нагрузки на сервер БД(SQL-сервер), а также существенное укрепление безопасности данных — как от злонамеренных, так и от ошибочных изменений.
Как и в архитектуре файл-сервер, БД в этом случае размещается на сетевом сервере, но программы клиентов лишенной возможности прямого доступа к БД. В архитектуре клиент-сервер между пользовательским приложением и базой данных появляется важное промежуточное звено - сервер БД (специальная программа, управляющая базой данных).
Таким образом, доступ к БД регулируется специальной программой - сервером БД SQL-сервером). Взаимодействие сервера БД и клиента реализуется с помощью SQL-запросов, которые формирует и отсылает серверу клиент. Сервер, приняв запрос, выполняет его и возвращает результат клиенту. В клиентском применении в основном выполняется интерпретация полученных от сервера данных, реализация интерфейса пользователя, а также реализация части бизнес-правил.
Рис. 3. Архитектура клиент-сервер
Клиент формирует запрос к серверу на языке запросов SQL(Structured Query Language - структурный язык запросов), которая есть промышленным стандартом для реляционных БД. SQL-сервер обеспечивает интерпретацию запроса, его выполнения, формирования результата и выдачу этого результата клиенту. При этом ресурсы клиентского компьютера не задействованы в физическом выполнении запроса:
Поскольку клиентскому применению пересылается только результат выполнения запитую, по сети передаются только те данные, которые в действительности нужны клиенту, а также снижается нагрузка на сеть. Кроме того, SQL-сервер, если это возможно, оптимизирует полученный запрос таким образом, чтобы он был выполнен за минимально возможное время. Все это повышает быстродействие системы и снижает время ожидания результата запроса.
При выполнении запросов сервером существенно повышается степень безопасности данных, поскольку правила целостности данных определяются на сервере и есть едиными для всех применений, которые используют эту БД. В результате выключается возможность определения противоречивых правил поддержки целостности. Мощный аппарат транзакций, что поддерживается SQL-сервером, блокирует одновременное изменение одних и одних и тех же данных разными пользователями и дает возможность возвращения (откатов) к начальным значениям, если при внесении изменений в БД выполняемые операции закончились аварийно.
Данные в серверной БД обычно сохраняются в виде одного большого файла, который вместе с предназначенными каждому пользователи паролями и привилегиями существенно повышает защита данных от намеренной порчи и похищение.
Дале приведенные преимущества архитектуры клиент-сервер.
• Большинство вычислительных процессов выполняется на сервере, который снижает потребности к вычислительным мощностям компьютера клиента; увеличенном вычислительной мощности одного сервера эквивалентное одновременному увеличению мощности всех клиентских мест.
• Снижается сетевой трафик за счет пересылки сервером клиентским применением только тех данных, которые они спрашивали.
• БД на сервере представляют собой, как правило, единый файл, в котором находятся таблицы, ограничения целостности и прочие компоненты БД:
- сломать, похитить ли испортить такую БД значительно сложнее;
- существенно увеличивается защищенность БД от введения неправильных значений, поскольку сервер БД проводит автоматическую проверку соответствия входных значений наложенным ограничением и автоматически выполняет необходимые бизнес-правила;
- кроме этого, сервер отслеживает равенство доступа для каждого пользователя и блокирует попытки выполнения неразрешенных для пользователя действий; все это разрешает, говорить про значительно более высокий уровень обеспечения безопасности БД, содержательной целостности информации.
• Сервер реализует управления транзакциями и отклоняет попытки одновременного изменения одних и одних и тех же данных; разные равные изоляции транзакций разрешают определить поведение сервера в этом случае.
• Безопасность системы увеличивается за счет перенесения большей части бизнесов-правил на сервер; снижается удельный вес бизнесов-правил, которые реализуются в клиентских приложениях и могут противоречить одно один; определить противоречивые бизнесы-правила все еще возможно, но намного сложнее их выполнить учитывая то, что сервер БД автоматически отслеживает правильность данных.
Для реализации архитектуры клиента-сервер используют так называемые промышленные серверы баз данных, такие как InterBase, Огасlе, Informix, Sybase, SQL Server, DВ2, МS SQL Server.
Промышленными называются СУБД для сохранения и выдачи больших объемов данных в условиях одновременной работы по БД многих клиентских приложений.
В дальнейшем примеры реализации архитектуры клиент-сервер будут приведены для сервера InterBase.
Таким образом, функциями приложения-клиента есть:
1. посылка запросов к серверу БД;
2. интерпретация результатов запросов, полученных от сервера, и представление их пользователю в нужной форме;
3. реализация интерфейса пользователя.
SQL-сервер - это программа, размещенная на компьютере сетевого сервера. SQL-сервер должен быть загружен на момент принятия запроса от клиента.
Функциями сервера БД являются:
1. прием запросов от приложений-клиентов, интерпретация запросов, выполнения запросов БД, отправка результатов выполнения запроса приложению-клиенту;
2. управления целостностью БД, обеспечения системы безопасности, блокирования неверных действий приложений-клиентов;
3. сохранения бизнес-правил и запросов, которые часто используются приложениями в уже в интерпретированном виде;
4. обеспечения одновременной безопасной и отказоустойчивой многопользовательской работы с одними и теми же данными.
Лекция 4. Архитектура с сервером приложений
Развитие идей архитектуры клиент-сервер привел к появлению трехзвенной архитектуры доступа к базам данных (в литературе ее также называют многозвенной архитектурой,.
Основной целью этой технологии есть всяческое снижение требований к клиентским компьютерам, для того чтобы в идеале в качестве таких могли использоваться дешевые бездисковые сетевые компьютеры.
Архитектура клиент-сервер - двухзвенная: первым звеном в ней есть программа клиента а второй - сервер БД и сама БД.
В трехзвенной архитектуре создается вспомогательная программа, в которую включаются все компоненты-наборы данных, которые были раньше (в двухзвенной архитектуре) собственностью клиентских применений. Потом эта программа регистрируется в качестве СОМ- МТ- ли СОRВА -сервера, после чего она становится сервером применений. Теперь клиентские программы уже не содержат в себе громоздкие коды компонентов-наборов и многих других вспомогательных компонентов. Выделения прикладного элемента с отдельный изолированный компонент разрешает сосредоточить в нем реализацию основной массы бизнес-правил и сделать клиентские приложения независимыми от изменений бизнеса-логики. В этом случае неправильные данные будут откидываться сервером применений и не будут передаваться на сервер БД (рис.4). Для получения доступа к серверных данных клиентские приложения обращаются к отдаленного серверу применений, которое находится на другой машине и реализует необходимый обмен данными. А функцию формирования запросов к отдаленному серверу БД выполняет сервер применений. На нем же размещаются реальные наборы данных - результаты выполнения запросов SQL-сервером.
Рис. 4. трехзвенная архитектура
В клиентской программе, которая в этой архитектуре называется облегченным или тонким клиентом (thin сlіепt), размещается клиентский набор данных, который представляет собой копию части данных из БД. Все изменения, что пользователь вносит в данные, изменяют эту локальную копию и могут к нужной поре не передаваться в БД (режим отложенной обработки данных). Потом при восстановлении отдаленного набора данных только измененные записи передаются серверу применений. В свою очередь сервер применений пересылает эти изменения SQL-серверу для записи их в отдаленную БД.
Кроме того, при работе с громоздкими таблицами можно потребовать от сервера применений передавать записи таблицы в локальный набор порциями, достаточными для одновременного отображения на экране клиента. Все эти мероприятия существенным образом снижают загрузки сети и, итак, уменьшают время ожидания результата запроса.
Заметим, что на рис. 5 по левую сторону показанный вариант размещения сервера применений на машине сервера БД. Такой вариант наиболее популярный, так как снижает загрузка сети и гарантирует одновременную работу обеих серверов.
Сервер применений может располагаться на любой сетевой машине, оснащенной ВDЕ в случае работы с клиентским применением созданным в среде Delphi. Разумеется, в этом случае каталог его размещения должен быть доступным другим сетевым машинам, а самая машина сервера применений должна быть включена в период работы с сервером данных. Больше того, в этой архитектуре можно использовать файл-серверный вариант размещения данных (на рис. 5 - по правую сторону). Таким образом, вместо сервера БД с успехом могут использоваться файлы-серверы с таблицами DЬаsе и Рагаdох. Преимущества облегченного клиента и централизации бизнесов-правил будут в полной мере оказываться и в этом случае. Кроме того, в таких системах существенным образом снижается нагрузка на сеть, так как фильтрация и отбор данных реализуются сервером применений, а клиенту пересылаются лишь результаты запроса.
Итак, главное преимущество трехзвенной архитектуры состоит в создании «облегченного» клиента, который не требует больших ресурсов памяти и процессора и может загружаться с сетевого компьютера.
Рис. 5. Разновидности архитектур с сервером приложений
К дополнительным преимуществам можно отнести :
централизованный доступ к большинству бизнесов-правил, которые сосредоточенные отныне на сервере применений; эта централизация разрешает гибко изменять правила-бизнеса-правила без необходимости их тиражирования в многих клиентских приложениях;
важное уменьшение сетевой нагрузки за счет отложенного восстановления и регулированного объема пактов данных:
простоту распространения новых версий клиентского программного обеспечения, так как нет необходимости устанавливать на клиентских местах сложный механизм доступа к данных;
возможность отложенных восстановлений наборов данных: можно получить необходимую порцию данных, сохранить их в файле, работать с ними автономно (например, в другом городе), а потом снова соединиться с сервером применений и обновить на сервере внесенные в данные изменения.
Связь «тонких клиентов» с сервером применений осуществляется средствами, которые базируются на механизмах OLЕ-автоматизации и объектно-ориентированных вызовов, которые являются стандартами для отдаленных процедур в распределенных системах. На сегодняшний день существуют несколько технологий взаимодействия объектов и программ, которые параллельно развиваются и конкурируют : СОМ (Соmропепt ОЬjесt Моdel - компонентная модель объектов) корпорации Місгоsoft , СОRВА (Common ОЬjесt Require Вгокег Агсhytecture - архитектура с поставщиком необходимых общих объектов) независимой группы ОМС, МТ (Місгоsoft Тгапsасtion Server) и прочие. Эти технологии предназначены для того, чтобы одна программа (клиент) смогла заставить работать объект, который есть частью другой программы (частью сервера), так, будто этот объект был частью клиента. Причем в общем случае обе эти программы могут быть расположены на разных компьютерах (в том числе, которые находятся в разных частях мира), написанные на разных языках и таких, что выполняются под управлением разных операционных систем. Больше того самые компьютеры могут быть разного типа - например, ІВМ- совместный ПК и рабочая станция SUN.