Привет!
В версии 3.3.0 мы представили новый режим демона. Мы называем его режимом реального времени (RT mode). Он позволяет управлять индексами (таблицами) с помощью CREATE TABLE и DROP TABLE. Обычный режим, в котором схемы индексов задаются в конфигурационном файле, по-прежнему поддерживается.
Ранее вы могли вставлять и удалять данные из индекса реального времени, но не было возможности добавлять и удалять индексы через SQL/HTTP.
Новый режим включается указанием data_dir в конфигурационном файле. Обратите внимание, что конфигурационный файл используется только для настроек демона, в этом режиме не допускаются секции source или index.
ALTER TABLE теперь можно использовать для изменения настроек индекса, например
ALTER TABLE products ignore_chars='.'
Однако новые настройки применяются только к вновь вставленным документам и не затрагивают документы, которые уже есть в индексе.
data_dir
data_dir указывает каталог, в котором будут храниться все новые индексы. Каждый индекс сохраняется в отдельной папке внутри data_dir. Вы не должны вручную добавлять индексы в эту папку, потому что индексы, созданные демоном в новом RT-режиме, внутренне отличаются от индексов, созданных в обычном режиме. Используйте IMPORT TABLE
для импорта старых индексов. Он копирует файлы индекса в новую папку внутри data_dir и выполняет необходимые изменения формата индекса.
Подробнее о различиях индексов — ниже.
RT-режим работает только с RT- и PQ-индексами. Вы не можете создавать или импортировать обычные индексы в демон, работающий в этом режиме. Одно из возможных решений — использовать ATTACH для добавления обычного индекса к RT-индексу (в демоне, работающем в старом режиме), а затем использовать IMPORT TABLE для импорта этого RT-индекса в демон, работающий в RT-режиме.
Резервное копирование
Поскольку вам не следует вручную изменять содержимое data_dir, единственный безопасный способ (на данный момент) создать резервную копию или переместить data_dir в другое место — остановить демон, скопировать/переместить data_dir и перезапустить демон.
Репликация
Поскольку репликация создаёт и удаляет индексы на узлах, она работает только с демоном в новом RT-режиме.
Внешние файлы
В CREATE TABLE и ALTER TABLE для внешних файлов (словоформ, стоп-слов, исключений) разрешены только абсолютные пути. Так сделано, чтобы избежать путаницы: относительные пути отсчитываются от папки, из которой был запущен демон, а пользователь может этого не знать.
Детали реализации
data_dir содержит индексы и файл .json, в котором перечислены эти индексы и некоторые их свойства. Этот файл изменяется демоном, вам не следует изменять его вручную.
Все пути внутри конфигурации .json являются относительными. Идея в том, что вы можете скопировать/переместить data_dir на новый узел/место, изменить data_dir в конфигурационном файле и запустить демон из нового места без каких-либо дополнительных изменений.
Также существуют различия в формате индексов (между индексами, созданными в RT-режиме и обычном режиме), которые служат той же цели. Индексы, созданные в старом режиме, хранят полные пути к внешним файлам. Индексы, созданные в RT-режиме, хранят только имена файлов, путь генерируется динамически на основе имени индекса и значения data_dir в конфигурации.
Существует заметная разница в том, как демон работает с внешними файлами (словоформы, файлы исключений или стоп-слов) при работе в RT-режиме. До введения RT-режима индексы либо встраивали внешние файлы в заголовок индекса, либо использовали их из места их хранения (в зависимости от настроек). Сейчас, когда Manticore работает в RT-режиме, встраивание отключено. Например, при выполнении
CREATE TABLE (title text) wordforms ='/path/to/wordforms.txt'
словоформы, стоп-слова и исключения копируются в папку индекса внутри data_dir.
IMPORT TABLE по сути делает то же самое. Он копирует внешние файлы в папку индекса внутри data_dir. Это может привести к дублированию файлов, если одни и те же внешние файлы используются при создании нескольких индексов. Однако это не обязательно означает дополнительное использование ОЗУ демоном. Например, searchd загружает только один экземпляр файла словоформ, если существует несколько индексов, использующих копии одного и того же оригинального файла словоформ.
Если у вас есть вопросы о новом режиме, не стесняйтесь задавать их в:
Нашем публичном канале Slack
Нашем публичном форуме
Или изучите его самостоятельно в нашем интерактивном курсе «Manticoresearch - RT mode - index administration ».
