Структура системы управления базами данных
СУБД является прикладным программным обеспечением, предназначенным для решения конкретных прикладных задач и выполнения системных функций, расширяющих возможность файловых систем системного программного обеспечения. СУБД реализует следующие функции:
· организацию и поддержание логической структуры данных (схемы данных), которая обеспечивается средствами модели организации данных (иерархической, сетевой, реляционной);
· организацию и поддержание физической структуры данных во внешней памяти, которая включает организацию и поддержание внутренней структуры файлов Базы данных, а так же создание и поддержание специальных структур (индексов, страниц) для эффективного и упорядоченного доступа к данным;
· организацию доступа к данным и их обработка в оперативной и внешней памяти, которая осуществляется через реализацию процессов, называемых транзакциями.
В структуре СУБД в современном представлении выделяют следующие функциональные блоки.
1. Процессор описания и поддержания структуры Базы данных. Этот процессор реализует модель организации данных, средствами которой проектировщик строит логическую структуру (схему) Базы данных, соответствующую инфологической схеме предметной области и обеспечивает построение и поддержание внутренней схемы Базы данных. Процессор обеспечивает установку логической структуры Базы данных и трансляцию (перевод) структуры Базы данных во внутреннюю схему Базы данных (в физические структуры данных).
2. Процессор запросов к Базе данных. Процессор интерпретирует сформированные запросы в терминах языка манипулирования данными и совместно с процессором описания и поддержания структуры Базы данных исполняет запросы.
3. Интерфейс ввода данных СУБД. Его функция заключается в реализации входного информационного языка Банка данных, который обеспечивает абонентам-поставщикам информации средства описания и ввода данных в информационную систему.
4. Интерфейс запросов. Совместно с процессором запросов интерфейс запросов обеспечивает концептуальную модель использования информационной системы в части стандартных типовых запросов, отражающих информационные потребности пользователей-абонентов системы.
5. Мониторинг транзакций. Функции мониторинга заключаются в организации совместного выполнения транзакций от нескольких пользователей над общими данными и обеспечение целостности данных.
6. Интерфейс выдачи сведений. Процессор запросов передает результат исполнения запросов интерфейсу выдачи сведений, который переводит эти результаты в форму, удобную для восприятия и выдачи пользователю-абоненту информационной системы.
7. Генератор отчетов. Для формирования отчетов служат специальные формы выдачи. Отчеты выдают результаты поиска и отбора информации из Базы данных для формализованного создания соответствующих текстовых документов. Для выполнения данной задачи используется генератор отчетов.
Основные компоненты СУБД представлены: а) средствами представления данных в Базе данных; б) средствами манипулирования данными; в) интерфейсами пользователей; г) интерфейсами администратора Базы данных; д) интерфейсами коммуникаций.
Средства представления данных совместно с интерфейсами осуществляют организацию Базы данных на разных уровнях абстракции данных. Различают три уровня абстракции и представления данных:
· физический уровень, средства физического уровня учитывают характеристики конкретного внешнего запоминающего устройства, форматы и способы записи данных на физический носитель и др.;
· концептуальный уровень, средства концептуального уровня отображают данные физического уровня с определенной абстракцией; уровень определяет модель представления данных в Базе данных;
· внешний уровень, средства внешнего уровня преобразуют данные в форму, понятную пользователю с которой пользователь может работать через свои интерфейсы.
Из вышесказанного следует, что структура СУБД представляет собой совокупность инструментальной среды создания и использования Баз данных в рамках определенной модели данных и языка СУБД (языка описания данных, манипулирования данными и средств создания интерфейса).
Организация типичной СУБД и состав ее компонентов соответствуют вышеуказанному набору функций. Например, в современной реляционной СУБД логически можно выделить внутреннюю часть – ядро СУБД (Data Base Engine), компилятор языка Базы данных, подсистему поддержки времени выполнения, набор утилит. В некоторых системах эти части выделяются явно, в других – нет, но логически такое разделение можно провести во всех СУБД.
Ядро СУБД отвечает за управление данными во внешней памяти, управление буферами оперативной памяти, управление транзакциями и журнализацию. Соответственно можно выделить следующие компоненты ядра: менеджер данных, менеджер буферов, менеджер транзакций и менеджер журнала. Функции этих компонентов взаимосвязаны, и для обеспечения корректной работы СУБД все эти компоненты должны взаимодействовать по тщательно продуманным и проверенным протоколам.
Ядро СУБД обладает собственным интерфейсом, не доступным пользователям напрямую и используемым в программах, производимых компилятором языка или в подсистеме поддержки выполнения таких программ и утилитах Базы данных. Ядро СУБД является основной резидентной частью СУБД. При использовании архитектуры «клиент-сервер» ядро является основной составляющей серверной части системы.
Основной функцией компилятора является компиляция операторов языка Базы данных в некоторую выполняемую программу. Основной проблемой реляционных СУБД является то, что языки этих систем (обычно SQL) непроцедурные, т.е. в операторе языка специфицируется некоторое действие над Базой данных, но эта спецификация не является процедурой, а лишь описывает в некоторой форме условия совершения процедуры. Поэтому компилятор должен решить, каким образом выполнить оператор языка, прежде чем произвести программу. Применяются достаточно сложные методы оптимизации операторов. Результатом компиляции является выполняемая программа, представляемая в машинных кодах или в выполняемом внутреннем машинно-независимом коде. В последнем случае выполнение оператора производится с привлечением подсистемы поддержки времени выполнения, представляющей собой интерпретатор внутреннего языка.
В отдельные утилиты Базы данных выделяют процедуры, которые слишком накладно выполнять с использованием языка Базы данных, например, загрузка и выгрузка Базы данных, сбор статистики, глобальная проверка целостности Базы данных и т.д. Утилиты программируются с использованием интерфейса ядра СУБД, иногда с проникновением внутрь ядра.
Структура СУБД является эффективной, если она обеспечивает:
· ненавигационный интерфейс высокого уровня пользователя с системой, позволяющий достичь независимости данных и дать возможность пользователям работать максимально эффективно;
· многообразие допустимых способов использования СУБД, включая программируемые транзакции, диалоговые транзакции и генерацию отчетов;
· динамически изменяемую среду Баз данных, в которой отношения, индексы, представления, транзакции и другие объекты могут легко добавляться и уничтожаться без приостановки нормального функционирования системы;
· возможность параллельной работы с одной Базой данных многих пользователей с допущением параллельной модификации объектов Базы Данных при наличии необходимых средств защиты целостности;
· восстановление согласованного состояния Баз данных после сбоев аппаратуры или программного обеспечения;
· определение различных представлений хранимых данных, и ограничение этими представлениями доступа пользователей к Базе данных по выборке и модификации на основе механизма авторизации;
· производительность системы при выполнении упомянутых функций, сопоставимую с производительностью существующих СУБД низкого уровня.
Очень важными компонентами СУБД являются система управления реляционной памятью (Relational Storage System, RSS) и компилятор запросов языка SQL. RSS обеспечивает интерфейс низкого уровня для доступа к данным, хранимым в Базе данных, синхронизацию транзакций, журнализацию изменений и восстановление Баз данных после сбоев.
Компилятор запросов использует интерфейс RSS для доступа к справочной информации (каталогам отношений, индексов, прав доступа, условий целостности, условных воздействий и т.д.) и производит рабочие программы, выполняемые в дальнейшем с использованием интерфейса RSS. Таким образом, система разделяется на два уровня – уровень управления памятью и синхронизацией, не зависящий от базового языка запросов системы, и языковой уровень (уровень SQL), на котором решается большинство задач СУБД.