12

我对 NoSql 数据库很陌生,但我真的很喜欢带有官方 c# 驱动程序的 MongoDB。它目前是我正在编写的 MVC 应用程序的后端,其简单性和速度使我的生活更轻松。

但是,我在应用程序中已经到了需要非常好的搜索的地步。我曾经使用 Solr,但对 ElasticSearch 很感兴趣。

ElasticSearch,据我所知(从非常肤浅的层面),可以做 MongoDB 作为文档数据库所能做的一切。

所以,如果我已经在使用 NoSql 数据库,并且我需要很好的搜索,那么 Mongo 有什么意义吗?用例是什么?

Mongo更快吗?更容易使用?是 BSON 数据类型和驱动程序吗?为什么不使用 ElasticSearch 作为我的数据库?

我目前正在使用 AppHarbor 并且喜欢“The Cloud”。我讨厌 IT,只想专注于我的应用程序。话虽如此,到目前为止我看到的唯一优势是:

  • 已经有许多“云”MongoDB 提供商。使用 ElasticSearch,我必须自己设置。
4

1 回答 1

3

这个问题问得好。我问过自己同样的问题,并想出了以下答案。

  1. ElasticSearch 没有备份数据的好方法。例如,快速搜索“ElasticSearch 备份”和“mongodb 备份”。MongoDB 有关于如何备份数据的工具和文档。虽然有关于如何备份 ElasticSearch 数据的文档,但该文档似乎并不成熟。
  2. 一般来说,MongoDB 有更好的文档。特别是它的管理文档比 ElasticSearch 要好得多。
  3. MongoDB 提供商业支持。您目前可能不关心商业支持,但很高兴知道它可用。
  4. MongoDB 内置了 MapReduce,而 ElasticSearch 没有。这可能不是什么大事,但值得注意。

我个人的看法是,如果您不能承受丢失数据的损失,我不会使用 ElasticSearch。我可以看到使用 ElasticSearch 作为需要实时分析的主要数据存储,但没有任何长期数据保留要求。否则,我建议同时使用 MongoDB 和 ElasticSearch。ElasticSearch 有一个 MongoDB River 插件。这使得自动更新 ElasticSearch 索引变得非常容易。

于 2012-08-17T15:34:37.247 回答