MongoDB可靠吗?

时间:2010-08-17 17:25:13

标签: mongodb nosql

我正在开发一个约会网站,我正在考虑使用NoSQL数据库来存储配置文件等。我目前正在研究MongoDB,到目前为止,我感到非常高兴。唯一的担心是我在不同的网站上看到MongoDB不可靠且不好。

我研究了NoSQL的替代方案,发现没有人完全符合我的具体标准:

  1. 易于学习和使用。

  2. 开箱即用与PHP完全兼容。

  3. 快速且记录良好。

  4. 您如何看待,我是否正确使用MongoDB或者是浪费时间?

    感谢所有关于此事的意见!

9 个答案:

答案 0 :(得分:27)

我为我的社交服务创业公司研究了MongoDB,这绝对值得考虑。 MongoDB具有强大的功能集,使其成为RDBMS解决方案的现实和强大的替代品。

其中:

  1. 文档数据库:您的大部分数据都嵌入在文档中,因此,为了获取有关某人的数据,您不必加入多个表。因此,许多用例的性能更好。
  2. 强查询语言:尽管不是RDBMS,但MongoDB有一种非常强大的查询语言,可以让您从文档或文档中获取非常具体或非常通用的内容。使用javascript查询数据库,因此除了查询(例如函数,计算)之外,您还可以执行更多操作。
  3. Sharding&复制:分片允许应用程序水平缩放而不是垂直缩放。换句话说,更小的服务器而不是一个巨大的服务器。复制为您提供多种配置(例如主/从)的故障转移安全性。
  4. 强大的索引:我最初对MongoDB感兴趣,因为它允许开箱即用的地理空间索引,但它也有许多其他索引配置。
  5. 跨平台: MongoDB有很多drivers
  6. 至于文件,没有泛滥,但这是因为这个项目仅在2009年开始;很快就会有更多。但是,您可以开始使用您的项目。除此之外,您还可以查看Kyle Banker的MongoDB in Action资源。

    最后,我在MongoDB之前只有RDMBS的经验,不知道javascript或json,但仍然发现它非常简单和优雅。

答案 1 :(得分:8)

MongoDB and CouchDB - Fit for Production?

上考虑这个相关问题

MongoDB has a showcase of Production Deployments也是如此。一定要分析MongoDB的用途,而不是公司的大小。

答案 2 :(得分:7)

任何软件都可靠或不可靠。 MongoDB具有副本集,可为您提供硬件故障转移功能。您可以定期进行备份,这可以为您提供恢复间隔,并且您可以获得分片,这可以为您提供一些冗余,特别是与副本集结合使用时。

问题不在于技术是否可靠,问题在于您是否有适合您所选平台的明确定义的备份和恢复计划。

如果MongoDB满足您的需求,那么您就做出了正确的选择。只需确保调查您可以采取哪些措施来提高可靠性。

答案 3 :(得分:5)

如果它对Foursquare足够好,那么对你来说最有可能。

答案 4 :(得分:4)

我来自RDBMS背景(12年),过去6个月一直在研究NoSQL选项。对于您的场景,MongoDB听起来是个不错的选择。我从那些与MongoDB合作过一段时间的人那里听到的是,你应该遵循这些最佳实践:

  1. 保持密钥大小
  2. 评估(并可能添加)索引以加快查询速度
  3. 注意架构(我知道'无架构'数据库似乎很奇怪,但我已多次听到
  4. 使用副本集
  5. 这是来自MongoDB LA用户组的最佳实践演讲的video,我觉得很有用

答案 5 :(得分:2)

10gen,MongoDB背后的公司提供官方PHP驱动程序。 正如Jeremiah所说,他们在上一版本(1.6.0)中实现了副本集,并且他们已经调试了它(1.6.1和下一版本在几周内:1.6.2)。

而且,公司和社区的免费支持非常快速有效(“免费”是指Google群组中的问题:http://groups.google.com/group/mongodb-user?pli=1

答案 6 :(得分:2)

嗯,关于可靠性的另一点:

  • 如果您遇到任何关键问题,社区反应极快。
  • 您需要担心您对“可靠性”的期望:您是否需要保证安全地存储数据,从不会损坏?
    • 在这种情况下,您必须比较购买可靠硬件和部署MongoDB副本集的成本
  • 您的意思是拥有高度可用的服务吗?
  • MongoDB有一些青年问题,我不能说相反。但这绝对不是浪费时间,也许是长期解决方案。

答案 7 :(得分:2)

这取决于您需要的可靠性。 Mongo读取非常可靠 - 它具有强大的可用性和分片功能。

OTOH,Mongo写的不可靠。虽然大多数都通过,但永远不能保证更新成功与否,您必须手动查询数据库以检查它是否成功。

因此,当您拥有更多读取而非绝对需要成功的写入时,最好使用Mongo。

答案 8 :(得分:0)

MongoDB将是一个不错的选择。我们评估并开始将MongoDB用于我们的业务用例。 MongoDB为我们提供了比Oracle更好的性能,而且它也很容易横向扩展。