Вы когда-нибудь запутывались в различных режимах Manticore Search? Вы не одни. Многие разработчики испытывают трудности с пониманием разницы между режимом реального времени (RT) и простым режимом, когда только начинают использовать Manticore Search. Но не волнуйтесь – на самом деле это довольно просто, как только вы поймете основные концепции.
В этом руководстве мы развеем загадки этих двух оперативных режимов и покажем вам, когда и как использовать каждый из них.
Понимание режимов Manticore Search
Manticore Search предлагает два основных оперативных режима:
- Режим реального времени (RT) - Режим по умолчанию, который позволяет вам создавать и удалять таблицы на лету
- Простой режим - Работает со статическими схемами и простыми таблицами, построенными на основе внешних источников хранилища
Давайте углубимся в каждый режим, чтобы понять их возможности и ограничения.
Режим реального времени (RT): Динамичный и гибкий
RT режим является режимом по умолчанию и наиболее часто используемым режимом в Manticore Search. Он предназначен для динамичных окружений, где вам нужно создавать, изменять или удалять таблицы без перезапуска сервиса.
Как идентифицировать RT режим
Ключевым индикатором RT режима является наличие директивы data_dir
в вашем конфигурационном файле. Давайте посмотрим на типичную конфигурацию:
cat /opt/homebrew/etc/manticoresearch/manticore.conf
searchd {
listen = 127.0.0.1:9312
listen = 127.0.0.1:9306:mysql
listen = 127.0.0.1:9308:http
log = /opt/homebrew/var/log/manticore/searchd.log
query_log = /opt/homebrew/var/log/manticore/query.log
pid_file = /opt/homebrew/var/run/manticore/searchd.pid
data_dir = /opt/homebrew/var/manticore
}
Обратите внимание на директиву data_dir
в конфигурации. Эта единственная строка и включает RT режим.
Создание таблиц на лету
Одно из главных преимуществ RT режима – это возможность динамического создания таблиц:
mysql -P9306 -h0 -v
Добро пожаловать в MySQL монитор. Команды заканчиваются ; или \g.
Ваш идентификатор соединения MySQL: 759523
Версия сервера: 7.0.1 763f4a0b9@25013111 dev (columnar 4.0.1 9f6686d@25012409) (secondary 4.0.1 9f6686d@25012409) (knn 4.0.1 9f6686d@25012409) git branch master...origin/master
Copyright (c) 2000, 2024, Oracle и/или ее дочерние компании.
Oracle является зарегистрированным товарным знаком Oracle Corporation и/или ее
дочерних компаний. Другие названия могут быть товарными знаками соответствующих
владельцев.
Чтение файла истории /Users/sn/.mysql_history
Введите 'help;' или '\h' для получения справки. Введите '\c' для очистки текущего входного заявления.
Создать таблицу так же просто, как:
mysql> create table t;
Запрос выполнен успешно, затронуто 0 строк (0.00 сек)
А удалить её так же просто:
mysql> drop table t;
Запрос выполнен успешно, затронуто 0 строк (0.01 сек)
Поддержка репликации
Еще одна мощная функция, эксклюзивная для RT режима, – это репликация. Вы можете создавать кластеры и добавлять таблицы к ним:
mysql> create table t;
Запрос выполнен успешно, затронуто 0 строк (0.00 сек)
mysql> create cluster c;
Запрос выполнен успешно, затронуто 0 строк (0.44 сек)
mysql> alter cluster c add t;
Запрос выполнен успешно, затронуто 0 строк (0.00 сек)
Простой режим: Стабильный и структурированный
Простой режим предназначен для окружений, где ваша схема относительно стабильна и определена заранее. Он особенно полезен при работе с внешними источниками данных.
Как идентифицировать простой режим
Отсутствие директивы data_dir
в вашем конфигурационном файле указывает на простой режим. Давайте посмотрим на конфигурацию простого режима:
cat ~/manticore/plain.conf
searchd {
listen = 9315:mysql41
log = searchd.log
pid_file = searchd.pid
binlog_path =
}
source src {
type = csvpipe
csvpipe_command = echo "1,abcdef,123"
csvpipe_field = f
csvpipe_attr_uint = a
}
table idx {
type = plain
source = src
path = idx
}
table rt {
type = rt
path = rt
rt_field = f
rt_attr_uint = a
}
Обратите внимание, что нет директивы data_dir
, но в конфигурационном файле есть определения таблиц.
Запуск экземпляра в простом режиме
Давайте запустим Manticore Search в простом режиме:
searchd -c plain.conf
Manticore 7.0.0 92c650401@25013002 (columnar 4.0.0 5aa8e43@25012409) (secondary 4.0.0 5aa8e43@25012409) (knn 4.0.0 5aa8e43@25012409)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2024, Manticore Software LTD (https://manticoresearch.com)
[26:49.002] [20433033] использование конфигурационного файла '/Users/sn/manticore/plain.conf' (344 символов)...
начало демона версии '7.0.0 92c650401@25013002 (columnar 4.0.0 5aa8e43@25012409) (secondary 4.0.0 5aa8e43@25012409) (knn 4.0.0 5aa8e43@25012409)' ...
слушаем на всех интерфейсах для mysql, порт=9315
предварительное кеширование таблицы 'idx'
Формат заголовка индекса не json, попытаемся прочитать его как бинарный...
WARNING: Не удается загрузить заголовок... Ошибка не удалось открыть idx.sph: Нет такого файла или директории
WARNING: таблица 'idx': предвыделение: не удалось открыть idx.sph: Нет такого файла или директории - НЕ ОБСЛУЖИВАЕТСЯ
предварительное кеширование таблицы 'rt'
предварительно закешировано 1 таблица за 0.004 сек
Работа с таблицами в простом режиме
Когда мы проверяем доступные таблицы, мы можем увидеть, что вначале доступна только таблица RT:
mysql -P9315 -h0 -e "show tables"
+-------+------+
| Таблица | Тип |
+-------+------+
| rt | rt |
+-------+------+
Чтобы сделать простую таблицу доступной, нам нужно построить её с помощью инструмента индексирования:
indexer -c plain.conf --all --rotate
Manticore 7.0.0 92c650401@25013002 (columnar 4.0.0 5aa8e43@25012409) (secondary 4.0.0 5aa8e43@25012409) (knn 4.0.0 5aa8e43@25012409)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2024, Manticore Software LTD (https://manticoresearch.com)
using config file '/Users/sn/manticore/plain.conf'...
индексирование таблицы 'idx'...
собрано 1 документ, 0.0 МБ
создание вторичного индекса
создание поиска: 0.0 Кдок, 100.0% выполнено
отсортировано 0.0 Мпопаданий, 100.0% выполнено
всего 1 документ, 6 байт
всего 0.029 сек, 203 байт/сек, 33.96 документов/сек
WARNING: пропуск таблицы не-plain 'rt'...
всего 3 чтения, 0.000 сек, 0.0 кб/вызов в среднем, 0.0 мс/вызов в среднем
всего 15 записей, 0.000 сек, 0.0 кб/вызов в среднем, 0.0 мс/вызов в среднем
поворот таблиц: успешно отправлен SIGHUP на searchd (pid=89954).
После перезагрузки таблиц:
mysql -P9315 -h0 -e "reload tables"
Теперь обе таблицы доступны:
mysql -P9315 -h0 -e "show tables"
+-------+-------+
| Таблица | Тип |
+-------+-------+
| idx | local |
| rt | rt |
+-------+-------+
Ограничения режима Plain
В режиме Plain вы не можете динамически создавать таблицы:
mysql -P9315 -h0 -e "create table t"
ERROR 1064 (42000) at line 1: CREATE TABLE требует, чтобы data_dir был установлен в конфигурационном файле
Репликация также недоступна:
mysql -P9315 -h0 -e "create cluster c"
ERROR 1064 (42000) at line 1: невозможно создать кластер 'c': не найден 'listen', не удается установить входящие адреса, репликация отключена
Когда использовать каждый режим
Используйте режим RT, когда:
- Вам нужно часто создавать или изменять таблицы
- Вы хотите использовать функции репликации
- Вы предпочитаете более динамичную, гибкую среду
- Вы разрабатываете приложения, которые должны адаптироваться к меняющимся требованиям
Используйте режим Plain, когда:
- Ваша схема стабильна и хорошо определена
- Вы в основном работаете с внешними источниками данных
- Вы хотите обеспечить консистентность схемы между развертываниями
- Вам нужен более контролируемый, управляемый конфигурацией подход
Заключение
Понимание различий между режимами RT и Plain в Manticore Search имеет решающее значение для оптимизации вашей поисковой реализации. Режим RT предлагает гибкость и динамическое управление таблицами, в то время как режим Plain обеспечивает стабильность и структуру.
Для большинства современных приложений режим RT является рекомендуемым выбором благодаря своей гибкости и набору функций. Тем не менее, режим Plain все еще имеет свое место, особенно в средах, где приоритетами являются стабильность схемы и портируемость конфигурации.
Предпочитаете смотреть вместо чтения? Посмотрите наше видео на эту тему:
Помните, ключ к определению того, какой режим вы используете, прост: если в вашей конфигурации есть директива data_dir
, вы находитесь в режиме RT; если нет, вы в режиме Plain.