Introduction.md 19 KB

Введение

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

Будучи открытой базой данных (доступной на GitHub), Manticore Search была создана в 2017 году как продолжение движка Sphinx Search. Наша команда разработчиков взяла все лучшие функции Sphinx и значительно улучшила его функциональность, исправив сотни ошибок на этом пути (подробности в нашем журнале изменений). Manticore Search — это современная, быстрая и легковесная база данных с исключительными возможностями полнотекстового поиска, построенная на практически полном переписывании своего предшественника.

Ключевые особенности Manticore:

Мощный и быстрый полнотекстовый поиск, отлично подходящий как для малых, так и для больших наборов данных

Возможности векторного поиска

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

JOIN

Manticore Search поддерживает запросы JOIN через SQL и JSON, позволяя комбинировать данные из нескольких таблиц.

Многопоточность

Manticore Search использует умное параллелирование запросов для уменьшения времени отклика и полного использования всех ядер процессора при необходимости.

Оптимизатор запросов на основе стоимости

Оптимизатор запросов на основе стоимости использует статистические данные о индексированных данных для оценки относительных затрат различных планов выполнения для данного запроса. Это позволяет оптимизатору определить самый эффективный план получения нужных результатов, учитывая такие факторы, как размер индексированных данных, сложность запроса и доступные ресурсы.

Варианты хранения

Manticore предлагает как построчное, так и колоночное хранение для работы с наборами данных различных размеров. Традиционный и по умолчанию используемый построчный вариант доступен для наборов данных всех размеров — малых, средних и больших, тогда как колоночное хранение предоставляется через Manticore Columnar Library для еще больших наборов данных. Главное отличие этих вариантов хранения в том, что построчное хранение требует, чтобы все атрибуты (исключая полнотекстовые поля) хранились в ОЗУ для оптимальной производительности, тогда как колоночное хранение этого не требует, обеспечивая меньшее потребление памяти, но с возможным слегка более медленным выполнением (как демонстрируют статистические данные на https://db-benchmarks.com/).

Автоматические вторичные индексы

Manticore Columnar Library использует индекс Piecewise Geometric Model index, который использует обучаемое отображение между индексируемыми ключами и их расположением в памяти. Компактность этого отображения, в сочетании с особым рекурсивным алгоритмом построения, делает PGM-индекс структурой данных, которая превосходит традиционные индексы по объему памяти на порядки, при этом обеспечивая лучшее время выполнения запросов и обновлений. Вторичные индексы включены по умолчанию для всех числовых и строковых полей, и их можно включить для json-атрибутов.

SQL-первый

Нативный синтаксис Manticore — SQL, он поддерживает SQL через HTTP и протокол MySQL, что позволяет подключаться через популярные клиенты mysql на любом языке программирования.

JSON через HTTP

Для более программируемого подхода к управлению данными и схемами Manticore предоставляет протокол HTTP JSON, аналогичный Elasticsearch.

Записи совместимые с Elasticsearch

Вы можете выполнять совместимые с Elasticsearch insert и replace JSON-запросы, что позволяет использовать Manticore с такими инструментами, как Logstash (версии < 7.13), Filebeat и другими из семейства Beats.

Декларативное и императивное управление схемами

Легко создавать, обновлять и удалять таблицы онлайн или через конфигурационный файл.

Преимущества C++ и удобство PHP

Демон Manticore Search разработан на C++, что обеспечивает быстрое время запуска и эффективное использование памяти. Низкоуровневые оптимизации дополнительно повышают производительность. Другой важный компонент, называемый Manticore Buddy, написан на PHP и используется для высокоуровневой функциональности, не требующей молниеносного времени отклика или чрезвычайно высокой вычислительной мощности. Хотя внесение вклада в код C++ может быть сложной задачей, добавление новой SQL/JSON команды с помощью Manticore Buddy должно быть простым процессом.

Вставки в реальном времени

Новые или обновленные документы могут быть прочитаны немедленно.

Интерактивные курсы для легкого обучения

Мы предлагаем бесплатные интерактивные курсы, чтобы сделать обучение легким.

Транзакции

Хотя Manticore не полностью соответствует ACID, он поддерживает изолированные транзакции для атомарных изменений и бинарное логирование для безопасной записи.

Встроенная репликация и балансировка нагрузки

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

Встроенные возможности резервного копирования

Manticore оснащен внешним инструментом manticore-backup и SQL-командой BACKUP для упрощения процесса резервного копирования и восстановления ваших данных. В качестве альтернативы вы можете использовать mysqldump для создания логических резервных копий.

Синхронизация данных из коробки

Инструмент indexer и всеобъемлющий синтаксис конфигурации Manticore позволяют легко синхронизировать данные из таких источников, как MySQL, PostgreSQL, совместимые с ODBC базы данных, XML и CSV.

Варианты интеграции

Вы можете интегрировать Manticore Search с сервером MySQL/MariaDB, используя движок FEDERATED или через ProxySQL.

Вы можете использовать Apache Superset и Grafana для визуализации данных, хранящихся в Manticore. Различные инструменты MySQL могут быть использованы для интерактивной разработки запросов Manticore, такие как HeidiSQL и DBForge.

Вы также можете использовать Manticore Search с Kibana.

Простая фильтрация потоков

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

Возможные области применения

Manticore Search универсален и может применяться в различных сценариях, включая:

  • Полнотекстовый поиск:

    • Идеален для платформ электронной коммерции, обеспечивая быстрый и точный поиск товаров с такими функциями, как автодополнение и нечеткий поиск.
    • Идеально подходит для сайтов с большим объемом контента, позволяя пользователям быстро находить соответствующие статьи или документы.
  • Аналитика данных:

    • Загружайте данные в Manticore Search с помощью Beats/Logstash, Vector.dev, Fluentbit.
    • Эффективно анализируйте большие наборы данных, используя колоночное хранение Manticore и возможности OLAP.
    • Выполняйте сложные запросы к терабайтам данных с минимальной задержкой.
    • Визуализируйте данные с помощью Kibana, Grafana или Apache Superset.
  • Фасетный поиск:

    • Позволяйте пользователям фильтровать результаты поиска по категориям, таким как цена, бренд или дата, для более точного поиска.
  • Геопространственный поиск:

    • Реализуйте поиск на основе местоположения, например, поиск ближайших ресторанов или магазинов, с помощью геопространственных возможностей Manticore.
  • Исправление орфографии:

    • Автоматически исправляйте опечатки пользователей в поисковых запросах для повышения точности поиска и удобства пользователей.
  • Автодополнение:

    • Предоставляйте предложения в реальном времени по мере ввода пользователем, повышая удобство и скорость поиска.
  • Фильтрация потоков данных:

    • Используйте таблицы типа percolate для эффективной фильтрации и обработки потоков данных в реальном времени, таких как ленты социальных сетей или данные журналов.

Требования

  • Архитектура: arm64 или x86_64
  • ОС: на основе Debian (например, Debian, Ubuntu, Mint), на основе RHEL (например, RHEL, CentOS, Alma, Oracle Linux, Amazon Linux), Windows или MacOS.
  • Manticore Columnar Library, которая обеспечивает колоночное хранение и вторичные индексы, требует процессор с SSE >= 4.2.
  • Нет особых требований к дисковому пространству или оперативной памяти. Пустой экземпляр Manticore Search использует только около 40 МБ RSS RAM.