Структура файла документов и формат записи

Материал из Wikipedia
Перейти к: навигация, поиск

Все числовые данные записываются в файл в 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).

Ссылки

См. также:

Источники информации:

  • [lib.omgtu.ru/irb/doc/irbis128.doc ИРБИС 64/128. Общее описание системы]