пятница, 7 августа 2020 г.

Разберёмся с «полнотекстом»

Какое-то время назад, было повальное увлечение полнотекстовыми базами данных. В терминах АС-Библиотека-3 это не что иное как «Присоединённые документы». Попробуем разобраться с этим «зверем», а заодно решить несколько возможных проблем.

У меня демо база, поэтому ничто не присоединено. Присоединить можно любой файл, распознаваемый операционной системой. Но где он хранится? Есть два подхода – в базе или в файловой системе (при этом в базе хранится ссылка на файл). В базе их нет. Значит, ищем на диске. В папке EServer есть подозрительная папка BLOB.

Это аббревиатура, означающая большие бинарные объекты. Попробуем присоединить любой документ и посмотрим, что произойдёт. 

Хорошо. Теперь удалим его в проводнике, перечитаем в каталогизаторе и посмотрим. Он исчез!

Посмотрим ошибки 

Ошибок нет. А что означает имя папки «00000007»? Не что иное как номер записи в базе! 

Попробуем в проводнике подложить картинку (для отличия) и перечитаем в каталогизаторе.

 

Проверим ошибки 

Ошибок нет. Похоже, что в базе даже ссылки нет как таковой. Связь происходит по имени базы и номеру записи. Как это можно использовать? Разумеется, создавать и удалять присоединённые документы удобней штатным способом. А вот поискать по размеру и откорректировать вполне. 

Думаю, ты знаешь, на что способен «неопытный» пользователь сканера в союзе с BMP форматом! Да и уровни сжатия JPEG бывают разные. Назначение папки «00000000», по-видимому, просто создать дополнительные диапазоны для более быстрого доступа. Но для нас это не важно.

Хорошо. А что делать, если всё сжато, а на диске заканчивается место. Тем более что это, как правило, диск С:. Там и операционная система. Нужно добавить диск и перенести BLOB на него. Как добавить диск разберёшься сам. Это не моя тема. А вот с переносом давай посмотрим. При создании логической базы АС-Библиотека-3 требует ряд параметров. 

В том числе «Путь к присоединённым документам». На рисунке в шаблоне предлагается «.\BLOB\Book». Точка, очевидно, означает текущий каталог, относительно сервера «EServer». Эти данные, должны быть, где то сохранены. Так и есть. Вот таблица «Demo__Options». 

Запись BlobPath указывает путь. Что произойдёт, если мы его изменим. Давай посмотрим. На то это и «эксперименты». Я создал на другом диске (E:) соответствующую структуру папок, при этом, «BLOB» заменил на «АС-3 Присоединённые документы» и положил другой файл. Другой файл я положил намерено. Это покажет, куда смотрит система. Остальные изменения спорны, просто посмотреть на реакцию. Главное не вносить излишнюю путаницу.

 

Изменим путь в таблице «Demo__Options». 

Перечитаем записи в «Каталогизаторе» 

Даже сервер перезапускать не пришлось! Теперь попробуем создать в каталогизаторе. 

Здесь я выбрал вариант «Обложка» 

Однако посмотрим ошибки.

Ошибок нет.

Есть ещё парочка способов перенести «BLOB» на другой диск без вмешательства в базу. Кто «гулял» по файловой системе linux, тот знает, что в ней существуют мягкие и жёсткие ссылки. Что-то подобное завелось и в Windows. Но это до сих пор мало кто знает. Для начала, вернём в базе, как было. 

Удалим каталог «E:\АС-3 Присоединённые документы» с дополнительного диска и скопируем туда весь каталог «BLOB». 

Удаляем основной каталог «C:\Program Files (x86)\АС-Библиотека-3\EServer\BLOB». Запускаем cmd от Администратора. Переходим в каталог «C:\Program Files (x86)\АС-Библиотека-3\EServer» выполняем команду «mklink /D /J BLOB E:\BLOB» (Vista+, в XP: см. ниже). Смотрим результат. Что-то появилось.

Посмотрим, как работает. В «Каталогизаторе» 

Создадим «Обложку» 

Обложка на месте. 

Замечу, что вместе со всем «BLOB» переехала и база фотографий пользователей «User». Проверим и её. 

Всё на месте. И конечная цель, это доставка документов пользователю. 

Для XP такой команды нет (мне не известно). А поскольку пользователей XP ещё достаточно, сделаем всё из консоли. Здесь можно «закрепить» за папкой только диск целиком. После всех инициализаций, копируем содержимое папки BLOB на новый диск. Обрати внимание, именно содержимое! В моём случае (демо) это будет папка User.User. После чего удаляем её содержимое. Открываем консоль «Управление компьютером» и выбираем «Управление дисками». В контекстном меню нового диска выбираем пункт «Изменить букву диска или путь к диску…». 

Добавляем путь к папке BLOB. 

Далее открываем «Каталогизатор» и присоединяем документ. 

Смотрим результат. 

Таким же способом всё можно сделать и в старших версиях. Но в случае команды всё удаётся собрать в одной папке BLOB. Кроме того командой можно «перебросить» отдельную базу, а в консольном варианте всё скопом. Впрочем, это вопрос эстетики. Как поступить выбирай сам.

Здесь всё построено на технологии «повторной обработки». При этом очевидно возникают дополнительные издержки. Однако при реальной интенсивности обращений к присоединённым документам ими можно пренебречь. Поэтому я бы не советовал использовать этот трюк для переброски основной базы (Lib.mdb). Тем более что путь к ней легко изменить в настройках подключения.

И, напоследок, укажу на ещё один способ переноса. С некоторых пор в Windows появился такой вот «зверь». 

Если коротко, то он позволяет поместить диск в сети. Причём даже SQL сервер «соглашается» разместить на нём свою базу (сам проверял). Штука, безусловно, мощная, но ответная часть есть только на серверной версии ОС. Впрочем, есть и линукс варианты. Например FreeNAS весьма мощная штуковина с кучей дополнительных технологий. Но с этим будешь разбираться сам. Это не моя тема.

В базе Lib.mdb есть таблица All_BLOB, которая играет роль лога. И её надо периодически чистить.

И в конце небольшой совет. Эта технология прекрасно подходит для упорядоченного хранения сканов обложек для презентаций. Кто готовил мероприятия знает, что одни и теже обложки сканируют по многу раз. Потом они валяются по всем компьютерам, но ничего не найдёшь.

На этом всё. Пиши комментарии (регистрация не требуется) или на почту acbib3@yandex.ru


Комментариев нет:

Отправить комментарий