Разделение логики: поиск, база данных и приложение - PullRequest
2 голосов
/ 05 января 2012

Я пытаюсь решить, как я хочу разделить свою логику.

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

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

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

1 Ответ

4 голосов
/ 06 января 2012

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

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

...