Внутренняя организация реляционных СУБД
Реляционные СУБД обладают рядом
особенностей, влияющих на
организацию внешней памяти. К
наиболее важным особенностям можно
отнести следующие:
- Наличие двух уровней системы:
уровня непосредственного
управления данными во внешней
памяти (а также обычно
управления буферами
оперативной памяти, управления
транзакциями и журнализацией
изменений БД) и языкового
уровня (например, уровня,
реализующего язык SQL). При такой
организации подсистема
нижнего уровня должна
поддерживать во внешней памяти
набор базовых структур,
конкретная интерпретация
которых входит в число функций
подсистемы верхнего уровня.
- Поддержание
отношений-каталогов.
Информация, связанная с
именованием объектов базы
данных и их конкретными
свойствами (например,
структура ключа индекса),
поддерживается подсистемой
языкового уровня. С точки
зрения структур внешней памяти
отношение-каталог ничем не
отличается от обычного
отношения базы данных.
- Регулярность структур данных.
Поскольку основным объектом
реляционной модели данных
является плоская таблица,
главный набор объектов внешней
памяти может иметь очень
простую регулярную структуру.
- При этом необходимо обеспечить
возможность эффективного
выполнения операторов
языкового уровня как над одним
отношением (простые селекция и
проекция), так и над
несколькими отношениями
(наиболее распространено и
трудоемко соединение
нескольких отношений). Для
этого во внешней памяти должны
поддерживаться дополнительные
"управляющие" структуры -
индексы.
- Наконец, для выполнения
требования надежного хранения
баз данных необходимо
поддерживать избыточность
хранения данных, что обычно
реализуется в виде журнала
изменений базы данных.
Соответственно возникают
следующие разновидности объектов
во внешней памяти базы данных:
- строки отношений - основная
часть базы данных, большей
частью непосредственно
видимая пользователям;
- управляющие структуры -
индексы, создаваемые по
инициативе пользователя
(администратора) или верхнего
уровня системы из соображений
повышения эффективности
выполнения запросов и обычно
автоматически поддерживаемые
нижним уровнем системы;
- журнальная информация,
поддерживаемая для
удовлетворения потребности в
надежном хранении данных;
- служебная информация,
поддерживаемая для
удовлетворения внутренних
потребностей нижнего уровня
системы (например, информация о
свободной памяти).
Мы рассматривали на примерах System R
и Ingres два альтернативных подхода к
организации реляционной СУБД с
точки разделения функций между
различными компонентами. Напомним,
что в СУБД System R существовала
интегрированная подсистема
управления данными, транзакциями и
журнализацией, в то время как в Ingres
управление данными, было отделено
от управления транзакциями и
журнализацией.
У обоих этих подходов имеются
свои преимущества и недостатки.
Подход System R позволяет использовать
более эффективные методы за счет
совместного решения проблем
физической и логической
синхронизации, использовании общих
протоколов при управлении буферами
и журнализации и т.д. Но при этом в
некотором смысле подсистема
нижнего уровня становится
монолитом; при самой удачной ее
структуризации компоненты
остаются связанными общими
протоколами взаимодействия.
Непродуманные локальные изменения
одного компонента могут привести к
фатальным последствиям для всей
системы. Подход Ingres позволяет
упростить структуру системы и
сделать ее более гибкой, но это
возможно только за счет огрубления
алгоритмов: применения более
грубых методов управления
транзакциями; жестких протоколов
журнализации и т.д.
В конечном счете любая конкретная
система основывается на конкретном
комплексном решении. Мы
рассматриваем здесь фрагменты
таких решений (эскизы).
Предыдущая
глава || Оглавление
|| Следующая глава
|