【问题标题】:Is MongoDB reliable? [closed]MongoDB可靠吗? [关闭]
【发布时间】:2010-08-17 17:25:12
【问题描述】:

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

我查看了 NoSQL 替代方案,发现没有一个完全符合我的特定标准:

  1. 易于学习和使用。

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

  3. 快速且有据可查。

你觉得,我在做 MongoDB 的正确做法还是浪费时间?

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

【问题讨论】:

  • 任何软件,尤其是适用于“宗教”情绪的软件(例如 viemacs)都会受到批评。你怎么知道“不同的网站”是可靠的? (我不(故意)使用 MongoDB 或其亲属,所以对此事没有意见)。
  • 对于其他易于学习的 NoSQL 数据库,我喜欢 Redis 和 memcachedb

标签: mongodb nosql


【解决方案1】:

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

其中:

  1. 文档数据库:您的大部分数据都嵌入在文档中,因此为了获取有关某个人的数据,您不必连接多个表。因此,许多用例的性能更好。
  2. 强查询语言: 尽管不是关系型数据库管理系统,MongoDB 有一个非常强大的查询语言,它允许您从一个或多个文档中获取非常具体或非常一般的内容。使用 javascript 查询数据库,因此您可以在查询之外做更多事情(例如函数、计算)。
  3. 分片和复制:分片允许您的应用程序水平扩展而不是垂直扩展。换句话说,更多的小型服务器而不是一台大型服务器。复制为您提供多种配置(例如主/从)的故障转移安全性。
  4. 强大的索引:我最初对 MongoDB 很感兴趣,因为它允许 geo-spatial 开箱即用的索引,但它还有许多其他索引配置。
  5. 跨平台: MongoDB 有很多 drivers

关于文档,没有泛滥,但那是因为这个项目是在 2009 年才开始的;很快就会有更多。但是,您的项目已经足够开始了。除此之外,您还可以查看 Kyle Banker 的 MongoDB in Action,这是很好的资源。

最后,我在 MongoDB 之前只使用过 RDMBS,不懂 javascript 或 json,但仍然觉得它非常简单和优雅。

【讨论】:

    【解决方案2】:

    MongoDB and CouchDB - Fit for Production? 上考虑这个相关问题

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

    【讨论】:

      【解决方案3】:

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

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

      如果 MongoDB 满足您的需求,那么您就是正确的选择。请务必调查您可以采取哪些措施来提高可靠性。

      【讨论】:

        【解决方案4】:

        如果它对 Foursquare 来说足够好,那么它很可能对你来说就足够好了。

        【讨论】:

          【解决方案5】:

          我拥有 RDBMS 背景(12 年),过去 6 个月一直在研究 NoSQL 选项。对于您的场景,MongoDB 听起来是一个不错的选择。我从那些在生产环境中使用 MongoDB 一段时间的人那里听到的是,您应该遵循以下最佳实践:

          1. 保持较小的密钥大小
          2. 评估(并可能添加)索引以加快查询速度
          3. 注意架构(我知道“无架构”数据库似乎很奇怪,但我已经听过好几次了
          4. 使用副本集

          这是来自 MongoDB LA 用户组的最佳实践演讲 video,我觉得很有用

          【讨论】:

            【解决方案6】:

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

            最重要的是,公司和社区的免费支持非常快速和高效(我所说的“免费”是指关于 google 群组的问题:http://groups.google.com/group/mongodb-user?pli=1

            【讨论】:

              【解决方案7】:

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

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

              【讨论】:

                【解决方案8】:

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

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

                因此,当您的读取次数多于写入次数时,最好使用 Mongo。

                【讨论】:

                  【解决方案9】:

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

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2011-03-15
                    • 2015-03-14
                    • 1970-01-01
                    • 2014-02-18
                    • 2011-04-23
                    • 1970-01-01
                    • 2012-01-10
                    • 1970-01-01
                    相关资源
                    最近更新 更多