Типовая организация СУБД и упрощенная схема работы Очевидно, что организация типичной СУБД и состав ее компонентов соответствует рассмотренному набору функций. Логически в современной реляционной СУБД можно выделить:
· внутреннюю часть – ядро СУБД (часто его называют DBE - Data Base Engine),
· компилятор языка БД (обычно, SQL),
· подсистему поддержки времени выполнения,
· набор утилит.
В некоторых системах эти части выделяются явно, в других - нет, но логически такое разделение можно провести во всех СУБД.
Ядро СУБД отвечает за управление данными во внешней памяти, управление буферами оперативной памяти, управление транзакциями и журнализацию. Соответственно можно выделить такие компоненты ядра, как менеджер данных, менеджер буферов, менеджер транзакций и менеджер журнала. Функции этих компонентов взаимосвязаны, и для обеспечения корректной работы СУБД все эти компоненты должны взаимодействовать по тщательно продуманным и проверенным протоколам. Ядро СУБД обладает собственным интерфейсом, не доступным пользователям напрямую и используемым в программах, производимых компилятором SQL (или в подсистеме поддержки выполнения таких программ), и утилитах БД. Ядро СУБД является основной резидентной частью СУБД.
Основная функция компилятора языка БД - компиляция операторов языка БД в некоторую выполняемую программу. Основной проблемой реляционных СУБД является то, что языки этих систем (а это, как правило, SQL) являются непроцедурными, то есть в операторе такого языка специфицируется некоторое действие над БД, но эта спецификация не процедура, она лишь описывает в некоторой форме условия совершения желаемого действия. Поэтому компилятор должен решить, каким образом выполнять оператор языка, прежде чем произвести программу. Результатом компиляции является выполняемая программа, представляемая в некоторых системах в машинных кодах, но более часто в выполняемом внутреннем машинно-независимом коде. В последнем случае реальное выполнение оператора производится с привлечением подсистемы поддержки времени выполнения, представляющей собой, по сути дела, интерпретатор этого внутреннего языка.
Наконец, в отдельные утилиты БД обычно выделяют такие процедуры, которые слишком накладно выполнять с использованием языка БД, например, загрузка и разгрузка БД, сбор статистики, заполнение БД реальными данными, глобальная проверка целостности БД и т.д. Утилиты программируются с использованием интерфейса ядра СУБД, а иногда даже с проникновением внутрь ядра.
Обобщенную структуру СУБД можно представить схемой на рис. 18.
Упрощенно основные этапы реализации СУБД запроса приложения представлены на рис.19.
1.Прикладная программа выдает СУБД запрос на доступ к БД.
2.СУБД анализирует запрос и определяет типы необходимых логических записей, содержащих запрашиваемые данные.
3.СУБД определяет хранимые записи, которые нужно предоставить прикладной программе.
4.СУБД выдает ОС команды поиска и обработки хранимых записей.
5.ОС интерпретирует команды СУБД, взаимодействует с внешним запоминающим устройством, обнаруживая в БД требуемые записи.
Рис.18. Обобщенная структура СУБД
6.Отобранные записи передаются в системные буферы.
7.СУБД выделяет логические записи, которые необходимо передать приложению.
8.СУБД передает выделенные данные из системных буферов в рабочую область прикладной программы, предварительно преобразовав их в формат, указанный в запросе.
9.СУБД передает прикладной программе информацию о результатах обработки запроса.
10.При успешном завершении СУБД обработки запроса приложение использует полученные данные для дальнейшей работы, в противном случае запрос должен быть повторен.
Рис.19. Схема реализации запроса к СУБД
Замечание. Понятия концептуальной и внешней схем для навигационных моделей достаточно очевидны. Для реляционной модели внешнюю схему можно ассоциировать со схемой отношения, являющегося результатом выполнения запроса. А вот понятие концептуальной схемы как результата реализации соответствующей модели инструментарием СУБД заменяется понятием даталогической (логической) схемы базы данных как взаимосвязанного набора схем отношений, формирующих базу.
Замечание. Для более эффективной работы с внешней памятью СУБД может взять управление на себя, минуя систему управления файлами ОС. Более подробно этот материал рассмотрен в п. 7.3..
Взаимодействие компонентов информационной системы между собой, предметной областью и ее моделью может быть представлена схемой на рис.20.
КОНТРОЛЬНЫЕ ВОПРОСЫ ПО ШЕСТОМУ РАЗДЕЛУ
1. Перечислите основные функции СУБД.
2. Опишите языковую компоненту СУБД.
3. Определите понятие транзакции. Назначение и суть механизма журнализации.
4. Какие основные аспекты сохранения целостности учитываются при функционировании СУБД.
5. Какие основные аспекты защиты данных должны учитываться при функционировании СУБД.
6. Сформулируйте понятия логической и физической независимости данных.
7. Приведите обобщенную схему СУБД.
8. Приведите упрощенную схему функционирования СУБД.
Рис.20 Взаимодействие компонентов информационной системы
|