# Introducing Buddy: the PHP sidecar for Manticore Search

Manticore Buddy — это PHP‑основанный сайдкар и компаньон Manticore Search, который ускоряет и упрощает разработку. В мире, где разработка на C++ может быть медленной, Manticore Buddy позволяет разработчикам быстро создавать и внедрять функции.

Благодаря языку PHP и его огромному сообществу, Manticore Buddy обеспечивает большую гибкость и удобство использования. Кроме того, с последней версией 8+ PHP стал быстрее, чем когда-либо, что делает его идеальным выбором для разработчиков, желающих ускорить свои рабочие процессы.

## C++ vs. PHP: выбор правильного языка для ваших нужд

Когда речь идет о создании высокопроизводительного программного обеспечения, C++ часто является предпочтительным языком. Однако процесс разработки может быть длительным и сложным, что заставляет многих разработчиков искать альтернативные варианты, повышающие продуктивность. Одним из таких популярных языков является PHP, известный своей удобностью и быстрой работой.

В Manticore Search у нас была похожая проблема — необходимость часто выпускать обновления, одновременно поддерживая высокую производительность. Чтобы решить её, мы разработали Buddy — сайдкар‑приложение, использующее PHP для реализации функций, не требующих максимальной производительности.

В конечном счете выбор между C++ и PHP зависит от потребностей вашего проекта. Если приоритетом является высочайшая производительность, лучше выбрать C++. С другой стороны, если вы предпочитаете более быструю разработку и простоту использования, PHP может быть более разумным выбором.

В заключение, выбор правильного языка для вашего проекта имеет решающее значение. Важно взвесить такие факторы, как производительность, время разработки и простота использования, прежде чем принимать решение. Поиск оптимального баланса между ними приведет к успешному и эффективному проекту.

## Преимущества использования Manticore Buddy

Manticore Buddy — мощный инструмент для разработки Manticore Search, предоставляющий несколько преимуществ для оптимизации процесса разработки. Ниже перечислены основные выгоды от использования Manticore Buddy:

- **Ускорение процесса разработки**: интуитивные интерфейсы Buddy и PHP позволяют быстро и без усилий создавать эффективные функции и расширения, экономя время и оптимизируя рабочий процесс.
- **Бесшовная интеграция с PHP‑пакетами**: Manticore Buddy написан на PHP, что облегчает интеграцию с другими PHP‑библиотеками. Разработчики могут использовать любой PHP‑пакет, сокращая время разработки и делая инструмент полезным и универсальным. Как один из самых популярных языков, PHP является ценным ресурсом для разработчиков.
- **Повышенная доступность для разработчиков любого уровня**: понятная документация и удобный интерфейс делают Buddy доступным для всех уровней навыков. Это может привести к расширению круга участников разработки Manticore Search, повышая гибкость и открывая возможности для будущих улучшений.
- **Выпуск дополнительных функций без обновления C++‑кода**: Buddy позволяет нам делать мощные вещи: выпускать улучшения, расширения и даже новые функции без прохождения длительного чек‑листа реализации на C++. Вместо этого мы можем делать это быстро и надёжно с помощью PHP.

Manticore Buddy — бесценный ресурс для любой команды разработчиков, использующей Manticore Search и желающей расширять его самостоятельно. Его интуитивный интерфейс, возможность использовать любые PHP‑пакеты и доступность для разработчиков всех уровней делают его универсальным инструментом для улучшения процесса разработки Manticore Search и предоставления гибкости для удовлетворения особых требований.

## Как работает Manticore Buddy

Все это звучит замечательно, но вы, вероятно, задаётесь вопросом, как мы заставили Manticore Search и Buddy работать вместе? Мы реализовали внутренний протокол, позволяющий Manticore Search и Buddy взаимодействовать друг с другом. Процесс очень простой и понятный. Чтобы добавить что‑то в Buddy и расширить его функциональность, вам даже не нужно знать протокол, так как мы уже проделали всю сложную работу, сделав его лёгким для построения поверх него.

Рассмотрим запрос `SHOW QUERIES` в качестве примера:

- Manticore Search получает запрос. Если в C++‑коде нет обработчика для него или запрос вызывает ошибку, обычно он возвращает её пользователю. Однако теперь Manticore Search просит Buddy попытаться обработать запрос сначала.
- Затем Manticore Search отправляет запрос в Buddy, используя внутренний протокол коммуникации на основе JSON, и ждёт ответа.
- Buddy обрабатывает запрос асинхронно и параллельно с помощью ReactPHP, обеспечивая неблокирующую работу. По завершении он возвращает результат в Manticore Search.
- В конце ответ от Buddy (независимо от его корректности) проксируется клиенту вместе с результатами, предоставленными Buddy. Готово. Просто, верно?

Процесс настолько прост и мощен, что вы можете расширять и обрабатывать пользовательские запросы, просто реализуя их на PHP в Buddy.

## Что уже умеет Manticore Buddy

Manticore Buddy был разработан для поддержки широкого спектра функций, как крупных, так и мелких, для Manticore Search. Последняя версия, Manticore 6.0.0, включает набор этих возможностей!

Мы стремились определить самые критические функции для включения в начальную версию. Среди них — [auto-schema](https://manual.manticoresearch.com/Data_creation_and_modification/Adding_documents_to_a_table/Adding_documents_to_a_real-time_table#Auto-schema), автоматически создающий таблицу на основе первого полученного документа, команда SQL `BACKUP` для простого резервного копирования таблиц и команда `SHOW QUERIES` для отображения текущих выполняющихся запросов.

Поддерживаются многопоточность и неблокирующая обработка, **используя** расширение PHP **Parallel** для выполнения запросов в отдельных потоках. Если Manticore Buddy неожиданно остановится, Manticore Search обнаружит это и автоматически перезапустит его.

## Хочу попробовать! Подскажите, как установить?

Установка Manticore Buddy проста и понятна. Пакет "**manticore-buddy**" является зависимостью пакета "**manticore**" и автоматически устанавливается при установке Manticore Search.

Однако для корректной работы Manticore Buddy требуются **PHP** и набор модулей. Чтобы упростить этот процесс, мы разработали **Manticore Executor**, специализированную версию PHP, которая поставляется с предкомпилированными всеми необходимыми модулями.

Вам просто нужно [установить](./manticoresearch-buddy-intro/../../install/) пакеты "**manticore**" и "**manticore-extra**", чтобы запустить Manticore Search, Manticore Buddy и Manticore Executor. Не переживайте, Manticore Executor устанавливается в отдельный путь, что гарантирует отсутствие конфликтов с вашими текущими установками PHP.

## Что дальше?

Вам интересно, какие возможности Buddy может нам принести? Мы безусловно в восторге! У нас есть несколько предстоящих функций, которые уже завершены и готовы к выпуску. Благодаря удобству PHP и Manticore Buddy мы можем легко предоставить эти функции. Вот небольшой спойлер того, что будет:

- **mysqldump** — теперь проще, чем когда-либо, выгружать схему или данные с помощью общедоступного инструмента для MySQL, используя mysqldump.
- **MySQL**-подобный **table rendering** с [CLI](https://manual.manticoresearch.com/Connecting_to_the_server/HTTP#/cli) — интерфейс командной строки Manticore HTTP. Да, просто отправьте HTTP‑запрос к эндпоинту `/cli` и получите отрендеренный ответ, который сильно напоминает клиент MySQL в терминале.
- **Pluggable** архитектура. Представьте, что вы можете создать плагин для Buddy всего в несколько кликов и несколькими строками кода. Вы даже можете опубликовать его в маркете и просматривать существующие плагины, чтобы удовлетворить свои потребности. Звучит невероятно, не правда ли?

Вы уже можете протестировать некоторые из этих функций, используя нашу версию Buddy для разработки. Просто перейдите в раздел [dev installation](https://manual.manticoresearch.com/nightly), чтобы узнать, как установить её на вашу операционную систему.

## Заключение

Manticore Search — это поисковый движок с открытым исходным кодом, который набирает популярность в последние годы. Он разработан для удовлетворения широкого спектра поисковых потребностей и используется в различных приложениях, от интернет‑магазинов до онлайн‑рынков. Успех любого проекта с открытым кодом во многом зависит от вклада разработчиков, и Manticore Search не исключение. Именно здесь Manticore Buddy выходит на сцену, чтобы помочь нам быстрее выпускать и развивать наш продукт для сообщества.

Manticore Buddy — мощный и гибкий поисковый помощник, созданный для ускорения разработки новых функций и расширения возможностей Manticore Search. Его удобный интерфейс, понятная документация и огромный сообщество делают его идеальным выбором для любого PHP‑разработчика, желающего ускорить свой рабочий процесс.

Как разработчик, если вы хотите раскрыть весь потенциал Manticore Search, вам стоит изучить и внести свой вклад в Buddy. Это упростит вашу работу и позволит быстрее выпускать продукты без необходимости изменять код на C++. Представьте, вы можете добавить пользовательские функции для вашего случая, просто написав PHP‑плагин. Мощно! 🙂

---

Хотите узнать, с какими проблемами мы столкнулись и как их решали? Прочитайте нашу следующую статью — [Manticore Buddy: challenges and solutions](/blog/manticoresearch-buddy-challenges-and-solutions/)
