 
        
        - •1. Структуры внешней памяти, методы организации индексов.
- •2. Хранение отношений
- •3. Индексы
- •B-деревья
- •4. Хэширование
- •Журнальная информация
- •Служебная информация
- •5. Транзакции и целостность баз данных
- •Изолированность пользователей
- •6. Управление транзакциями, сериализация транзакций
- •Сериализация транзакций
- •7. Методы сериализации транзакций
- •Синхронизационные захваты
- •8. Гранулированные синхронизационные захваты
- •9. Предикатные синхронизационные захваты
- •10. Тупики, распознавание и разрушение
- •11. Метод временных меток
- •12. Журнализация изменений бд
- •13. Журнализация и буферизация
- •14. Индивидуальный откат транзакции
- •15. Восстановление после мягкого сбоя
- •16. Физическая согласованность базы данных
- •17. Восстановление после жесткого сбоя
- •18. Открытые системы
- •19. Клиенты и серверы локальных сетей
- •20. Системная архитектура "клиент-сервер"
- •21. Серверы баз данных
- •Принципы взаимодействия между клиентскими и серверными частями
- •Преимущества протоколов удаленного вызова процедур
- •Типичное разделение функций между клиентами и серверами
- •Требования к аппаратным возможностям и базовому программному обеспечению клиентов и серверов
- •22. Распределенные бд
- •Разновидности распределенных систем
- •23. Управление транзакциями и синхронизация
- •24. Системы управления базами данных следующего поколения
- •Ориентация на расширенную реляционную модель
- •25. Абстрактные типы данных
- •26. Генерация систем баз данных, ориентированных на приложения
- •27. Поддержка исторической информации и темпоральных запросов
- •28. Объектно-ориентированные субд
- •29. Связь объектно-ориентированных субд с общими понятиями объектно-ориентированного подхода
- •30. Системы баз данных, основанные на правилах
- •Экстенсиональная и интенсиональная части базы данных
- •Активные базы данных
- •Дедуктивные базы данных
1. Структуры внешней памяти, методы организации индексов.
Реляционные СУБД обладают рядом особенностей, влияющих на организацию внешней памяти. К наиболее важным особенностям можно отнести следующие:
- Наличие двух уровней системы: уровня непосредственного управления данными во внешней памяти (а также обычно управления буферами оперативной памяти, управления транзакциями и журнализацией изменений БД) и языкового уровня (например, уровня, реализующего язык SQL). При такой организации подсистема нижнего уровня должна поддерживать во внешней памяти набор базовых структур, конкретная интерпретация которых входит в число функций подсистемы верхнего уровня. 
- Поддержание отношений-каталогов. Информация, связанная с именованием объектов базы данных и их конкретными свойствами (например, структура ключа индекса), поддерживается подсистемой языкового уровня. С точки зрения структур внешней памяти отношение-каталог ничем не отличается от обычного отношения базы данных. 
- Регулярность структур данных. Поскольку основным объектом реляционной модели данных является плоская таблица, главный набор объектов внешней памяти может иметь очень простую регулярную структуру. 
- При этом необходимо обеспечить возможность эффективного выполнения операторов языкового уровня как над одним отношением (простые селекция и проекция), так и над несколькими отношениями (наиболее распространено и трудоемко соединение нескольких отношений). Для этого во внешней памяти должны поддерживаться дополнительные "управляющие" структуры - индексы. 
- Наконец, для выполнения требования надежного хранения баз данных необходимо поддерживать избыточность хранения данных, что обычно реализуется в виде журнала изменений базы данных. 
Соответственно возникают следующие разновидности объектов во внешней памяти базы данных:
- строки отношений - основная часть базы данных, большей частью непосредственно видимая пользователям; 
- управляющие структуры - индексы, создаваемые по инициативе пользователя (администратора) или верхнего уровня системы из соображений повышения эффективности выполнения запросов и обычно автоматически поддерживаемые нижним уровнем системы; 
- журнальная информация, поддерживаемая для удовлетворения потребности в надежном хранении данных; 
- служебная информация, поддерживаемая для удовлетворения внутренних потребностей нижнего уровня системы (например, информация о свободной памяти). 
Мы рассматривали на примерах System R и Ingres два альтернативных подхода к организации реляционной СУБД с точки разделения функций между различными компонентами. Напомним, что в СУБД System R существовала интегрированная подсистема управления данными, транзакциями и журнализацией, в то время как в Ingres управление данными, было отделено от управления транзакциями и журнализацией.
У обоих этих подходов имеются свои преимущества и недостатки. Подход System R позволяет использовать более эффективные методы за счет совместного решения проблем физической и логической синхронизации, использовании общих протоколов при управлении буферами и журнализации и т.д. Но при этом в некотором смысле подсистема нижнего уровня становится монолитом; при самой удачной ее структуризации компоненты остаются связанными общими протоколами взаимодействия. Непродуманные локальные изменения одного компонента могут привести к фатальным последствиям для всей системы. Подход Ingres позволяет упростить структуру системы и сделать ее более гибкой, но это возможно только за счет огрубления алгоритмов: применения более грубых методов управления транзакциями; жестких протоколов журнализации и т.д.
В конечном счете любая конкретная система основывается на конкретном комплексном решении. Мы рассматриваем здесь фрагменты таких решений (эскизы).
