Внутреннее устройство


НАЧАЛО >> Нативный провайдер данных DP_Irbis64Native >> Внутреннее устройство📄 Скачать в DOCX


DP_Irbis64Native состоит из внешнего модуля-провайдера и набора внутренних классов, которые работают с файлами ИРБИС64. Внешний слой принимает стандартные вызовы ИРБИС 128, а внутренний слой открывает физические файлы базы и выполняет операции с записями, словарем и индексом.

1. Общая цепочка вызова

  1. Прикладная страница ИРБИС 128 вызывает функции i128f.
  2. i128f выбирает корневой провайдер по OPTIONS['localProvider'].
  3. DP_Irbis64Native создает контекст окружения и открывает нужную базу.
  4. Для базы создается объект IrbisSpaceNative.
  5. IrbisSpaceNative открывает MST, XRF, словарь, обратный индекс и при необходимости полнотекстовые файлы.
  6. Результат возвращается через общий интерфейс провайдера.

Такой порядок позволяет прикладным модулям не знать, работает база через TCP, расширение PHP или нативный файловый доступ.

2. Контекст провайдера

Контекст хранит параметры, которые нужны большинству операций:

Контекст создается один раз для экземпляра провайдера. Открытые базы кэшируются, поэтому повторное обращение к той же базе не требует повторного чтения .par и открытия всех файлов.

3. Открытие базы

При первом обращении к базе провайдер:

  1. определяет имя базы из параметров запроса или из основной настройки ИРБИС 128;
  2. находит файл <имя_базы>.par в каталоге данных;
  3. разбирает пути MST, XRF, словаря, обратного индекса, меню и внешних документов;
  4. создает объект IrbisSpaceNative;
  5. применяет ограничения чтения MFN и размера пакетов postings;
  6. открывает файловые структуры.

Если база открывается в режиме чтения, имя может передаваться с префиксом -. В этом случае операции записи для такого контекста не выполняются.

4. Файловые структуры

Провайдер работает с основными файлами ИРБИС64:

Подробности по форматам MST, XRF, N01, L01 и IFP вынесены в отдельные технические страницы этого раздела.

5. Кодировки

Файловые базы ИРБИС64 часто хранят данные в Windows-1251. DP_Irbis64Native преобразует данные между внутренним представлением и UTF-8 при чтении и записи, если база не работает в полностью UTF-8-режиме. Режим определяется настройками окружения и параметрами базы.

6. Журналирование операций

Для критических операций записи используется журнал. Перед изменением файлов провайдер фиксирует исходные размеры и данные, затем завершает операцию подтверждением. Если процесс был прерван, при следующем открытии базы выполняется восстановление: файлы возвращаются к согласованному состоянию, а журнал удаляется.