Централизованные и распределенные базы данных
При работе в компьютерной сети все объекты централизованной БД размещаются на одном центральном компьютере, являющимся сервером БД. Все другие компьютеры сети – это рабочие станции, с которых пользователи отправляют запросы к серверу БД.
При использовании архитектуры файл-сервер сервер БД обеспечивает функционирование части сетевой СУБД и содержит совместно используемую БД. В соответствии с пользовательскими запросами с рабочих станций файлы базы данных передаются на рабочие станции, где в основном и производится их обработка. Это приводит к большому сетевому трафику, что отрицательно сказывается на производительности и надежности системы.
При использовании архитектуры клиент-сервер на сервере БД размещаются БД и многопользовательская версия СУБД, параллельно обрабатывающая запросы, поступившие со всех рабочих станций. Рабочая станция в ответ на пользовательский запрос получает не файлы БД для последующей обработки, а готовые результаты. Это позволяет уменьшить сетевой трафик, сократить время на ожидание блокированных ресурсов и использовать для рабочих станций более дешевое оборудование. Именно эта архитектура в настоящий момент получила наибольшее распространение.
Распределенная БД (РБД) – это набор файлов (таблиц), хранящихся в разных узлах информационной сети и логически связанных таким образом, чтобы составлять единую совокупность данных. При этом связь может быть функциональной или через копии одного и того же файла.
РБД предполагает хранение и выполнение функций управления данными в нескольких узлах и передачу данных между этими узлами в процессе выполнения запросов. Разбиение данных может быть таким, что на разных компьютерах могут храниться разные таблицы или разные части одной таблицы (части столбцов или строк). Это не должно иметь значения для пользователей или приложений, т.е. работа с распределённой БД для пользователей или приложений не должна отличаться от работы с централизованной БД.
Для РБД необходима схема, определяющая местонахождение данных в сети, чтобы не нужно было указывать, куда переслать запрос, для получения требуемых данных. При этом нужен сложный механизм управления одновременной обработкой, обеспечивающий синхронизацию при каждом обновлении информации.
5.1.2 Уровневые архитектуры «клиент-сервер»
В рамках многоуровневого представления вычислительных систем можно выделить три группы функций, ориентированных на решение различных подзадач:
· функции ввода и отображения данных (обеспечивают взаимодействие с пользователем);
· прикладные функции, характерные для данной предметной области;
· функции управления ресурсами (файловой системой, базой данных и т.д.)
Выполнение этих функций в основном обеспечивается программными средствами, которые можно представить в виде взаимосвязанных компонентов (рис. 5.1), где:
· компонент представления отвечает за пользовательский интерфейс;
· прикладной компонент реализует алгоритм решения конкретной задачи;
· компонент управления ресурсом обеспечивает доступ к необходимым ресурсам.
Рис 5.1 - . Компоненты сетевого приложения
Архитектура «клиент-сервер» определяет общие принципы организации взаимодействия в сети, где имеются серверы, узлы-поставщики некоторых специфичных функций (сервисов) и клиенты, потребители этих функций.
Практические реализации такой архитектуры называются клиент-серверными технологиями. Каждая технология определяет собственные или использует имеющиеся правила взаимодействия между клиентом и сервером, которые называются протоколом обмена (протоколом взаимодействия).
В любой сети, построенной на современных сетевых технологиях, присутствуют элементы клиент-серверного взаимодействия, чаще всего на основе двухзвенной архитектуры. Двухзвенной (two-tier, 2-tier) она называется из-за необходимости распределения трех базовых компонентов между двумя узлами (клиентом и сервером) (рис.5.2).
Рис.5.2 - Двухзвенная (2-tier) клиент-серверная архитектура
Двухзвенная архитектура используется в клиент-серверных системах, где сервер отвечает на клиентские запросы напрямую и в полном объеме, при этом используя только собственные ресурсы. При этом сервер не вызывает сторонние сетевые приложения и не обращается к сторонним ресурсам для выполнения какой-либо части запроса.
Расположение компонентов на стороне клиента или сервера определяет следующие основные модели их взаимодействия в рамках двухзвенной архитектуры (рис.5.3):
· сервер терминалов — распределенное представление данных;
· файл-сервер — доступ к удаленной базе данных и файловым ресурсам;
· сервер БД — удаленное представление данных;
· сервер приложений — удаленное приложение.
Исторически первой появилась модель распределенного представления данных (модель сервер терминалов). Она реализовывалась на универсальной ЭВМ (мэйнфрейме), выступавшей в роли сервера, с подключенными к ней алфавитно-цифровыми терминалами. Пользователи выполняли ввод данных с клавиатуры терминала, которые затем передавались на мэйнфрейм и там выполнялась их обработка, включая формирование «картинки» с результатами. Эта «картинка» и возвращалась пользователю на экран терминала.
С появлением персональных компьютеров и локальных сетей, была реализована модель файлового сервера, представлявшего доступ файловым ресурсам, в т.ч и к удаленной базе данных. В этом случае выделенный узел сети является файловым сервером, на котором размещены файлы базы данных. На клиентах выполняются приложения, в которых совмещены компонент представления и прикладной компонент (СУБД и прикладная программма), использующие подключенную удаленную базу как локальный файл. Протоколы обмена при этом представляют набор низкоуровневых вызовов операций файловой системы.
Рис.5.3 – Модели клиент-серверного приложения
Такая модель показала свою неэффективность ввиду того, что при активной работе с таблицами БД возникает большая нагрузка на сеть. Частичным решением является поддержка тиражирования (репликации) таблиц и запросов. В этом случае, например при изменении данных, обновляется не вся таблица, а только модифицированная ее часть.
С появлением специализированных СУБД появилась возможность реализации другой модели доступа к удаленной базе данных — модели сервера баз данных. В этом случае ядро СУБД функционирует на сервере, прикладная программа на клиенте, а протокол обмена обеспечивается с помощью языка SQL. Такой подход по сравнению с файловым сервером ведет к уменьшению загрузки сети и унификации интерфейса «клиент-сервер». Однако, сетевой трафик остается достаточно высоким, кроме того, по прежнему невозможно удовлетворительное администрирование приложений, поскольку в одной программе совмещаются различные функции.
С разработкой и внедрением на уровне серверов баз данных механизма хранимых процедур появилась концепция активного сервера БД. В этом случае часть функций прикладного компонента реализованы в виде хранимых процедур, выполняемых на стороне сервера. Остальная прикладная логика выполняется на клиентской стороне. Протокол взаимодействия — соответствующий диалект языка SQL.
Преимущества такого подхода очевидны:
· возможно централизованное администрирование прикладных функций;
· снижение стоимости владения системой (TOC, total cost of ownership) за счет аренды сервера, а не его покупки;
· значительное снижение сетевого трафика (т.к. передаются не SQL-запросы, а вызовы хранимых процедур).
Основной недостаток — ограниченность средств разработки хранимых процедур по сравнению с языками высокого уровня.
Реализация прикладного компонента на стороне сервера представляет следующую модель — сервер приложений. Перенос функций прикладного компонента на сервер снижает требования к конфигурации клиентов и упрощает администрирование, но представляет повышенные требования к производительности, безопасности и надежности сервера.
В настоящее время намечается тенденция возврата к тому, с чего начиналась клиент-серверная архитектура — к централизации вычислений на основе модели терминал-сервера. В современной реинкарнации терминалы отличаются от своих алфавитно-цифровых предков тем, что имея минимум программных и аппаратных средств, представляют мультимедийные возможности (в т.ч. графический пользовательский интерфейс). Работу терминалов обеспечивает высокопроизводительный сервер, куда вынесено все, вплоть до виртуальных драйверов устройств, включая драйверы видеоподсистемы.
Еще одна тенденция в клиент-серверных технологиях связана со все большим использованием распределенных вычислений. Они реализуются на основе модели сервера приложений, где сетевое приложение разделено на две и более частей, каждая из которых может выполняться на отдельном компьютере. Выделенные части приложения взаимодействуют друг с другом, обмениваясь сообщениями в заранее согласованном формате. В этом случае двухзвенная клиент-серверная архитектура становится трехзвенной (three-tier, 3-tier).
Как правило, третьим звеном в трехзвенной архитектуре становится сервер приложений, т.е. компоненты распределяются следующим образом (рис.5.4):
1. Представление данных — на стороне клиента.
2. Прикладной компонент — на выделенном сервере приложений (как вариант, выполняющем функции промежуточного ПО).
3. Управление ресурсами — на сервере БД, который и представляет запрашиваемые данные.
Рис.5.4 - Трехзвенная (3-tier) клиент-серверная архитектура
Трехзвенная архитектура может быть расширена до многозвенной (N-tier, Multi-tier) путем выделения дополнительных серверов (рис.5.5), каждый из которых будет представлять собственные сервисы и пользоваться услугами прочих серверов разного уровня.
Рис.5.5 - Многозвенная (N-tier) клиент-серверная архитектура