Состав и работа РБД

Схема РБД может быть представлена в виде, показанном на рис. 10.2. В ней выделяют пользовательский, глобальный (концептуальный), фрагментарный (логический) и распределенный (локальный) уровни представления данных (рис. 10.3), определяющие сетевую СУБД [11].

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

Рис. 10.2. Схема РБД

Рис. 10.3. Уровни представления данных в РБД

Таблица 10.1

Данные в РБД (глобальный уровень)

а) Служащий

N

Имя

Завод

Тариф

100

Иванов

1

6

101

Петров

1

6

102

Сидоров

2

10

103

Артемов

2

12

104

Печкин

3

5

105

Крамов

3

11

б) Завод

N

Расположение

1

С.-Петербург

2

Вологда

3

Сыктывкар

в) Сырье

N

Название

Количество

1

Картон

500

2

Картон

100

2

Открытки

940

3

Брошюры

75

В табл. 10.1 разными шрифтами выделены фрагменты БД.

Не все данные глобального уровня доступны конкретному пользователю. Наиболее полные данные (пользовательский, внешний уровень) имеются в узле 1 головного предприятия. В узлах (участках) 2, 3 данные менее полные. Так, в узле 3 они имеют вид, показанный в табл. 10.2.

Таблица 10.2

Пользовательский уровень в РЕД

а) Служащий

N

Имя

Завод

Тариф

104

Печкин

3

5

105

Крамов

3

11

б) Завод

N

Расположение

1

С.-Петербург

2

Вологда

3

Сыктывкар

в) Сырье

N

Название

Количество

3

Брошюры

75

Пользовательский уровень состоит из фрагментов (например, строки 1, 2, 3 таблица "Завод" табл. 10.1) глобальною уровня, которые составляют фрагментарный, логический уровень.

Выделяют горизонтальную и вертикальную фрагментации (расчленение). Горизонтальная фрагментация связана с делением данных по узлам. Горизонтальные фрагменты нс перекрываются. Вертикальная фрагментация связана с группированием данных по задачам.

Фрагментация чаще всего не предполагает дублирования информации в узлах. В то же время при размещении фрагментов по узлам (локализации) распределенного уровня в узлах разрешается иметь копии той или иной части РБД. Так, например, локализация для примера в табл. 10.1 может иметь вид, показанный в табл. 10.3.

Таблица 10.3

Локализация данных

Имя таблицы

Распределение фрагментов по узлам

Служащие

1

1. 2

1. з

Завод

1, 2, 3

I, 2, 3

1, 2, 3

Сырье

1

2

3

Очевидно, что для таблицы "Завод" осуществляется дублирование, а для таблицы "Сырье" – расчленение.

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

Рис. 10.4. Схема работы РБД

Иначе говоря, РБД можно представить в виде, показанном на рис. 10.3.

Сеть в РБД образуют сетевые операционные системы (например, Windows NT, Novell NetWare). В качестве СУБД, изначально предназначавшихся для использования в сети, следует назвать BTrieve, Oracle, InterBase, Sybase, Informix.

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

В общем случае могут быть выделены сетевой, общий внешний, общий концептуальный, локальные внешние, локальные концептуальные и внутренние составляющие словаря РБД.

Естественно, что для работы в РБД необходимы администраторы РБД и локальных БД, рабочими инструментами которых являются перечисленные словари.

Схема работы РБД показана на рис.

10.4.

Пользовательский запрос, определяемый приложением, поступает в систему управления распределенной базы данных (СУРБД), через сетевую и локальную операционные системы попадает в локальную СУБД. Если запрос связан с локальными данными, СУБД осуществляет вызов данных из локальной БД, которые поступают пользователю. Если часть данных для выполнения приложения находится в другой локальной БД, локальная СУБД дополнительно через локальные и сетевую операционные системы осуществляет удаленный вызов процедуры (Remote Procedure Call – PRC), после выполнения которой данные передаются пользователю.

Возможны четыре стратегии хранения данных: централизованная (часто обеспечиваемый архитектурой клиент–сервер), расчленение (фрагментации), дублирование, смешанная.

Сравнительные характеристики стратегий хранения приведены в табл. 10.4. На ее основе может быть построен простейший алгоритм выбора стратегии, приведенной на рис. 10.5.

Таблица 10.4

Стратегии хранения данных

Название

Суть стратегии

Достоинство

Недостатки

Централизация (в том числе технология клиент- сервер)

Единственная копия в одном узле

Простота структуры

Скорость обработки ограничена одним узлом

Ограниченный

доступ

Малая надежность

Долговременная память определяет объем БД

Локализация

(расчленение)

Единственная копия, расчленение по узлам (полная копия БД не допускается)

Объем БД определяется памятью сети

Снижение стоимости РБД Время отклика при параллельной обработке уменьшается

Малая чувствительность к узким местам

Повышенная надежность при высокой локализации данных

Запрос может быть по всем узлам

Доступ хуже, чем при централизации

Рекомендация

применения:

долговременная память ограничена по сравнению с объемом БД;

должна быть повышена эффективность функционирования при высокой степени локализации

Дублирование

В каждой локальной БД полная копия

Выше надежность, доступ и эффективность выборки, простота восстановления.

Локальная асинхронная обработка в узлах

Получение быстрых ответов

Объем БД ограничен долговременной памятью Потребность синхронизации многих копий Потребность в дополнительной памяти

Слабая реализация параллельной обработки Рекомендации применения: фактор надежности превалирует;

БД невелика; интенсивность обновления невысока;

интенсивные

запросы

Смешанная

Несколько копий хранимого логического фрагмента в каждом узле

Любая степень надежности Большая доступность

Меньше пересылок данных Параллельная обработка

Надо хранить словари

Рост стоимости согласования данных

Разная частота обращения узла к различным частям БД

Потеря надежности из-за расчленения данных

Малая свободная долговременная память из-за дублирования

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

Рис. 10.5. Алгоритм выбора стратегии хранения:

А – запрос локален

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

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

К клиентам не предъявляются столь жесткие требования по памяти и быстродействию. На них располагаются словари и приложения, служащие своеобразными фильтрами для данных сервера. В связи с этим обмен информацией в архитектуре (рис. 10.6) фактически минимизируется.

Работа в архитектуре клиент-сервер может поддерживаться и с помощью схемы Open DataBase Connectivity (ODBC), как показано на рис. 10.7. В этом случае сеть образуется путем соединения серверов. Такое соединение обеспечивается или средствами СУБД (SQL Server) или мониторами транзакций (TUXEDO).

Рис. 10.6. Архитектура клиент-сервер

Обсудим более подробно вариант реализации РБД – архитектуру клиент-сервер.

Рис. 10.7. ODBC в архитектуре клиент-сервер

Совместно с термином "клиент-сервер" используются три понятия.

1. Архитектура: речь идет о концепции построения варианта РБД.

2. Технология: говорят о последовательности действий в РБД.

3. Система: рассматриваются совокупность элементов и их взаимодействие.

Об архитектуре клиент-сервер говорилось ранее.

Технология клиент-сервер позволяет повысить производительность труда:

• сокращается общее время выполнения запросов за счет мощного сервера;

• уменьшается доля и увеличивается эффективность использования клиентом (для вычислений) центрального процессора;

• уменьшается объем использования клиентом памяти "своего" компьютера;

• сокращается сетевой трафик.

К таким крупномасштабным системам предъявляются следующие требования: I) гибкость структуры; 2) надежность; 3) доступность данных; 4) легкость обслуживания системы; 5) масштабируемость приложений; 6) переносимость приложений (на разные платформы); 7) многозадачность (возможность выполнения многих приложений).

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

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

2. В СУБД Access, которая изначально создана как локальная, предусмотрен режим деления базы данных. Таблицы остаются на сервере (back-end), а остальные объекты (запросы, отчеты) передаются клиентам (front-end). В этом случае по-прежнему большой трафик, в силу чего при использовании файл-серверов количество подключаемых клиентов – при их надежной работе – до четырех.

В то же время требовалось подключение десятков и даже сотен клиентов [1-3]. Этого удалось достичь в архитектуре (режиме, технологии) клиент-сервер. В этом режиме трафик резко уменьшается, поскольку по сети передаются только те данные, которые соответствуют запросам клиентов [2].

Для этого пришлось построить СУБД, изначально предназначенные для работы в сети. Фирма Microsoft [27-29] вынуждена была – в дополнение к СУБД Access, которая использовалась с помощью приложения ODBC только для клиентских целей – предложить в качестве сервера Microsoft SQL Server. Такая структура оказалась тяжеловесной и неудобной, так как разработчику требовалось знать уже две СУБД.

Из других предложений очень удачным оказался программный продукт Delphi [30-36], в рамках которого могут использоваться СУБД dBase, Paradox, и, при отдельной инсталляции, InterBase (режим клиент-сервер). При этом СУБД InterBase поддерживается, наряду с языком программирования SQL, мощным, понятным, простым и широко распространенным языком программирования (Object) Pascal [11], построенным с применением объектно-ориентированного подхода [33].

Последнее обстоятельство позволяет легко строить объектно-реляционные базы данных (см. гл. 9). Высокая степень автоматизации программирования дает возможность резко упростить и снизить трудоемкость процедур создания интерфейса пользователя, и особенно алгоритма приложения.

В системе клиент-сервер возможно выделить следующие составляющие: сервер, клиент, интерфейс между клиентом и сервером, администратор.

Сервер осуществляет управление общим для множества клиентов ресурсом. Он выполняет следующие задачи:

• управляет общей БД;

• осуществляет доступ и защиту данных, их восстановление;

• обеспечивает целостность данных.

К БД на сервере предъявляются те же требования, как и к централизованной многопользовательской БД.

Следует отметить, что результаты запросов клиента помещаются в рабочую область памяти сервера, которая в ряде СУБД (например, Oracle) называют "табличная область". Поскольку она не занимает много места, для каждого клиента-пользователя целесообразно создавать свою табличную область. В этом случае исходные таблицы становятся для пользователя недоступными, а архивация (копирование) БД приложения клиента упрощается.

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

• предоставляет интерфейс пользователю;

• управляет логикой работы приложений;

• проверяет допустимость данных;

• осуществляет запрос и получение данных с сервера.

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

В качестве СОС могут использоваться Windows NT, Novell NetWare. Коммуникационное программное обеспечение позволяет компьютерам взаимодействовать на языке специальных программ – коммуникационных протоколов.

В общем случае такое взаимодействие осуществляется с помощью семиуровневой схемы ISO с соответствующими протоколами. Для локальных сетей схема упрощается. Протоколоми для Windows NT служит Transmission Control Program/Internet Program (TCP/IP), для NetWare – Sequenced Packed eXchange/Intemet Packed eXchaned (SPX/IPX).

Разнообразие сетевых средств делает необходимым создание стандартного промежуточного программного обеспечения клиент-сервер, находящегося на сервере и клиентах. Говорят о прикладном программном интерфейсе (Application Programming Interface – API). Сюда относятся Open DataBase Connectivity (ODBC) и Integrated Database Application Programming Interface (IDAPI), используемый в приложении Delphi и СУБД InterBase.

Взаимодействие клиентов и сервера можно представить себе следующим образом.

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

Если подключение осуществлено, начинает работать сервер, выполняющий два вида процессов: переднего раздела и фоновые.

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

Работа сервера может иметь такой порядок.

1. После поступления запроса диспетчер ставит его в очередь по схеме "первым пришел – первым обслужен".

2. Процесс переднего раздела выбирает "самый старый" запрос и начинает его обработку. После завершения результаты помещаются в очередь для передачи клиенту.

3. Диспетчер посылает результаты из очереди соответствующему клиенту.

При обработке запроса фоновые процессы выполняют другие важные операции, основными из которых являются следующие:

• запись данных из БД в промежуточную (буферную) память рабочей области (при чтении) и обратно (при обновлении);

• запись в журнал транзакций;

• архивация (копирование) групп транзакций;

• аварийное завершение транзакций;

• периодическая запись на диск контрольных точек для обеспечения восстановления данных в РБД после аппаратного сбоя.

Администратор РБД (АРБД) должен решать следующие задачи [39].

1. Планирование РБД и распределение памяти.

2. Настройка конфигурации сети.

3. Создание РБД.

4. Работа с разработчиками приложений.

5. Создание новых пользователей и управление полномочиями.

6. Регулярная архивация БД и выполнение операций по ее восстановлению.

7. Управление доступом к БД с помощью ОС и СОС, средств защиты и доступа.

В больших системах AРБД может состоять из ряда лиц, отвечающих, например, за ОС, сеть, архивацию, защиту.

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

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

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

Использование для составления сценария CASE-средств значительно сокращает трудоемкость работ по проектированию. Иначе эта процедура выполняется вручную с помощью команд языка SQL.

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

Чтобы его снизить, возможно использовать следующие рекомендации.

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

2. Целесообразно использовать на сервере хранимые процедуры, совокупность которых можно инкапсулировать в виде пакета (модуля). В результате трафик уменьшится: клиент будет передавать только вызов процедуры и ее параметры, а сервер – результаты выполнения процедуры.

3. В ряде случаев клиентам следует получать уведомления базы данных (например, заведующему складом – о нижнем уровне запасов, при котором следует выполнять новый заказ). Если уведомление производится по запросу клиента, трафик увеличивается. Проще эту (хранимую) процедуру разместить на сервере, который будет автоматически уведомлять клиента о возникновении события. В то же время клиент при необходимости может получать информацию с помощью простых вызовов процедур.

В режиме клиент-сервер выделяют две разновидности структуры: одноуровневую, о которой шла речь до сих пор, и многоуровневую (рис. 10.8).

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

Рис. 10.8. Одноуровневая – "толстый" клиент (а) и многоуровневая – "тонкий" клиент (б) структуры клиент-сервер

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

Так, в СУБД InterBase в одноуровневой структуре в каждом клиенте имеется утилита Borland Database Engine (BDE – ядро Delphi) объемом 8 Мбайт. В многоуровневой структуре BDE-утилита имеется только в сервере приложений, а объем памяти, занимаемой клиентом, снижается до 212 кбайт. Достигается этот результат за счет усложнения структуры.