Cтраница 3
Для каждого формируемого цилиндра данных метод доступа системы генерирует на первой дорожке цилиндра индекс дорожек. В нем имеется элемент для каждой дорожки этого цилиндра. В нашем примере такой элемент наряду с адресом дорожки содержит ключ с наибольшим по значению номером детали на этой дорожке. Если набор данных сформирован на устройстве IBM 2314, содержащем 20 дорожек на цилиндр, то 19 дорожек будет выделено для записей номеров деталей и одна дорожка - для индекса дорожек. [31]
В общем случае может быть создано три индекса - главный индекс, индекс цилиндра и индекс дорожки. Главный индекс выгодно использовать для очень больших файлов ( когда индекс цилиндров размещается на четырех и более дорожках), а два других индекса должны присутствовать всегда. [32]
После того как будут составлены элементы индекса для всех дорожек первого цилиндра, по аналогии с индексом дорожек составляется индекс цилиндров. Значением элемента индексов цилиндров являются адрес цилиндра и значение ключа последней записи этого цилиндра. [33]
В файле с индексно-последовательной организацией расположение записей описывается с помощью индексов трех видов: главного, индекса цилиндра и индекса дорожки. Главный индекс используется только в очень больших файлах, требующих нескольких дисков. [34]
Как уже говорилось выше, индексно-последовательный файл данных занимает как минимум два участка памяти диска - область для всех индексов, кроме индекса дорожек, и основную область. [35]
Оканчивается индекс дорожки записью, в поле ключа которой во все разряды заносятся двоичные единицы и которая, таким образом, служит для опознания конца индекса дорожки. Поле данных этой записи игнорируется. [36]
Поиск записей в индексно-последовательном файле основан на этом же принципе: по индексу цилиндра находят цилиндр, на котором следует искать запись, далее по индексу дорожки - дорожку, а потом ее ключ сравнивается с ключом первой из записей индекса дорожки, относящихся к этой дорожке. Это сравнение показывает, где искать запись: непосредственно на дорожке или на дорожке переполнения. В первом случае делается просмотр ключей всех записей на дорожке, а во втором - поиск идет по адресу, указываемому полем данных второй дорожки нужной пары. Если по этому адресу искомой записи нет, то там имеется адрес записи, вытесненной ранее, по которому мы за некоторое число шагов дойдем либо до искомой записи, либо до записи с нулевым адресом. Это означает, что искомой записи в файле нет. [37]
Новые записи помещаются в набор данных, начиная со свободного пространства на последней занятой дорожке, в резуль тате может произойти коррекция элемента для этой дорожки в индексе дорожек. По мере заполнения последующих дорожек и цилиндров основной области активизируются элементы для Этих дорожек и цилиндров в индексах дорожек и цилиндров. Записи добавляются в основную область до полного ее заполнения. [38]
Индекс дорожек содержит по две записи на каждую дорожку цилиндра области первичных данных, причем одна запись описывает основную дорожку, друга я - дорожку переполнения, Заканчивается индекс дорожек фиксированной записью, которая содержит все единицы в поле ключа. [39]
Поиск записей в индексно-последовательном файле основан на этом же принципе: по индексу цилиндра находят цилиндр, на котором следует искать запись, далее по индексу дорожки - дорожку, а потом ее ключ сравнивается с ключом первой из записей индекса дорожки, относящихся к этой дорожке. Это сравнение показывает, где искать запись: непосредственно на дорожке или на дорожке переполнения. В первом случае делается просмотр ключей всех записей на дорожке, а во втором - поиск идет по адресу, указываемому полем данных второй дорожки нужной пары. Если по этому адресу искомой записи нет, то там имеется адрес записи, вытесненной ранее, по которому мы за некоторое число шагов дойдем либо до искомой записи, либо до записи с нулевым адресом. Это означает, что искомой записи в файле нет. [40]
Каждый индексно-последовательный файл характеризуется, помимо ключа, в общем случае тремя индексами: дорожки, цилиндра и главным индексом. Индекс дорожки строится для каждого цилиндра, занимаемого файлом, а индекс цилиндра строится для всего файла. Главный индекс может использоваться лишь для очень больших файлов. Отличительной особенностью этих файлов является то, что область записи располагается на десяти дорожках цилиндра, начиная с нулевой и кончая девятой, и в общем случае разделяется на три части: индекс дорожки, область данных и область переполнения. [41]
![]() |
Структура библиотечного набора данных. [42] |
Основная область ( PRIME) используется для размещения логических записей данных и индексов дорожек. Индекс дорожек создается для каждого цилиндра основной области и располагается на первых дорожках цилиндра. Индекс дорожек состоит из последовательности парных элементов, первый из которых адресует дорожку основной области, а второй - дорожку независимой области переполнения или области переполнения цилиндра. [43]
Каждый индексно-последовательный файл характеризуется, помимо ключа, в общем случае тремя индексами: дорожки, цилиндра и главным индексом. Индекс дорожки строится для каждого цилиндра, занимаемого файлом, а индекс цилиндра строится для всего файла. Главный индекс может использоваться лишь для очень больших файлов. Отличительной особенностью этих файлов является то, что область записи располагается па десяти дорожках цилиндра, начиная с нулевой и кончая девятой, и в общем случае разделяется на три части: индекс дорожки, область данных и область переполнения. [44]
Более высокими по отношению к индексам дорожек в методе доступа ISAM являются индексы, цилиндров. Индекс дорожек содержит значение максимального ключа на каждой дорожке и указывает на эти дорожки. В свою очередь индекс цилиндров содержит значение максимального ключа на каждом цилиндре и указывает на индекс дорожек данного цилиндра. Индекс цилиндров располагается на цилиндре, отделенном от большинства записей файла. Он может располагаться на модуле, содержащем записи файла, но лучше, если он будет находиться на каком-нибудь другом модуле, так как это позволит ускорить доступ к записям. [45]