Manticore Search реализует SQL-интерфейс с использованием протокола MySQL, что позволяет использовать любую библиотеку или коннектор MySQL, а также многие клиенты MySQL для подключения к Manticore Search и работы с ним так, как если бы это был сервер MySQL, а не Manticore.
Однако диалект SQL отличается и реализует только подмножество команд или функций SQL, доступных в MySQL. Кроме того, существуют конструкции и функции, специфичные для Manticore Search, такие как конструкция MATCH() для полнотекстового поиска.
Manticore Search не поддерживает подготовленные выражения на стороне сервера, но можно использовать подготовленные выражения на стороне клиента. Важно отметить, что Manticore реализует тип данных с множественными значениями (MVA), который не имеет эквивалента в MySQL или библиотеках, реализующих подготовленные выражения. В таких случаях значения MVA должны быть сформированы в сыром запросе.
Некоторые клиенты/коннекторы MySQL требуют значения для пользователя/пароля и/или имени базы данных. Поскольку в Manticore Search нет концепции баз данных и не реализован контроль доступа пользователей, эти значения могут быть заданы произвольно, так как Manticore просто их игнорирует.
Порт по умолчанию для SQL-интерфейса — 9306, и он включён по умолчанию.
Вы можете настроить порт MySQL в разделе searchd конфигурационного файла, используя директиву listen следующим образом:
searchd {
...
listen = 127.0.0.1:9306:mysql
...
}
Имейте в виду, что в Manticore нет аутентификации пользователей, поэтому убедитесь, что порт MySQL недоступен для всех, кроме вашей сети.
Для выполнения "VIP"-подключений можно использовать отдельный порт MySQL. При подключении к этому порту пул потоков обходится, и всегда создаётся новый выделенный поток. Это полезно в случаях сильной перегрузки, когда сервер либо зависает, либо не позволяет подключиться через обычный порт.
searchd {
...
listen = 127.0.0.1:9306:mysql
listen = 127.0.0.1:9307:mysql_vip
...
}
Самый простой способ подключиться к Manticore — использовать стандартный клиент MySQL:
mysql -P9306 -h0
Протокол MySQL поддерживает шифрование SSL. Защищённые подключения могут быть выполнены на том же прослушивающем порту mysql.
Сжатие может использоваться с MySQL-подключениями и доступно клиентам по умолчанию. Клиенту нужно просто указать, что соединение должно использовать сжатие.
Пример с использованием клиента MySQL:
mysql -P9306 -h0 -C
Сжатие может использоваться как в защищённых, так и в незащищённых соединениях.
Официальные коннекторы MySQL могут использоваться для подключения к Manticore Search, однако они могут требовать определённых настроек, передаваемых в строке DSN, так как коннектор может пытаться выполнять некоторые SQL-команды, ещё не реализованные в Manticore.
JDBC Connector версии 6.x и выше требует Manticore Search версии 2.8.2 или выше, и строка DSN должна содержать следующие опции:
jdbc:mysql://IP:PORT/DB/?characterEncoding=utf8&maxAllowedPacket=512000&serverTimezone=XXX
По умолчанию Manticore Search сообщает коннектору свою версию, однако это может вызвать некоторые проблемы. Чтобы их избежать, директива mysql_version_string в разделе searchd конфигурационного файла должна быть установлена на версию ниже 5.1.1:
searchd {
...
mysql_version_string = 5.0.37
...
}
.NET MySQL коннектор по умолчанию использует пулы подключений. Чтобы корректно получать статистику SHOW META, запросы вместе с командой SHOW META должны отправляться как единый многооператорный запрос (SELECT ...;SHOW META). Если пуллинг включён, в строку подключения необходимо добавить опцию Allow Batch=True, чтобы разрешить многооператорные запросы:
Server=127.0.0.1;Port=9306;Database=somevalue;Uid=somevalue;Pwd=;Allow Batch=True;
К Manticore можно получить доступ через ODBC. Рекомендуется установить charset=UTF8 в строке ODBC. Некоторые драйверы ODBC не понравится версия, сообщаемая сервером Manticore, так как они воспримут её как очень старую версию MySQL. Это можно переопределить с помощью опции mysql_version_string.
Manticore SQL поверх MySQL поддерживает синтаксис комментариев в стиле C. Всё от открывающей последовательности /* до закрывающей */ игнорируется. Комментарии могут занимать несколько строк, не могут вкладываться и не должны логироваться. Специфичные для MySQL комментарии /*! ... */ также в настоящее время игнорируются. (Поддержка комментариев была добавлена скорее для лучшей совместимости с дампами, создаваемыми mysqldump, а не для улучшения общей совместимости запросов между Manticore и MySQL.)
SELECT /*! SQL_CALC_FOUND_ROWS */ col1 FROM table1 WHERE ...
