Представление экземпляра логической записи в оперативной памяти

Логическая запись, как совокупность полей определенного типа и длины, представляется в оперативной памяти как последовательность байтов:

Логическая запись   Последовательность байтов ОП
Поле 1 Поле 2 ... Поле N B1 B2 ... BN
    Bi – последовательность байтов ОП, используемая для хранения поля i
 
 
                 

Прямая адресация байтов позволяет процессору выбирать для обработки нужное поле из ОП.

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

Однако, в предметной области достаточно часто встречаются поля, принимающие значения существенно разной длины в различных экземплярах записей. Примером может служить поле «резюме» в записи СОТРУДНИК. Резюме может составлять полстраницы текста, страницу и т.д. Возникает проблема – как эту информацию переменной длины представить в записи фиксированной длины. Возможным вариантом является установление размера соответствующего поля по максимальному значению. В этом случае у многих экземпляров записи указанное поле будет заполнено не полностью и, таким образом, память ЭВМ будет использоваться неэффективно.

Более эффективный прием организации таких записей состоит в том, чтобы вместо поля, принимающего значение существенно разной длины, в запись включать поле-указатель на область памяти, где будет размещаться значение исходного поля. На рис.12 представлен пример представления экземпляров записей из N полей, причем поле N принимает значения соответственно разной длины у разных экземпляров записей.

Рис. 12. Представление полей переменной длины

Конкретной реализацией такой схемы является поле типа МЕМО в СУБД (dBase III+, FoxPro, Access и т.д.).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: