Задать вопрос

Redis vs Elasticsearch vs Sphinx для хранения данных и поиск по ним?

Добрый день!

Что по вашему лучше всего подойдет для хранения данных и поиск по ним, например каталог товаров? Чтобы удовлетворяло следующим условиям:

1. Хранение данных каталога с быстрым доступом
2. Поиске по информации, в особенности русскими названиями-запросами
3. Простота в использовании: синтаксис запросов, документация
4. Наименьшая нагрузка на "железо"
5. Отказоустойчивость
6. Безопасность
7. Масштабирование
  • Вопрос задан
  • 2360 просмотров
Подписаться 3 Сложный 3 комментария
Решения вопроса 2
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Мммм, какой классный холивар, давайте я вставлю свои 5 копеек. Сначала прелюдия:
Redis:
это кэш с парой-тройкой фич. Не предназначен для хранения и поиска данных как класс

Elasticsearch, Sphinx:
Два принципиально разных поисковых движка. Хорошо делают свою работу, но не предназначены для хранения данных, только для хранения поисковых индексов.

1. Хранение данных каталога с быстрым доступом

Поскольку ни одна их указанных систем не является базой данных стоит задуматься о другом виде баз данных. В зависимости от того что выберете то и масштабировать придется по-разному

2. Поиске по информации, в особенности русскими названиями-запросами

Это умеет сегодня любой поисковый движок

3. Простота в использовании: синтаксис запросов, документация

Документация есть у всех адекватных поисковых машин, синтаксис везде достаточно простой

4. Наименьшая нагрузка на "железо"

А вот тут начинаем смеяться. Если мы говорим о поиске то первое правило - все выделенные ресурсы что вы выделите будут съедены. Даже если у вас 100 товаров по 2кб. Память будет съедена первой, потом получит свою порцию и процессор

5. Отказоустойчивость

Это не про поиск, а про архитектуру, сеть, сервера, и все в таком духе. Если что то горизонтальное масштабирование поисковых машин это боль - все хорошо пока не сломалось и там очень часто кластер не восстановись

6. Безопасность

Опять не про поисковые машины. Есть 3 части: encryption in transit (ssl), encryption at rest (AES), auth (зависит от движка). В принципе все и так поддерживают сегодня

7. Масштабирование

И снова не про поиск, а про архитектуру. Вертикально масштабировать проще всего в облаках и дорого, горизонтально масштабировать - больно
Ответ написан
ManticoreSearch
@ManticoreSearch
DISCLAIMER: сотрудник Manticore
---------------------------------------------
Посмотрите на Manticore Search (форк Sphinx).

1. Хранение данных каталога с быстрым доступом

Да, хранение есть по дефолту:
➜  ~ docker run --name manticore --rm -d manticoresearch/manticore && \
docker exec -it manticore mysql && \
docker stop manticore

992d3e61b7949f82c16b472f4947c81fee58f2a720aa5bbba4fe478383583661
MySQL [(none)]> create table f(name text, color string);
MySQL [(none)]> insert into f(name,color) values('Something good', 'red');
MySQL [(none)]> select highlight() from f where match('good');
+-----------------------+
| highlight()           |
+-----------------------+
| Something <b>good</b> |
+-----------------------+
MySQL [(none)]>


2. Поиске по информации, в особенности русскими названиями-запросами

Всё, как в Sphinx, только charset_table не нужно писать. Дефолта обычно достаточно для всех языков.

3. Простота в использовании: синтаксис запросов, документация

Дока тут https://docs.manticoresearch.com/
Интерактивные курсы здесь https://play.manticoresearch.com/
В частности про синтаксис запросов https://play.manticoresearch.com/fulltextintro/

4. Наименьшая нагрузка на "железо"

Чуть лучше, чем в Sphinx https://manticoresearch.com/2019/05/14/benchmark_m...

5. Отказоустойчивость

Есть репликация https://play.manticoresearch.com/replication/

6. Безопасность

Есть поддержка https для JSON-протокола https://play.manticoresearch.com/https/

7. Масштабирование

Как в Sphinx
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Ни один из перечисленных!
Собственная разработка с грамотной архитектурой будет лучше любого из существующих решений.

Если нет возможности проектирования под свою задачу и создания полноценного решения с "нуля" - берите solr.
Ответ написан
opium
@opium
Просто люблю качественно работать
Редис явно не туда попал
А так под ваши запросы больше сфинкс подходит
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы