Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы данных Шехтман.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
3 Мб
Скачать
☆

11. Физическая организация баз данных

Физическая организация баз данных определяет способы размещения данных в среде хранения и способы физического доступа к этим данным. Исторически первыми системами хранения и доступа были файлы (см. Главу 1), являвшиеся частью операционной системы. СУБД создавала над этими файлами надстройку, которая позволяла организовать их так, чтобы они работала как единое целое – база данных. Доступ осуществлялся на уровне файловых команд. По мере роста объема данных и требований, предъявляемых к СУБД, механизмы буферизации и управления файлами стали неэффективны. Тогда произошел переход от файлов к непосредственному управлению размещением данных на носителях, осуществляемый самой СУБД. При этом пространство внешней памяти предо­ставляется СУБД полностью для управления, а операционная система не получа­ет доступа к этому пространству.

Физическая организация современных баз данных не определена никакими стандартами и является закрытой, представляя из себя коммерческую тайну большинства поставщиков СУБД. Каждый поставщик создает свою уникальную структуру и пытается прндать ей лучшие качества но сравнению со своими конкурентами. Физиче­ская организация является и наиболее изменчивой частью СУБД. Расширяются возможности устройств внешней памяти, дешевеет оперативная память, увеличивается ее объем. Это приводит к изменениям организации данных на физическом уровне. Поэтому опишем лишь наиболее общие черты физической организации.

11.1. Организация размещения данных.

Память ов моделирует логическую единицу — таблицу-отношение (tblspace). Экстенты состоят из четырех типов страниц: страницы данных, страницы ин­дексов, битовые страницы и страницы blob-объектов.

Основной единицей осуществления операций обмена (ввода-вывода) является страница данных. Все данные хранятся постранично. При табличном хранении данные на одной странице являются однородными, то есть станица может хра­нить, к примеру, только данные или только индексы.

Все страницы данных имеют одинаковую структуру:

Заголовок страницы (24 байта)

Содержание

Слоты

Слот — это 4-байтовое слово, 2 байта соответствуют смещению строки на страни­це и 2 байта — длина строки. Слоты характеризуют размещение строк данных на странице. На одной странице хранится не более 255 строк. В базе данных ка­ждая строка имеет уникальный идентификатор в рамках всей базы данных, час­то называемый RowID — номер строки, он имеет размер 4 байта и состоит из номера страницы и номера строки на странице. Под номер страницы отводится 3 байта, поэтому при такой идентификации возможна адресация к 16 777 215 страницам.

При упорядочении строк на страницах не происходит физического перемеще­ния строк, все манипуляции происходят со слотами. При переполнении страниц создается специальный вид страниц, называемых страницами остатка. Строки, не уместившиеся на основной странице, связыва­ются со своим продолжением на страницах остатка с помощью ссылок-указателей, которые содержат номер страницы и номер слота на странице.

Существуют отдельные страницы индексов и blob страницы. Cтраницы данных ссылаются на соответсвующие blob страницы.

Во время работы СУБД организует специальные структуры в оператив­ной памяти, называемые разделяемой памятью, и специальные структуры во внешней памяти, называемые журналами транзакций. Разделяемая память слу­жит для кэширования данных при работе с внешней памятью с целью сокраще­ния времени доступа, кроме того, разделяемая память служит для эффективной поддержки режимов одновременной параллельной работы пользователей с ба­зой данных. Необходимость в ней обусловлена существенной разницей в скорости работы процессора, оперативной памяти и устройств внешней памяти.

Журнал транзакций служит для управления корректным выполнением транз­акций (см. Главу 9).

Рассмотрим физическую организацию базы данных на примере СУБД MS SQL 7.

Имеется следующая иерархия хранения данных:

  1. База данных – физическое пространство, необходимое для размещения данных, принадлежащих одной логической базе данных.

  2. Файл. Каждая база данных содержит как минимум два файла. Один для данных, другой для журнала транзакций.

  3. Страница. Файлы состоят из страниц размером по 8 Кбайт. Логический номер страницы состоит из внутреннего номера базы данных, номера файла и номера страницы в файле.

  4. Блок. Пространство отводится блоками по 8 страниц. Поэтому при создании базы данных можно указать ее размер с точностью до 64Кб. В блоке могут хранится страницы разных объектов базы данных.

Типы страниц:

  1. Страница данных

  2. Страница индексов

  3. Страница журнала транзакций

  4. Blob-страницы

  5. Карты размещения блоков

  6. Карты свободного пространства

  7. Карты размещения индексов

Blob (Bi­nary Large Object) - применяется для хранения неструктурированных данных большого объема. В ранних СУБД такие данные относились к типу Memo. В современных СУБД к этому типу относятся неструктурированные большие текстовые данные, картинки, просто наборы машинных кодов. Для СУБД важно знать, что этот объект надо хранить целиком, что размеры этих объектов от записи к записи могут резко от­личаться и этот размер в общем случае неограничен.

Каждая страница имеет заголовок 96 байт. Там помещается следующая информация:

Номер страницы

Идентификатор объекта, которому принадлежит страница

или

номер индекса, которому принадлежит страница

уровень внутри индексного дерева, которому принадлежит страница

количество строк на странице и количество заполненных слотов

объем свободного пространства на странице

указатель свободного пространства после последней строки на странице

минимальная длина строки на странице

объем зарезервированного пространства на странице

Разделяемая память состоит из буферов следующих типов:

Буферы страниц данных

Буферы страниц журнала транзакций

Системные буферы с информацией о базе данных, пользователях, физическом расположении файлов данных и т. д.