Структура файла документов и формат записи
Все числовые данные записываются в файл в net представлении. Такой режим позволяет использовать файлы в любой операционной системе независимо!
Содержание
Формат записи файла документов
Запись файла документов является записью переменной длины, состоящей из трех частей: лидера фиксированной длины, справочника и полей переменной длины.
Формат лидера
Лидер состоит из следующих семи целых чисел:
Число бит | Параметр | Описание |
---|---|---|
32 | MFN | номер файла документов |
32 | MFRL | длина записи (в байтах?) (всегда четное число) |
32 | MFB_LOW | ссылка назад (младшее слово в полном смешении) |
32 | MFB_HIGH | ссылка назад (старшее слово в полном смешении) |
32 | BASE | смещение (базовый адрес) полей переменной длины (это общая часть лидера и справочника записи в байтах) |
32 | NVF | число полей в записи (т.е. число входов в справочнике) |
32 | STATUS | индикатор записи
BIT_ALL_ZERO (0) – предыдущий вариант записи BIT_LOG_DEL (1) – логически удаленная запись BIT_NOTACT_REC (8)- неактуализированная запись BIT_LAST_REC (32) – последний экземпляр записи |
32 | VERSION | номер версии записи |
Формат справочника
Справочник - это таблица, определяющая содержание записи. Каждое поле, которое есть в записи, представлено в справочнике одним входом (т.е. в справочнике точно NVF входов). Каждый вход справочника состоит из 3-х целых чисел:
Число бит | Параметр | Описание |
---|---|---|
32 | TAG | метка поля |
32 | POS | смещение позиции первого символа данного поля в разделе полей переменной длины (в физической записи смещения упорядочены по возрастанию, у первого поля POS = 0) |
32 | LEN | длина поля в байтах |
Общая длина справочника в байтах будет 12*NVF байт. Поле BASE в лидере всегда будет равно 26+12*NVF.
Поля переменной длины
Эта часть записи файла документов содержит поля данных переменной длины (в порядке, указанном в справочнике). Поля данных помещаются одно за другим без разделителей.
Управляющая запись
Первая запись в файле документов – управляющая запись, которая формируется в момент определения базы данных или при ее инициализации и поддерживается в актуальном состоянии автоматически. Ее содержание следующее:
Число бит | Параметр | Описание |
---|---|---|
32 | CTLMFN | резерв |
32 | NXTMFN | номер записи файла документов, назначаемый для следующей записи, создаваемой в базе данных |
32 | NXT_LOW | младшее слово смещения на свободное место в файле (всегда указывает на конец файла MST) |
32 | NXT_HIGH | старшее слово смещения на свободное место в файле |
32 | MFTYPE | резерв |
32 | RECCNT | резерв |
32 | MFCXX1 | резерв |
32 | MFCXX2 | резерв |
32 | MFCXX3 | индикатор блокировки базы данных (0 – нет, >0 – да) |
Во время создания и/или актуализации записей файла документов определяется индекс, определяющий позицию каждой записи. Индекс хранится в файле перекрестных ссылок (с расширением XRF).
Файл перекрестных ссылок
Файл перекрестных ссылок (XRF) представляет собой таблицу ссылок на записи файла документов. Первая ссылка соответствует записи файла документов с номером 1, вторая – 2 и тд. Каждая ссылка состоит из 3-х полей:
Число бит | Параметр | Описание |
---|---|---|
32 | XRF_LOW | младшее слово в 8 байтовом смещении на запись |
32 | XRF_HIGH | старшее слово в 8 байтовом смещении на запись |
33? | XRF_FLAGS | Индикатор записи в виде битовых флагов следующего содержания:
BIT_LOG_DEL (1) - логически удаленная запись BIT_PHYS_DEL (2) - физически удаленная запись BIT_ABSENT (4) - несуществующая запись BIT_NOTACT_REC (8)- неактуализированная запись BIT_LOCK_REC (64) - заблокированная запись |
Техника актуализации
Создание новых записей
Новые записи всегда добавляются в конец файла документов с позиции, которая определяется размером файла документов. Присваиваемый номер записи файла документов выбирается из поля NXTMFN управляющей записи. При добавлении записи NXTMFN возрастает на 1. Кроме того, создается новая ссылка на эту новую запись в файле перекрестных ссылок с флагами BIT_NEW_REC + BIT_NOTACT_REC. STATUS новой записи в файле документов имеет значение BIT_LAST_REC. Флаг BIT_NOTACT_REC сигнализирует о том, что новая запись должна быть затем проинвертирована.
Модификация существующих записей
При модификации запись записывается всегда в конец файла документов с позиции, которая определяется размером файла документов. STATUS последней версии записи в файле документов имеет значение BIT_LAST_REC + BIT_NOTACT_REC, STATUS старой версии записи в файле документов обновляется и становится равен BIT_ALL_ZERO + BIT_NOTACT_REC. Кроме того, создается новая ссылка на эту новую версию записи в файле перекрестных ссылок с флагом – BIT_NOTACT_REC. Ссылка назад в новой версии записи – поля MFB_LOW, MFB_HIGH - указывает на предыдущую версию записи (не зависимо от того, была ли старая версия записи проинвертирована). Флаг BIT_NOTACT_REC сигнализирует о том, что новая запись должна быть затем проинвертирована. После проведения инвертирования записи (в отличии от ISIS) ссылка назад НЕ становится равной 0, чтобы сохранить возможность ОТКАТА. Флаг BIT_NOTACT_REC удаляется из файла перекрестных ссылок и файла документов.
Удаление записей
Удаление записи рассматривается как модификация со следующими дополнительными параметрами:
- В файле XRF в XRF_FLAGS добавляется флаг BIT_LOG_DEL и BIT_NOTACT_REC (после удаления записи требуется ее инвертирование)
- В файле MST в STATUS добавляется флаг BIT_LOG_DEL
Реорганизация файла документов
Как отмечалось выше, при модификации записей файла документов объем этого файла возрастает и возможны потери дисковой памяти, которую нельзя использовать. Средство реорганизации позволяет сжать файл документов. Во время фазы копирования файла документов создается файл копии (с расширением BKP), который в дальнейшем может быть использован для восстановления файла документов. Структура и формат этого файла копии те же, что и для файла документов (MST), за исключением того, что файл перекрестных ссылок не требуется, так как все записи размещаются без пропусков последовательно. Записи, помеченные как удаленные, в файл копии не записываются. Так как только последняя версия записи записывается в файл копии, выполнить операцию копирования невозможно, если в базе есть хотя бы одна неинвертированная запись (поскольку состояние инверсного файла должно соответствовать содержанию инверсного файла). Во время фазы восстановления файла документов последовательно читается файл копии и создается файл документов (MST) и файл перекрестных ссылок (XRF). В этот момент все записи, помеченные как логически удаленные, становятся физически удаленными (XRF_FLAG = BIT_PHYS_DEL). Удаленные записи определяются отсутствием в базе данных номеров записей файла документов (MFN).
Ссылки
См. также:
- Базы данных ИРБИС
- The UNESCO micro CDS/ISIS Software. Приложение 6. Структура файла документов и формат записи
Источники информации:
- [lib.omgtu.ru/irb/doc/irbis128.doc ИРБИС 64/128. Общее описание системы]