Распределённый поиск

Manticore разработан для эффективного масштабирования благодаря возможностям распределённого поиска. Распределённый поиск полезен для улучшения задержки запроса (то есть времени поиска) и пропускной способности (то есть максимального количества запросов в секунду) в многосерверных, многоядерных или многопроцессорных средах. Это критично для приложений, которым нужно искать по огромным объёмам данных (то есть миллиардам записей и терабайтам текста).

Основная идея — горизонтально разделить данные для поиска между узлами поиска и обрабатывать их параллельно.

Разделение выполняется вручную. Чтобы настроить это, необходимо:

  • Запустить несколько экземпляров Manticore на разных серверах
  • Распределить разные части вашего набора данных по разным экземплярам
  • Настроить специальную распределённую таблицу на некоторых из searchd экземпляров
  • Направлять ваши запросы к распределённой таблице

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

Когда Manticore получает запрос к распределённой таблице, он выполняет следующие шаги:

  1. Подключается к настроенным удалённым агентам
  2. Отправляет им запрос
  3. Одновременно ищет по настроенным локальным таблицам (пока удалённые агенты выполняют поиск)
  4. Получает результаты поиска от удалённых агентов
  5. Объединяет все результаты, удаляя дубликаты
  6. Отправляет объединённые результаты клиенту

С точки зрения приложения, нет разницы между поиском по обычной таблице или распределённой таблице. Другими словами, распределённые таблицы полностью прозрачны для приложения, и невозможно определить, была ли запрошенная таблица распределённой или локальной.

Узнайте больше о удалённых узлах.

Last modified: August 28, 2025