Крупная База данных w/Полнотекстовый поиск - Сфинкс, Lucene, Cassandra, MongoDB, [закрытый] CouchDB

8
задан DrColossos 15 August 2010 в 11:23
поделиться

2 ответа

Хранение данных и поиск - это разные вещи. Если вы посмотрите на такие архитектуры, как ebay, у них есть отдельные службы и серверы для поиска. 50 м строк - это ничто, вы можете хранить их в любом хранилище данных, ни одно из них не идеально, поэтому разница в вариантах использования. Например: cassandra имеет самую быструю производительность вставки с любым размером данных, может легко масштабироваться до петабайт с сотнями машин (не нужно сегментировать), имеет lucandra (интеграция cassndra-lucene, хорошо масштабируется с массивными данными, но игрушка по сравнению с elasticsearch), высокая надежность, ... MongoDB имеет больше параметров запроса (использует btree как dbms), недавно имеет автошардинг, может индексировать все поля, но низкая надежность, ... Postgresql - самая продвинутая dbms с открытым исходным кодом. там, недавно была встроена репликация master / slave, может масштабироваться с помощью шардинга, acid & sql-совместимого ... couchdb не имеет никаких преимуществ по сравнению с другими в случае использования, я думаю, это чертовски медленно, если мне нужна кислота, я, вероятно, использую postgresql. Встроенная функция полнотекстового поиска в этих хранилищах данных имеет некоторые проблемы и не масштабируется.

Самая распространенная (массив данных, высокая производительность, простой, распределенный, отказоустойчивый, rest api) поисковая система с открытым исходным кодом - это elasticsearch , вы можете думать о ней как о распределенной lucene. Solr лучше, чем elascticsearch. использование raw lucene / sphinx не масштабируется.

На вашем месте я, вероятно, выбрал бы одно из хранилищ данных и использовал бы elasticsearh для индексации и синхронизации их на моем уровне доступа к данным (необходимо изменить индексы при вставке / обновлении / удалении базы данных).

С уважением

8
ответ дан 5 December 2019 в 17:32
поделиться

Пол, добро пожаловать в SO. Это не совсем подходящее место, чтобы заставить кого-то работать на вас, но вот мой совет:

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

Поскольку это данные о продукте, я могу представить, что ваш поиск - это полнотекстовый поиск, поэтому списывать MySql не преждевременно. Sphinx великолепен, но немного неудобно настраивать. Преимущество заключается в том, что он имеет возможность индексировать напрямую из mysql, и вы также можете взаимодействовать с ним с любыми соединителями / привязками mysql, которые вы используете в своем приложении, потому что он знает, как разговаривать с протоколом mysql.

Я бы сказал, что cassandra, couch и mongo - это не совсем то, что вы ищете, ни один из них не индексирует текст, как sphinx. Вы можете накатывать на них свои собственные, но это будет довольно контрпродуктивно.

Я никогда не работал с lucene, но слышал хорошие отзывы, это решение, аналогичное Sphinx afaik.

удачи

2
ответ дан 5 December 2019 в 17:32
поделиться
Другие вопросы по тегам:

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