СУБД является весьма сложным видом программного обеспечения, предназначенного для предоставления перечисленных выше сервисов. Компонентную структуру СУБД практически невозможно обобщить, поскольку она очень сильно различается в разных системах. Однако при изучении систем баз данных полезно представлять себе ее обобщенную структуру в виде набора нескольких компонент и определенных связей между ними.
СУБД состоит из нескольких программных компонентов (модулей), каждый из которых предназначен для выполнения специфической операции. Некоторые функции СУБД могут поддерживаться используемой операционной системой. Однако в любом случае операционная система предоставляет только базовые службы и СУБД всегда представляет собой надстройку над ними.
Основные программные компоненты представлены на рисунке 1. На этой схеме также показано, как СУБД взаимодействует с другими программными компонентами, например с такими, как пользовательские запросы и методы доступа (т. е. методы управления файлами, используемые при сохранении и извлечении записей с данными)
Рисунок 1 Обобщенная компонентная структура СУБД
- Процессор запросов
Это основной компонент СУБД, который преобразует запросы в последовательность низкоуровневых инструкций для контроллера базы данных
- Контроллер базы данных
Этот компонент взаимодействует с запущенными пользователем прикладными программами и запросами. Контроллер базы данных принимает запросы и проверяет схему базы данных для определения тех записей, которые необходимы для удовлетворения требований запроса. Затем контроллер баз данных. Вызывает контроллер файлов для выполнения поступившего запроса.
- Контроллер файлов
Манипулирует предназначенными для хранения данных файлами и отвечает за распределение доступного дискового пространства. Он создает и поддерживает список индексов. Если используются хешированные файлы, то в его обязанности входит и вызов функций хеширования для генерации адресов записей. Однако контроллер файлов не управляет физическим вводом и выводом данных непосредственно, а лишь передает запросы соответствующим методам доступа, которые считывают данные в системные буферы или записывают их оттуда на диск.
- Препроцессор языка DML
Этот модуль преобразует внедренные в прикладные программы DML - операторы в вызовы стандартных функций базового языка.
- Компилятор языка DDL
Компилятор языка DDL преобразует DDL - команды в набор таблиц , содержащих метаданные, затем эти таблицы сохраняются в системном каталоге.
- Контролер словаря
Контроллер словаря управляет доступом к системному каталогу и обеспечивает работу с ним.
Компонентную структуру контроллера базы данных, как основного модуля СУБД можно в обобщенном виде представить в виде следующей структурной схемы:
Рисунок 2 Обобщенная структурная схема контроллера базы данных
- Контроль прав доступа
Этот модуль проверяет наличие у данного пользователя полномочий для выполнения затребованных операций.
- Процессор команд
После проверки полномочий пользователя для выполнения затребованной операции управление передается процессору команд.
- Средства контроля целостности
В случае операций, которые изменяют содержимое базы данных, средства контроля целостности выполняют проверку того, удовлетворяет ли затребованная операция всем установленным ограничениям поддержки целостности данных (например, требованиям установленным для ключей).
- Оптимизатор запросов
Этот модуль определяет оптимальную стратегию выполнения запроса.
- Контроллер транзакций
Этот модуль осуществляет требуемую обработку операций, поступающих в процессе выполнения транзакции.
- Планировщик
Этот модуль отвечает за бесконфликтное выполнение параллельных операций с базой данных. Он управляет относительным порядком выполнения операций, затребованных в отдельных транзакциях.
- Контроллер восстановления
Этот модуль гарантирует восстановление базы данных до непротиворечивого состояния при возникновении сбоев. В частности, он отвечает за фиксацию и отмену результатов транзакции.
- Контроллер буферов
Этот модуль отвечает за перенос данных между оперативной памятью и вторичным запоминающим устройством. Контроллер восстановления и контроллер буферов иногда (в совокупности) называют контроллером данных
Для воплощения базы данных на физическом уровне помимо перечисленных выше модулей нужны некоторые другие структуры данных. К ним относятся файлы данных и индексов, а также системный каталог.