Функции и компоненты СУБД
(Коннолли, с. 88-95)
СУБД – это программное обеспечение, с помощью которого пользователи могут определять, создавать и поддерживать БД, а также осуществлять к ней контролируемый доступ.
Функции СУБД (первые восемь предложены Коддом – сервисы, которые должны быть реализованы в любой полномасштабной СУБД; остальные две – добавлены Коннолли):
1. Хранение, извлечение и обновление данных
СУБД должна предоставлять пользователям возможность сохранять, извлекать и обновлять данные в БД.
Способ реализации этой функции в СУБД должен позволять скрывать от конечного пользователя внутренние детали физической реализации системы (например, файловую организацию или используемые структуры хранения).
2. Каталог, доступный конечным пользователям
СУБД должна иметь доступный конечным пользователям каталог, в котором хранится описание элементов данных.
Системный каталог, или словарь данных, является хранилищем информации, описывающей данные в базе данных (по сути, это данные о данных, т.е. метаданные). Обычно в системном каталоге хранятся следующие сведения: 1) имена, типы и размеры элементов данных; 2) имена связей; 3) накладываемые на данные ограничения поддержки целостности; 4) имена санкционированных пользователей, которым предоставлено право доступа к данным; 5) внешняя, концептуальная и внутренняя схемы и отображения между ними; 6) статистические данные, например частота транзакций и счетчики обращений к объектам БД.
Системный каталог позволяет достичь определенных преимуществ: 1) информация о данных может быть централизованно собрана и сохранена, что позволит контролировать доступ к этим данным, как и к любому другому ресурсу; 2) можно определить смысл данных, что поможет другим пользователям понять их предназначение; 3) упрощается сообщение, т.к. сохраняются точные определения смысла данных; 4) благодаря централизованному хранению избыточность и противоречивость описания отдельных элементов могут быть легко обнаружены; 5) внесенные в БД изменения могут быть запротоколированы; 6) последствия любых изменений могут быть определены еще до их внесения; 7) меры обеспечения безопасности могут быть дополнительно усилены; 8) появляются новые возможности организации поддержки целостности данных; 9) может выполняться аудит сохраняемой информации.
3. Поддержка транзакций
СУБД должна иметь механизм, который гарантирует выполнение либо всех операций обновления данной транзакции, либо ни одной из них, то есть при сбое транзакции БД должна быть возвращена в непротиворечивое состояние.
4. Сервисы управления параллельностью
СУБД должна иметь механизм, который гарантирует корректное обновление БД при параллельном выполнении операций обновления многими пользователями.
5. Сервисы восстановления
СУБД должна предоставлять средства восстановления БД на случай какого-либо ее повреждения или разрушения.
6. Сервисы контроля доступа к данным
СУБД должна иметь механизм, гарантирующий возможность доступа к БД только санкционированных пользователей.
7. Поддержка обмена данными
СУБД должна обладать способностью к интеграции с коммуникационным программным обеспечением.
То есть, необходимо чтобы была возможность установить одну централизованную БД и использовать ее как общий ресурс для всех существующих пользователей, то есть обеспечить распределенную обработку.
8. Службы поддержки целостности данных
СУБД должна обладать инструментами контроля за тем, чтобы данные и их изменения соответствовали заданным правилам.
Целостность БД означает корректность и непротиворечивость хранимых данных. Она выражается обычно в виде ограничений или правил сохранения непротиворечивости данных, которые не должны нарушаться в базе.
9. Службы поддержки независимости от данных
СУБД должна обладать инструментами поддержки независимости программ от фактической структуры БД.
Независимость от данных обычно достигается за счет реализации механизма поддержки представлений или подсхем.
10. Вспомогательные службы
Вспомогательные утилиты обычно предназначены для оказания помощи администратору БД в эффективном администрировании БД. Примеры подобных утилит: 1) утилиты импортирования, предназначенные для загрузки БД из плоских файлов и утилиты экспортирования для выгрузки БД в плоские файлы; 2) средства мониторинга, предназначенные для отслеживания характеристик функционирования и использования БД; 3) программы статистического анализа, позволяющие оценить производительность или степень использования БД; 4) инструменты реорганизации индексов, предназначенные для перестройки индексов и обработки случаев их переполнения; 5) инструменты сборки мусора и перераспределения памяти для физического устранения удаленных записей с запоминающих устройств, объединения освобожденного пространства и перераспределения памяти в случае необходимости.
Компоненты СУБД
Основные программные компоненты среды СУБД представлены на рисунке.
1. Процессор запросов
Основной компонент СУБД, который преобразует запросы в последовательность низкоуровневых инструкций для контроллера БД
2. Контроллер БД
Взаимодействует с запущенными пользователем прикладными программами и запросами. Принимает запросы и проверяет внешние и концептуальные схемы для определения тех концептуальных записей, которые необходимы для удовлетворения требований запроса. Затем вызывает контроллер файлов для выполнения поступившего запроса.
3. Контроллер файлов
Манипулирует предназначенными для хранения данных файлами и отвечает за распределение доступного дискового пространства. Создает и поддерживает список структур и индексов, определенных во внутренней схеме. Не управляет физическим вводом и выводом данных непосредственно, а передает запросы соответствующим методам доступа.
4. Препроцессор языка DML
Преобразует внедренные в прикладные программы DML-операторы в вызовы стандартных функций базового языка. Для генерации соответствующего кода должен взаимодействовать с процессором запросов.
5. Компилятор языка DDL
Преобразует DDL-команды в набор таблиц, содержащих метаданные. Затем эти таблицы сохраняются в системном каталоге, а управляющая информация – в заголовках файлов с данными.
6. Контроллер словаря
Управляет доступом к системному каталогу и обеспечивает работу с ним. Системный каталог доступен большинству компонентов СУБД.