Контроллер словаря – обеспечивает доступ к системному каталогу и работу с ним.
Контроллер файлов – манипулирует фалами с данными и отвечает за распределение дискового пространства. Он не управляет физическим вводом/выводом, а передает запросы соответствующим методам доступа ОС.
Контроллер БД – взаимодействует с запущенными пользователями программами и запросами. Он принимает запросы и проверяет внешние и концептуальные схемы для определения тех концептуальных записей, которые необходимы для выполнения запроса к БД. Затем контроллер БД вызывает контроллер файлов для выполнения запроса. В состав контроллера БД входят следующие программные компоненты:
· контроль прав доступа – проверяет наличие у данного пользователя полномочий на выполнения затребованной операции;
· процессор команд – выполняет запрос;
· средства контроля целостности – осуществляют проверку ограничений поддержки целостности при выполнении операций изменения данных;
· оптимизатор запросов – определяет оптимальную стратегию выполнения запроса;
· контроллер транзакций – осуществляет обработку операций, поступающих в процессе транзакции;
· планировщик – отвечает за бесконфликтное выполнение параллельных операций с БД и управляет относительным порядком выполнения операций, определенным в разных транзакциях;
· контроллер восстановления – отвечает за восстановление БД при сбоях до непротиворечивого состояния;
· контроллер буфера – отвечает за перенос данных между ОП и жестким диском.
Многие СУБД поддерживают возможность внедрения собственных операторов в языки высокого уровня (COBOL, Fortran, Pascal, Ada, C). Но в СУБД поддерживается 2 специализированных языка для разработки приложений с БД – ЯОД (DDL – Data Definition Language) и ЯМД (DMD – Data Manipulation Language). ЯОД – описательный язык для определения логической схемы БД. Он состоит из набора операторов, задающих определение схемы БД. Результатом компиляции таких описаний (концептуальной и внешних схем) является набор таблиц, хранимый в специальном системном каталоге БД. (Он хранит метатданные). ЯОД не используется для работы с данными. Для этого используется ЯМД, который содержит набор операторов, выполняющих обработку данных: поиск, добавление, изменение и удаление. Поддержка ЯМД – одна из основных функций СУБД. Различают 2 подхода к реализации ЯМД: процедурный и декларативный.
При использовании процедурного ЯМД пользователь определяет последовательность действий, которые необходимо выполнить, чтобы получить требуемый результат. Этот поход аналогичен тому, как реализованы процедурные языки программирования (Pascal, C и др.). ЯМД в этом случае предоставляет пользователю набор операторов над данными. К этому типу относятся языки, основанные на реляционной алгебре.
Декларативные ЯМД позволяют определить весь требования к результирующим данным с помощью одного оператора. В этом случае нет необходимости знать детали внутренней реализации структур данных и особенности алгоритмов, используемых для их извлечения. К этому типу относятся языки, основанные на реляционном исчислении SQL и QBE. SQL (Structured Query Language) основан на реляционном исчислении и поддерживается всеми реляционными СУБД. Для него определен международный стандарт. QBE (Query By Example) – простой язык с графическим интерфейсом, который позволяет формулировать запрос непрофессиональным пользователям ( напр., в СУБД Access).
Современные СУБД содержат также в своем составе набор инструментальных средств, облегчающих разработку приложений с БД – различного рода генераторы:
экранных форм – для создания шаблонов ввода данных;
отчетов;
графического представления данных в виде диаграмм;
приложений для создания программ обработки данных.