2012-01-05 2 views
2

Я пытаюсь решить, как я хочу разделить мою логику.Разделение логики: поиск, база данных и приложение

Я размещаю свою основную бизнес-логику в Node.js/Express, и я использовал Mongo для своей базы данных. Это отлично работает, но теперь мне нужно реализовать действительно мощную поисковую систему, так как поиск - одна из самых важных функций моего сайта. Сначала я был очень поражен отсутствием поддержки и интеграции, которые предлагали Монго и Куш, но потом я понял, что пытался получить базу данных, чтобы сделать то, для чего это не было сделано.

Теперь я смотрю на использование Solr или ElasticSearch, но его начало кажется, что они способны даже выполнять некоторые или большинство запросов, которые может сделать Mongo, если я правильно индексирую документы (и их природа, я буду индексировать почти все свойства каждого документа). Так что, я думаю, может быть, мне нужно просто использовать что-то мертвое простое, как Redis, и полагаться на мощный инструмент поиска, например Solr/ElasticSearch.

Это кажется мудрым выбором? Кроме того, почему нет модулей Nodejs для Solr, Lucene или ElasticSearch?

+0

Я также нашел [RedBackJS] (http://redbackjs.com), который выглядит так, как будто это может быть правильным решением для меня, но опять же, меня интересует мудрость некоторых более опытных архитекторов. – cjroth

+0

Вам в основном нужна только клиентская библиотека HTTP (желательно одна, которая может объединять соединения), и вы можете самостоятельно создать класс запроса solr (не забудьте сделать URL и Solr char escaping). – aitchnyu

ответ

4

MongoDB + Solr (или даже лучше ElasticSearch) звучит как разумный выбор для приложения, которое имеет поиск как одну из наиболее важных функций. MongoDB не предназначен для полнотекстового поиска, Solr (Lucene) есть. И Solr не предназначен для системы записи (MongoDB is).

MongoDB vs Redis? Трудно сказать без каких-либо требований. Я бы выбрал монго, по крайней мере, ради специальных запросов. В любом случае, убедитесь, что вы изучили фантастическую серию сообщений в блоге под названием jepsen от Kyle Kingsbury, и были покрыты обоими mongodb и redis.

+0

MongoDB vs Redis, в каком направлении вы бы отказались, если бы поняли, что вам нужно будет использовать id в Mongo, а кодовые соединения (чтобы не дублировать записи и избегать безумных обновлений)? –

+0

@AgentZebra не уверен, что вы подразумеваете под дуп-рекордами и безумными обновлениями, возможно, возможно, пытается обновить несколько документов в «одной транзакции»? – milan

+0

Привет @milan, да точно. –

Смежные вопросы