7.6Структура файлов БД ИРБИС64
Все числовые данные записываются в файл в net представлении. Такой режим позволяет использовать файлы в любой операционной системе независимо!
7.6.1.1Формат записи файла документов (MST)
Запись файла документов является записью переменной длины, состоящей из трех частей: лидера фиксированной длины, справочника и полей переменной длины.
7.6.1.1.1Формат лидера
Лидер состоит из следующих семи целых чисел:
Число бит Параметр
32 MFN – номер файла документов;
32 MFRL – длина записи; (всегда четное число)
32 MFB_LOW – ссылка назад;
32 MFB_HIGH –ссылка назад
Смещение на предыдущий вариант записи имеет длину 8 байт = 4+4; MFB_LOW – младшее слово и MFB_HIGH – старшее слово в полном смешении.
32 BASE – смещение (базовый адрес) полей переменной длины (это общая часть лидера и справочника записи в байтах);
32 NVF – ччисло полей в записи (те число входов в справочнике);
-
STATUS – ииндикатор записи (BIT_LOG_DEL (1) – логически удаленная запись, BIT_LAST_REC (32) – последний экземпляр записи, BIT_ALL_ZERO (0) – предыдущий вариант записи,
BIT_NOTACT_REC (8)- неактуализированная запись);
32 VERSION – номер версии записи
Справочник - это таблица, определяющая содержание записи. Каждое поле, которое есть в записи, представлено в справочнике одним входом (те в справочнике точно NVF входов). Каждый вход справочника состоит из 3-х целых чисел:
Число бит Параметр
32 TAG – метка поля;
32 POS – смещение позиции первого символа данного поля в разделе полей переменной длины (в физической записи смещения упорядочены по возрастанию, у первого поля POS = 0);
32 LEN – длина поля в байтах.
Общая длина справочника в байтах будет 12*NVF байт; поле BASE в лидере всегда будет равно 26+12*NVF.
7.6.1.1.3Поля переменной длины
Эта часть записи файла документов содержит поля данных переменной длины (в порядке, указанном в справочнике). Поля данных помещаются одно за другим без разделителей.
7.6.1.1.4Управляющая запись
Первая запись в файле документов – управляющая запись, которая формируется (в момент определения базы данных или при ее инициализации) и поддерживается автоматически. Ее содержание следующее:
Число бит Параметр
32 CTLMFN – резерв;
32 NXTMFN –номер записи файла документов, назначаемый для следующей записи, создаваемой в базе данных;
32 NXT_LOW – младшее слово смещения на свободное место в файле; (всегда указывает на конец файла MST)
32 NXT_HIGH – старшее слово смещения на свободное место в файле 32 MFTYPE – резерв;
32 RECCNT – резерв;
32 MFCXX1 – резерв;
32 MFCXX2 – резерв;
32 MFCXX3 – индикатор блокировки базы данных (0 – нет, >0 – да).
Во время создания и/или актуализации записей файла документов определяется индекс, определяющий позицию каждой записи. Индекс хранится в файле перекрестных ссылок (с расширением XRF).
7.6.2Файл перекрестных ссылок (XRF)
Файл перекрестных ссылок XRF представляет собой таблицу ссылок на записи файла документов. Первая ссылка соответствует записи файла документов с номером 1, вторая – 2 и тд.
Каждая ссылка состоит из 3-х полей:
Число бит Параметр
32 XRF_LOW – младшее слово в 8 байтовом смещении на запись;
32 XRF_HIGH– старшее слово в 8 байтовом смещении на запись
32 XRF_FLAGS – Индикатор записи в виде битовых флагов следующего содержания:
BIT_LOG_DEL (1) - логически удаленная запись;
BIT_PHYS_DEL (2) - физически удаленная запись;
BIT_ABSENT (4) - несуществующая запись;
BIT_NOTACT_REC (8)- неактуализированная запись;
BIT_LOCK_REC (64)- заблокированная запись.
7.6.3Техника актуализации
Новые записи всегда добавляются в конец файла документов с позиции, которая определяется размером файла документов. Присваиваемый номер записи файла документов выбирается из поля NXTMFN управляющей записи.
При добавлении записи NXTMFN возрастает на 1. Кроме того, создается новая ссылка на эту новую запись в файле перекрестных ссылок с флагами –
BIT_NEW_REC + BIT_NOTACT_REC. STATUS новой записи в файле документов имеет значение BIT_LAST_REC.
Флаг BIT_NOTACT_REC указывает факт, что новая запись должна быть затем проинвертирована.
7.6.3.2Модификация существующих записей
При модификации запись записывается всегда в конец файла документов с позиции, которая определяется размером файла документов.
STATUS последней версии записи в файле документов имеет значение BIT_LAST_REC+ BIT_NOTACT_REC, STATUS старой версии записи в файле документов обновляется и становится равен BIT_ALL_ZERO (0)+ BIT_NOTACT_REC. Кроме того, создается новая ссылка на эту новую версию записи в файле перекрестных ссылок с флагом – BIT_NOTACT_REC. Ссылка назад в новой версии записи – поля MFB_LOW, MFB_HIGH - указывает на предыдущую версию записи (не зависимо от того, была ли старая версия записи проинвертирована).
Флаг BIT_NOTACT_REC указывает факт, что новая запись должна быть затем проинвертирована.
После проведения инвертирования записи в отличии от ISIS ссылка назад НЕ становится равной 0, чтобы сохранить возможность ОТКАТА.
Флаг BIT_NOTACT_REC удаляется из файла перекрестных ссылок и файла документов.
7.6.3.3Удаление записей
Удаление записи рассматривается как модификация со следующими дополнительными параметрами:
В файле XRF в XRF_FLAGS добавляется флаг BIT_LOG_DEL и BIT_NOTACT_REC (после удаления записи требуется ее инвертирование).
В файле MST в STATUS добавляется флаг BIT_LOG_DEL.
7.6.4Реорганизация файла документов
Как отмечалось выше, при модификации записей файла документов объем этого файла возрастает и возможны потери дисковой памяти, которую нельзя использовать. Средство реорганизации позволяет сжать файл документов.
Во время фазы копирования файла документов создается файл копии (с расширением BKP), который в дальнейшем может быть использован для восстановления файла документов. Структура и формат этого файла копии те же, что и для файла документов (MST), за исключением того, файл перекрестных ссылок не требуется, так как все записи размещаются без пропусков последовательно. Записи, помеченные как удаленные, в файл копии не записываются. Так как только последняя версия записи записывается в файл копии, выполнить операцию копирования невозможно, если в базе есть хотя бы одна неинвертированная запись (поскольку состояние инверсного файла должно соответствовать содержанию инверсного файла).
Во время фазы восстановления файла документов последовательно читается файл копии и создается файл документов (MST) и файл перекрестных ссылок (XRF). В этот момент все записи, помеченные как логически удаленные, становятся физически удаленными (XRF_FLAG = BIT_PHYS_DEL). Удаленные записи определяются отсутствием в базе данных номеров записей файла документов (MFN).
7.6.5Структура инверсного файла и форматы записей 7.6.5.1Введение
Инверсный файл состоит из 3 физических файлов, два из которых содержат словарь поисковых терминов (в структуре бинарного дерева) и третий содержит список ссылок, соответствующих каждому термину.
В бинарном дереве файл с расширением N01 содержит узлы дерева и файл с расширением L01 – листья. Записи с листьями указывают на файл ссылок IFP.
Взаимосвязь между различными файлами схематически представлена на рис.
N01 файл узлов
Номер первого блока
Корневой блок
Ключ 1……Ключ n
Ключ 1……Ключ n
1-й уровень дерева
Ключ 1……Ключ n
Ключ 1……Ключ n
N-й уровень дерева
Ключ 1……Ключ n
Ключ 1……Ключ n
Ключ 1……Ключ n
IFP файл ссылок
L01 файл листьев
Число ссылок > MAX
Ссылка 1Ссылка n
Ссылка 1Ссылка n
Специальный блок
Ссылка 1Ссылка n
Ссылка 1Ссылка n
Физически взаимосвязи между файлами -N01 L01- обеспечиваются ссылками, которые представляют собой относительные адреса соответствующих записей. Относительный адрес это порядковый номер записи в данном файле. Структура записи одинакова для N01 и L01 файлов. Размер (длина) записи зависит от реализации (512;1024;2048;4096). (Таким образом, максимальный размер файла L01 N01 определяется как 2Гб*Размер записи) В данной реализации 2048
Адрес корневой записи файла N01 сохраняется как номер первой записи.
Смещение на запись в файле IFP сохраняется в файле L01 и имеет длину 64 байта (в данной реализации используется только младшее слово этого смещения).
7.6.5.2Формат файлов N01 L01
Эти файлы содержат в себе индексы словаря поисковых терминов и состоят из записей (блоков) постоянной длины. Записи состоят из трех частей: лидера, справочника и ключей переменной длины.
7.6.5.2.1Формат лидера записи
Число бит Параметр
-
NUMBER – номер записи(начиная с 1; в N01 файле номер первой записи равен номеру корневой записи дерева);
-
PREV – номер предыдущей записи(если нет = -1);
-
NEXT – номер следующей записи(если нет = -1);
16 TERMS – число ключей в записи;
16 OFFSET_FREE – смещение на свободную позицию в записи (от начала записи);
7.6.5.2.2Формат справочника
Справочник это таблица, определяющая поисковый термин. Каждый ключ переменной длины, который есть в записи, представлен в справочнике одним входом следующего формата:
Число бит Параметр
16 LEN – длина ключа;
-
OFFSET_KEY – смещение на ключ(от начала записи);
-
LOW –
В N01 файле:
ссылка на запись файла N01 (если LOW > 0) или файла L01
(если LOW < 0), у которых 1-й ключ равен данному.
Положительное значение LOW определяет ветку индекса иерархически более низкого уровня. Самый низкий уровень индекса (LOW < 0) соответствует ссылкам на записи (листья) файла L01;
В L01 файле:
младшее слово 8 байтового смещения на ссылочную запись в IFP;
-
HIGH –
В N01 файле:
всегда 0;
В L01 файле:
старшее слово 8 байтового смещения на ссылочную запись в IFP
Ключи переменной длины записываются начиная с конца записи, так что порядок входов, соответствующих им, определяется алфавитным порядком ключей. Сами ключи располагаются вплотную друг к другу без разделителей в порядке поступления на запись.
Cхематически запись может быть представлена в виде рис:
Вход1…Входn Ключi……….Ключ1
Длина справочника 12*TERMS.
Длина ключей = Размер записи – OFSET_FREE.
Размер свободного места в записи = 16+12*TERMS - длина ключей.
Размер записи зависит от реализации и может быть равен в байтах:
512 ; 1024 ; 2048 ; 4096.
7.6.5.3Формат файла IFP
Файл содержит список ссылок для каждого термина словаря. Список ссылок может быть представлен в 2-х различных форматах. Выбор формата размещения ссылок осуществляется при загрузке словаря из файла Lk1 (этот файл формируется после отбора и сортировки терминов) в зависимости от общего числа ссылок для данного термина. Обыкновенный формат – это заголовок блока и набор упорядоченных ссылок. По превышении определенного числа ссылок (MIN_POSTINGS_IN_BLOCK - в данной реализации 256) формат включает специальный блок и набор блоков обыкновенного формата размер которых определяется по следующей схеме:
блоки 4,8,16,32 Kb для общего числа ссылок соответственно 256-32000 ; 32000-64000 ; 64000-128000 ; 128000 и более.
Такая схема оптимизирует работу с диском в процессе инвертирования записи в базах данных, характеризующихся большим количеством ссылок на термин.
7.6.5.3.1Обыкновенный формат записи IFP
Запись состоит из заголовка и упорядоченного набора ссылок.
Ссылка имеет следующий формат:
Число бит Параметр
-
PMFN – номер записи;
-
PTAG – идентификатор поля назначенный при отборе терминов в словарь;
-
POCC – номер повторения;
32 PCNT – номер термина в поле.
Заголовок имеет следующий формат:
Число бит Параметр
-
LOW – младшее слово смещения на следующую запись(если нет 0);
32 HIGH – старшее слово смещения на следующую запись(если нет 0);
-
TOTP – общее число ссылок для данного термина(только в первой записи) ;число ссылок в данном блоке(в следующих записях);
-
SEGP - число ссылок в данном блоке;
-
SEGC – вместимость записи в ссылках.
Признак последнего блока – LOW=HIGH= -1
7.6.5.3.2Специальный формат записи IFP
В этом случае первой записью является специальный блок, который представляет собой заголовок (обыкновенного формата), в котором смещения имеют специальные значения = -1001, и набор входов следующего формата:
Число бит Параметр
-
POSTING – 1-я ссылка из записи обыкновенного формата;
-
LOW – младшее слово смещения на следующую запись(если нет 0);
32 HIGH– младшее слово смещения на следующую запись(если нет 0);
Число входов кратно 4. Записи, на которые ссылается специальный блок связаны между собой как описано выше. Причем общее количество ссылок для данного термина сохраняется только в специальном блоке.
7.6.5.3.3Модификация записей файла IFP
При выполнении актуализации инверсного файла могут создаваться новые дополнительные записи при добавлении новых ссылок. В этом случае создается новая запись размером равным общему количеству ссылок, если нет специального блока, и размером, равным количеству ссылок в данной записи, если есть. Новая запись создается таким образом, чтобы не нарушалась возрастающая последовательность следования ссылок. Новая запись связывается с существующими через поле NXT_, ссылки распределяются равномерно между старой и новой записью.
Достарыңызбен бөлісу: |