Cтраница 2
Блоки, применяемые для хранения данных, группируются в две области - первичную и область переполнения. Каждая запись базы данных начинается в одном блоке первичной области ( первичном блоке) и, если требуется, занимает любое число дополнительных блоков из области переполнения. Первоначально база данных создается из первичных Данных, представленных в прямом ( сверху вниз) порядке. Для этой цели в IMS предусмотрена специальная обслуживающая программа. При появлении записи базы данных ей выделяются следующий доступный в первичной области блок и необходимое число блоков переполнения. Таким образом, первичные блоки заполняются в порядке значений полей упорядочения корневых сегментов, и создание индекса, содержащего указатель на каждый k - н первичный блок вместе со значением поля упорядочения корневого сегмента для этого блока, не составляет трудностей. [16]
Если в данном блоке больше нет свободного пространства, HDAM выбирает другой первичный блок, расположенный физически как можно ближе к текущему. Эта стратегия минимизирует общее время, необходимое для поиска заданного корневого сегмента. Например, если невозможно разместить все корневые сегменты с данным хеш-значением в одном блоке, то желательно, чтобы они находились на одном цилиндре диска. Все корневые сегменты с одним и тем же хеш-значением связываются в цепочку в порядке возрастания значений их полей упорядочения. Поэтому если эти сегменты размещены физически близко, то вся цепочка может быть просмотрена достаточно быстро. Однако корневые сегменты вообще не соединяются в порядке возрастания значений их полей упорядочения. И на самом деле команда GET NEXT, примененная к корневым сегментам базы данных HDAM, необязательно будет возвращать сегменты в надлежащем порядке. [17]