Управление доступностью БД


НАЧАЛО >> Руководство пользователя >> Управление доступностью БД📄 Скачать в DOCX


Операции управления доступностью БД доступны из карточки базы данных через кнопку Управление БД... в меню Доступ и Опасные операции. Они меняют служебное состояние всей БД и должны запускаться только администратором, который понимает влияние операции на пользователей и фоновые процессы.

1. Создание БД

Создание новой БД выполняется при создании карточки БД в модуле Database и через административное действие Admin/CreateDb. Для провайдера DP_Irbis64Native операция соответствует команде irbistool newdb: создает каталог новой БД, копирует пустые файлы MST/XRF/N01/L01/IFP из BLANK, копирует параметрические файлы из шаблонной БД, создает embedded FT-БД для баз формата 2018+ и добавляет БД в основные MNU/TRE-списки.

Поддерживаются имя БД, полное название, шаблонная БД, свободная БД, признак читательской доступности и добавление в web-доступ. Перед созданием проверяется, что БД с таким именем еще не существует и что имя не входит в список зарезервированных системных БД.

Если создание БД дошло до записи файлов, но завершилось ошибкой на последующих шагах, например при добавлении в web-доступ, DP_Irbis64Native выполняет откат созданной БД: удаляет новый каталог БД, файл .par и уже добавленные строки из MNU/TRE-списков. Ошибка возвращается вызывающему коду вместе с признаком rolledBack.

2. Блокировка БД

Кнопка Заблокировать БД запрашивает подтверждение и запускает задачу Database/LockDb. Для провайдера DP_Irbis64Native операция соответствует команде irbistool lockdb: устанавливает признак блокировки БД в управляющей записи MST.

В native-реализации изменяется поле mfcxx3 управляющей записи. Если у БД есть встроенная полнотекстовая БД, тот же признак устанавливается и для нее. Операция не изменяет пользовательские записи, XRF записей и инвертированный файл.

3. Разблокировка БД

Кнопка Разблокировать БД запрашивает подтверждение и запускает задачу Database/UnlockDb. Для провайдера DP_Irbis64Native операция соответствует команде irbistool unlockdb: снимает признак блокировки БД в управляющей записи MST.

Если у БД есть встроенная полнотекстовая БД, признак блокировки снимается и с нее. После выполнения можно проверить состояние в окне Управление БД командой Состояние -> Обновить: поле DB LOCK должно отражать новое состояние.

4. Очистка БД

Кнопка Очистить БД запрашивает подтверждение и запускает задачу Database/Empty. Для провайдера DP_Irbis64Native операция соответствует команде irbistool emptydb: очищает основную БД и, если она есть, встроенную полнотекстовую БД.

Операция сбрасывает MST/XRF и инвертированные файлы в пустое состояние: следующий MFN становится равен 1, XRF очищается, дерево словаря получает пустую управляющую запись, файлы L01 и IFP обнуляются, дополнительные сегменты файлов удаляются. Каталог БД, .par, параметрические файлы, форматы, словари меню и файлы документов не удаляются.

Очистка является разрушающей операцией. Перед запуском на рабочей БД нужно иметь актуальную резервную копию или выполнять операцию на заранее подготовленной копии БД. После выполнения состояние можно проверить в окне Управление БД командой Состояние -> Обновить: поля DB MAXMFN и FT DB MAXMFN должны показывать пустое состояние.

5. Очистка полнотекстовой БД

Кнопка Очистить FT-БД запрашивает подтверждение и запускает задачу Database/EmptyFtDb. Для провайдера DP_Irbis64Native операция соответствует команде irbistool emptyftdb: очищает только встроенную полнотекстовую БД, не удаляя записи основной БД.

Операция сбрасывает MST/XRF и инвертированный файл FT-БД в пустое состояние. Основная БД остается на месте: ее DB MAXMFN, записи, словарь и параметрические файлы не очищаются. После очистки native-реализация последовательно проходит XRF основной БД и снимает признак BIT_NOTACT_FULLTEXT_REC с записей, где он был установлен, без загрузки полного списка MFN в память.

Очистка FT-БД является разрушающей операцией для полнотекстового индекса. Перед запуском на рабочей БД нужно иметь резервную копию или заранее подготовленную копию БД. После выполнения состояние можно проверить в окне Управление БД командой Состояние -> Обновить: поле FT DB MAXMFN должно показывать пустое состояние, а DB MAXMFN основной БД не должен измениться.

6. Удаление БД

Кнопка Удалить БД запрашивает подтверждение и запускает задачу Database/DropDb. Для провайдера DP_Irbis64Native операция соответствует команде irbistool dropdb: удаляет каталог БД, файл .par и убирает БД из основных и web-списков доступных баз.

Операция удаляет файловый каталог БД целиком и файл <DB>.par, затем исключает имя БД из DBNNAMECAT, DBNNAMECAT2, DBNNAMECAT3 и связанных .tre-файлов. Если для БД настроен web-доступ, перед удалением файлов выполняется та же очистка web-конфигурации, что и для irbistool webdeldb: из MNU-списка удаляется пара строк БД, а секции <DB>, <DB>_FULLTEXT, <DB>_READER и другие связанные web-секции стираются.

Удаление БД является необратимой разрушающей операцией. Перед запуском на рабочей БД нужна проверенная резервная копия или snapshot с описанным способом восстановления. Нельзя использовать эту операцию для диагностики или временного отключения БД: для этого применяйте блокировку БД или удаление из web-доступа.

7. Ограничения и безопасность

8. Web-доступ БД

Кнопка Добавить БД в web-доступ запрашивает подтверждение и запускает задачу Database/WebAddDb. Для провайдера DP_Irbis64Native операция соответствует команде irbistool webadddb: добавляет имя БД в MNU-список web-доступных БД и создает набор web-секций на основе секций IBIS.

Кнопка Удалить БД из web-доступа запрашивает подтверждение и запускает задачу Database/WebDelDb. Для провайдера DP_Irbis64Native операция соответствует команде irbistool webdeldb: удаляет имя БД из MNU-списка и стирает web-секции этой БД.

Операции не создают, не удаляют и не очищают саму БД. Они изменяют только web-конфигурацию:

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

9. Проверка соответствия

Для проверки реализации используется tools/DP_Irbis64NativeLockDbCompare.php. Скрипт создает две тестовые копии БД, запускает irbistool.exe lockdb и native-метод SetDbLocked(true), сравнивает признаки блокировки основной и полнотекстовой БД, затем повторяет проверку для unlockdb.

Для проверки создания БД используется tools/DP_Irbis64NativeNewDbCompare.php. Скрипт создает изолированные копии DATAI, запускает irbistool.exe newdb и native-операцию NewDb() для сценариев по умолчанию, -t, -fr, -r и -w, затем сравнивает каталог БД, .par, embedded FT-БД, MNU/TRE-списки и web-настройки. Дополнительно tools/DP_Irbis64NativeNewDbRollbackSelfTest.php проверяет частичный сбой ReaderWeb: web-ini намеренно отсутствует, операция возвращает ошибку, а созданные каталог БД, .par и записи в MNU/TRE удаляются rollback-логикой.

Для проверки webadddb и webdeldb используется tools/DP_Irbis64NativeWebDbCompare.php. Скрипт создает изолированную копию БД, web-ini и MNU, запускает irbistool.exe webadddb/webdeldb, выполняет native-аналог и сравнивает содержательные изменения web-ini и MNU.

Для проверки emptydb используется tools/DP_Irbis64NativeEmptyDbCompare.php. Скрипт создает две копии БД, запускает irbistool.exe emptydb и Database/Empty, затем сравнивает состояние основной и полнотекстовой БД, включая размеры MST/XRF после очистки.

Для проверки emptyftdb используется tools/DP_Irbis64NativeEmptyFtDbCompare.php. Скрипт создает две копии БД, запускает irbistool.exe emptyftdb и native-операцию EmptyFullTextDb(), затем сравнивает состояние основной и полнотекстовой БД.

Для проверки dropdb используется tools/DP_Irbis64NativeDropDbCompare.php. Скрипт создает две копии БД, запускает irbistool.exe dropdb и native-операцию DropDb(), затем сравнивает отсутствие каталога БД, .par, записей в MNU/TRE и web-настройках. Дополнительно tools/DatabaseDropDbQueueRestoreTest.php проверяет runtime-путь Database/DropDb через action/queue-контекст на малой зарегистрированной БД: перед запуском создается backup каталога БД, .par и служебных MNU/TRE-файлов, после удаления все файлы восстанавливаются и проверяются по snapshot и DbInfo.