Более подробно эти
функции будут рассмотрены далее.
Логически в современной реляционной СУБД можно выделить внут-
реннюю часть – ядро СУБД (часто его называют Data Base Engine), ком-
пилятор языка БД (обычно SQL), подсистему поддержки времени вы-
полнения, набор утилит. В некоторых системах эти части выделяются
явно, в других – нет, но логически такое разделение можно провести во
всех СУБД.
Ядро СУБД отвечает за управление данными во внешней памяти,
управление буферами оперативной памяти, управление транзакциями и
журнализацию. Соответственно можно выделить такие компоненты ядра
(по крайней мере, логически, хотя в некоторых системах эти компоненты
выделяются явно), как менеджер данных, менеджер буферов, менеджер
транзакций и менеджер журнала.
Функции этих компонентов взаимосвя-
заны, и для обеспечения корректной работы СУБД все эти компоненты
должны взаимодействовать по тщательно продуманным и проверенным
протоколам. Ядро СУБД обладает собственным интерфейсом, не дос-
тупным пользователям напрямую и используемым в программах, произ-
водимых компилятором SQL (или в подсистеме поддержки выполнения
таких программ) и утилитах БД. Ядро СУБД является основной рези-
дентной частью СУБД. При использовании архитектуры «клиент–
сервер» ядро является основной составляющей серверной части системы.
Основной функцией
компилятора языка БД является компиляция опе-
раторов языка БД в некоторую выполняемую программу. Основной про-
блемой реляционных СУБД является то, что языки этих систем (а это,
как правило, SQL) являются непроцедурными, т. е. в операторе такого
языка специфицируется некоторое действие над БД, но эта специфика-
ция не является процедурой, а лишь описывает в некоторой форме усло-
вия совершения желаемого действия. Поэтому компилятор должен ре-
шить, каким образом выполнять оператор языка, прежде чем произвести
программу. Применяются достаточно сложные
методы оптимизации
операторов. Результатом компиляции является выполняемая программа,
представляемая в некоторых системах в машинных кодах, но более часто
в выполняемом внутреннем машинно-независимом коде. В последнем
случае реальное выполнение оператора производится с привлечением
подсистемы поддержки времени выполнения, представляющей собой, по
сути дела, интерпретатор этого внутреннего языка.
Наконец, в отдельные
утилиты БД обычно выделяют такие процеду-
ры, которые слишком накладно выполнять с использованием языка БД,
например загрузка и выгрузка БД, сбор статистики, глобальная проверка
целостности БД и т. д. Утилиты программируются с использованием ин-
61
терфейса ядра СУБД, а иногда даже с проникновением внутрь ядра.
Рассмотрим подробнее функции СУБД.
Достарыңызбен бөлісу: