5. Базы данных в сетях
Повсеместное внедрение и развитие сетевых технологий, тенденция к распределению вычислительных ресурсов накладывает отпечаток на принципы построения СУБД. Применение сетевых технологий позволило значительно укрупнить информационные системы, увеличить число пользователей, обеспечить целостность в рамках всей системы.
В основе построения сетевых систем управления данным лежат два подхода: централизованный и децентрализованный. При централизованном подходе систему баз данных можно рассматривать как структуру, состоящую из двух частей – сервера и набора клиентов. Под сервером в данном контексте понимается СУБД, а клиенты – это различные приложения, инициирующие запросы на услуги к серверу. Данный вариант архитектуры называется архитектурой «клиент-сервер». Разделение системы баз данных на две части определяет возможность обработки этих частей на разных машинах. Поэтому можно говорить о распределенной обработке информации. Распределенная обработка может быть разнообразной и осуществляться на разных уровнях.
Децентрализованный подход предусматривает возможность определенного узла сети выступать как в роли клиента, так и в роли сервера данных. Очевидно, что в этом случае значительно усложняются задачи поддержки транзакций и обеспечения целостности.
В этой главе мы рассмотрим некоторые варианты распределенной обработки данных .
5.1. Архитектура «клиент-сервер»
Определим основные понятия сервер и клиент. Под сервером в информационных системах понимается программа (компьютер), предоставляющая услуги по запросам других программ (компьютеров), называемых клиентами. В контексте баз данных вводится понятие сервер баз данных [15]:
- СУБД в архитектуре «клиент-сервер».
- Компьютер в сети, на котором поддерживается база данных и осуществляется обработка пользовательских запросов.
Сервер баз данных осуществляет целый комплекс действий по управлению данными. Перечислим его основные функции:
- выполнение пользовательских запросов на выбор и модификацию данных и метаданных;
- хранение и резервное копирование данных;
- поддержка ссылочной целостности данных согласно правилам, определенным в базе данных;
- обеспечение авторизованного доступа к данным на основе проверки прав и привилегий пользователей;
- протоколирование операций и ведение журнала транзакций (сущность транзакции будет рассмотрена ниже).
Клиентские узлы поддерживают пользовательские интерфейсы и функциональность приложений. Основой архитектуры «клиент-сервер» является принцип централизации хранения и обработки данных. Централизованная база данных физически сосредоточена в одном месте и управляется одним компьютером-сервером. Классическая двухзвенная схема «клиент-сервер» представлена на рис. 62.Архитектура «клиент-сервер» допускает различные варианты реализации. В первоначальном (централизованном) варианте архитектуры «клиент-сервер» приложение (пользовательская программа) не разбивалось на части, используя ресурсы только одного мощного компьютера. СУБД, данные и приложения хранились на одном мощном мини-компьютере или мейнфрейме, принимающим входную информацию с пользовательского терминала и отображающего на нем данные (разделение функций было на процессном уровне – один процесс выполнял функции клиента, другой – сервера). С появлением персональных компьютеров и локальных вычислительных сетей появилась возможность распределения ресурсов по всем компьютерам сети с позиции максимального использования их ресурсов. Основным принципом разбиения приложения на части является разделение на группы функций стандартного интерактивного приложения:
- Функции ввода и отображения данных (Presentation Logic – презентационная логика). К этой функции относятся все интерфейсные экранные формы, с которыми работает пользователь, а также отображаемая на экране результативная и справочная информация.
- Прикладные функции, определяющие основные алгоритмы решения задач (Business Logic – бизнес-логика).
- Функции обработки данных внутри приложения (Database Logic – логика обработки данных).
- Функции управления информационными ресурсами (Database Manager Logic). Это собственно СУБД, обеспечивающая хранение и управление базами данных.
- Служебные функции, играющие роль связок между функциями первых четырех групп.
В децентрализованной архитектуре «клиент-сервер» существуют различные варианты распределения функций между компьютером-сервером и компьютером-клиентом в двухзвенной модели: от мощного сервера , на котором производится практически вся работа, до мощного клиента, когда большая часть функций выполняется компьютером-клиентом, а сервер обрабатывает поступающие к нему по сети SQL-запросы. Рассмотрим наиболее популярные из них них. В модели удаленного доступа к данным (Remote Data Access, RDA) на сервере хранится база данных и ядро СУБД. На клиенте располагается презентационная логика и бизнес-логика. Клиент обращается к серверу с запросом на языке SQL, либо посредством средств пользовательского интерфейса (API). Данную модель поддерживает большое число серверных СУБД, имеющих SQL-интерфейсы, и инструментальных средств, обеспечивающих создание клиентской части. Модель сервера БД ( Database Server – DBS) характеризуется тем, что функции компьютера-клиента ограничиваются презентационной логикой. Большая часть бизнес-логики переложена на сервер. Иногда такую модель называют моделью с «тонким клиентом». Эта модель является более технологичной, чем RDA и применяется в таких СУБД как Informix, Ingres, Sybase, Oracle, SQL MS Server. Существуют и более сложные варианты реализации архитектуры «клиент-сервер», например, трехзвенные информационные системы с использованием серверов приложений, реализующих бизнес-логику информационной системы (модель сервера приложений – Application Server (AS)) (рис. 63). Центральным звеном модели является сервер приложений, на котором реализуется несколько прикладных функций. Серверов приложений может быть несколько, и каждый из них представляет свой вид сервиса. Программные средства сервера приложений относятся к категории программного обеспечения промежуточного слоя, которое определяется как «некоторый набор процедур или функций, обеспечивающих взаимодействие двух разнородных программ». Программные средства этой категории применимы к компьютерным сервисам практически любого вида, включая управление базами данных и информацией. Многие компании-поставщики программного обеспечения выпускают программные продукты, основанные на стандартах IDAPI, ODBC, DRDA или других стандартах промежуточного слоя и предоставляющие интерфейсные возможности для клиента и сервера. Затрагивая вопрос о категории промежуточного слоя необходимо упомянуть о программных системах промежуточного слоя – мониторах транзакций. Транзакцией называется совокупность операций манипулирования данными (вставкой, удалением, выборкой, обновлением) в системах баз данных, которая переводит базу данных из одного целостного (непротиворечивого) состояния в другое целостное состояние. Транзакция рассматривается как некоторое неделимое с точки зрения пользователя действие над базой данных. Например, транзакцией может быть последовательность операций по формированию заказа на сборку компьютера в компьютерной фирме: ввод нового заказа с реквизитами заказчика, формирование платежного документа, запрос на комплектующие. С точки зрения сотрудника компьютерной фирмы, это единая операция: если она будет прервана, то база данных потеряет свое целостное состояние. Восстановление данных в СУБД является составной часть управления данными и подразумевает восстановление самой базы данных, т.е. возвращение базы данных в правильное состояние в случае изменения данных в результате сбоя. Восстановление данных реализуется через механизм транзакций. Завершение транзакции означает, что все операции, входящие в состав транзакций, успешно завершены и результат их работы сохранен в базе данных. Откат транзакции означает, что все уже выполненные операции отменяются и все объекты базы данных, затронутые этими операциями возвращены в исходное состояние. Для реализации возможности отката транзакций большинство СУБД поддерживают запись в журналы транзакций, позволяющие сохранять промежуточные состояния и восстанавливать исходные данные при откате. Существуют различные модели транзакций [10,14, 26 и др.]. Под монитором обработки транзакций (Transaction Processing Monitor – TPM) понимаются средства программного обеспечения промежуточного слоя, предназначенные для обеспечения эффективного управления информационными и вычислительными ресурсами в распределенных системах при обработке транзакций. Понятие транзакции в TPM шире, чем транзакция в СУБД. Основными функциями TPM являются: аутентификация пользователей и проверка полномочий доступа, управление коммуникациями, необходимыми для выполнения транзакций, собственно управление транзакциями, включая управление блокировкой ресурсов, журнализацию, фиксацию, откаты и восстановление транзакций [15]. Основное достоинство архитектуры «клиент-сервер» заключается в снижении сетевого трафика при выполнении запросов и распределении процесса загрузки базы данных. SQL обеспечивает определенный интерфейс между клиентской и серверной системой, эффективно передавая запросы к базе данных. Преимущества данной архитектуры обеспечили ей большую популярность. Многие известные компании-поставщики программного обеспечения предлагают серверные СУБД и инструментальные средства разработки клиентских приложения.
5.12. Организация сетевой работы базы данных
База данных может быть открыта как в монопольном, так и в совместном режиме работы. Оператор компьютера, на котором расположена база данных, может установить монопольный режим и начать работать с базой данных. В этом случае абоненты сети могут лишь просматривать записи, но не изменять их. Режим совместной работы разрешает операторам абонентов сети изменять содержимое записей базы данных. Установка режима работы может быть осуществлена или в настройках базы данных, или, как это сделано в Access, в настройках «Сервис/Параметры/Другие» и «Сервис/Параметры/Таблицы». Указанные команды открывают вкладки, на которых можно указать:
- режим работы;
- наличие блокировки изменений (нет блокировки, блокируются изменения уже редактируемой другим строки таблицы, блокируются изменения всей уже редактируемой таблицы);
- права рабочего места при запуске (владельца и пользователя);
- первую форму, которая автоматически запускается при начале работы базы данных.
Полностью реализовать концепцию архитектуры «клиент-сервер» позволяет построение серверного и клиентских приложений. В частности последние версии Accessпозволяют создавать приложения на уровне проектов (рис. 5.10) с последующей их компиляцией вMDE-файлы. Рис. 5.10. Схема реализации проекта Access На сервере информационной системы устанавливается сервер базы данных (рассматриваемом случае MicrosoftSQL-Server). На диске сервера создается база данных, содержащая таблицы, схему базы данных и заранее откомпилированные последовательности инструкций на языкеSQL, которые называются сохраненными процедурами. В клиентском приложении существуют только формы и отчеты, доступные приложению, а также обеспечивающие их работу макросы и модули. Взаимодействие клиентского приложения и базы данных обеспечивают элементы доступа к даннымOLEDB. При создании клиентских приложений можно создать в каждом приложении стартовую кнопочную форму которая будет являться диспетчером вызова форм доступных конкретному рабочему месту. Для повышения эффективности работы сетевой базы данных можно предусмотреть репликацию, позволяющую делать копии таблиц, размещенных на рабочих местах. При этом возникает проблема синхронизации всех экземпляров каждой таблицы данных базы, т.е. обеспечения запоминания результатов редактирования данных во всех экземплярах таблицы.
5.13. Администрирование и защита баз данных
- создание клиентских приложений с так называемыми кнопочными формами;
- построение индивидуальных меню команд и панелей управления (или соответствующая настройка меню команд и панелей управления стандартной СУБД);
- компиляция клиентских приложений и базы данных в MDE-файлы;
- установка паролей на базы данных;
- администрирование базы данных;
- шифрование базы данных.
- просмотр, изменение или создание форм, отчетов или модулей;
- добавление, удаление или изменение ссылок на библиотеки объектов или базы данных;
- импорт и экспорт форм, отчетов или модулей.