Node.js 逻辑分离:搜索、数据库和;应用

Node.js 逻辑分离:搜索、数据库和;应用,node.js,mongodb,solr,full-text-search,redis,Node.js,Mongodb,Solr,Full Text Search,Redis,我正试着决定我要如何分解我的逻辑 我将我的主要业务逻辑放在Node.js/Express中,我一直在使用Mongo作为我的数据库。这非常有效,但现在我需要实现一个真正强大的搜索系统,因为搜索是我网站最重要的功能之一。起初,我对Mongo和Coach提供的支持和集成的缺乏感到非常惊讶,但后来我意识到我正试图让一个数据库做一些它不适合做的事情 现在我正在考虑使用Solr或ElasticSearch,但它开始似乎能够执行Mongo可以执行的部分或大部分查询,只要我正确索引我的文档(根据它们的性质,我将

我正试着决定我要如何分解我的逻辑

我将我的主要业务逻辑放在Node.js/Express中,我一直在使用Mongo作为我的数据库。这非常有效,但现在我需要实现一个真正强大的搜索系统,因为搜索是我网站最重要的功能之一。起初,我对Mongo和Coach提供的支持和集成的缺乏感到非常惊讶,但后来我意识到我正试图让一个数据库做一些它不适合做的事情

现在我正在考虑使用Solr或ElasticSearch,但它开始似乎能够执行Mongo可以执行的部分或大部分查询,只要我正确索引我的文档(根据它们的性质,我将索引几乎每个文档的每个属性)。也就是说,我在想,也许我应该使用一些非常简单的东西,比如Redis,然后依赖一个强大的搜索工具,比如Solr/ElasticSearch

这似乎是一个明智的选择吗?此外,为什么没有用于Solr、Lucene或ElasticSearch的Nodejs模块?

MongoDB+Solr(甚至更好的ElasticSearch)对于将搜索作为最重要功能之一的应用程序来说,听起来是一个合理的选择。MongoDB不是为全文搜索而设计的,Solr(Lucene)是。Solr并不是一个记录系统(MongoDB是)


MongoDB vs Redis?如果没有规定任何要求,很难说。我会选择mongo,至少是为了特别的查询。在任何情况下,请确保您研究了名为的精彩系列博客文章,包括和

我还刚刚发现,这似乎是适合我的解决方案,但我还是对一些经验丰富的架构师的智慧感兴趣。你主要只需要一个HTTP客户端库(最好是一个可以连接池的库),你可以自己创建一个solr查询类(别忘了做URL和solr char转义).MongoDB vs Redis,如果你意识到你需要在Mongo中使用id和代码连接(以避免重复记录和避免疯狂更新),你会选择哪种方式?@AgentZebra不确定你所说的重复记录和疯狂更新是什么意思,我猜可能是试图在一次“交易”中更新多个文档?嗨@milan,没错。不适合你吗?这是否表明数据库模型/模式应该更改?或者您需要一个不同的数据模型/db,可能是graph(neo4j)或relational(postgresql)?