Формат файла .xrf (Файл перекрестных ссылок ИРБИС64)


НАЧАЛО >> Нативный провайдер данных DP_Irbis64Native >> Формат файла .xrf (Файл перекрестных ссылок ИРБИС64)📄 Скачать в DOCX


Файл .xrf (Cross-Reference file) — это индексный файл, служащий мостом между номером записи в базе (MFN) и её физическим расположением (байтовым смещением) внутри файла данных .mst.

Обращение к .xrf позволяет базе данных осуществлять мгновенный доступ к любой записи по её MFN без необходимости сканировать весь мастер-файл .mst с самого начала.

1. Физическая структура

Файл представляет собой простой массив фиксированных структур (TNew_Xrf). Номер записи в базе (MFN) выступает прямым индексом в этом массиве.

Размер одной структуры составляет 12 байт.

Физическое смещение до конкретного MFN в файле .xrf вычисляется по формуле:

Смещение = (MFN - 1) * 12

(Примечание: Запись с MFN = 1 располагается в самом начале файла по смещению 0).

1.1. Порядок байт (Endianness)

Все 32-битные бинарные числовые значения в файле записываются на диск в формате Big-Endian (Network byte order, старший байт по меньшему адресу). 64-битные значения (структура TInt64) записываются в виде двух 32-битных Big-Endian чисел: сначала младшие 4 байта (LowWord), затем старшие 4 байта (HiWord).


2. Структура записи XRF (TNew_Xrf)

Поле Тип Размер Описание
nxt TInt64 (struct) 8 байт Абсолютное байтовое смещение в файле .mst. Указывает строго на начало маркера/лидера записи (Tlider) актуальной версии этой записи. Структура состоит из LowWord (4 байта) и HiWord (4 байта).
xrf_flags int 4 байта Битовые флаги статуса записи.

2.1. Флаги статуса (xrf_flags)

Биты статуса хранят критически важную информацию о текущем состоянии MFN. База данных проверяет этот статус перед любыми операциями чтения, изменения или поиска:

3. Принцип работы

Когда к системе поступает запрос на чтение записи (например, MFN 50), ядро вычисляет смещение (50 - 1) * 12 = 588, переходит по 588-му байту в файле .xrf и считывает оттуда 12 байт. Если флаги не указывают на то, что запись физически удалена или отсутствует, ядро берет 64-битное смещение nxt, переходит по нему в файл .mst и считывает Tlider записи.