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

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

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

Разбиение выполняется вручную. Для настройки необходимо:

* Развернуть несколько экземпляров Manticore на разных серверах
* Распределить разные части вашего набора данных по разным экземплярам
* Настроить специальную [распределённую таблицу](../Creating_a_table/Creating_a_distributed_table/Creating_a_distributed_table.md) на некоторых из `searchd` экземпляров
* Направить ваши запросы к распределённой таблице

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

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

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

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

Узнайте больше о [удалённых узлах](../Creating_a_cluster/Remote_nodes.md).

<!-- proofread -->

