3

我正在考虑将 MongoDB 用于 Web 应用程序,但我已经读到在某些情况下不推荐使用它。我想知道我的项目会是其中一种情况。

这是我系统中实体的简要概述-

  • 有具有标准用户详细信息属性的用户
  • 每个用户可以有多个收据,一个收据只能有一个用户
  • 收据包含许多产品
  • 产品具有标准的产品详细信息属性
  • 用户可以有多个好友,每个好友本身就是一个用户
  • 用户可以对产品进行评论
  • 会有一个声誉系统,就像 stackoverflow 上的那样,用户可以在其中获得积分和徽章

如您所见,有许多实体之间存在各种关系。数据完整性很重要。这种模式适合 MongoDB 吗?

4

1 回答 1

5

您的数据似乎是非常相关的,而不是面向文档的。

您还指出数据完整性是一项重要要求(我假设您的意思是不同实体之间的参照完整性)。当实体没有存储在同一个文档中时,在 MongoDB 中很难保证它们之间的完整性。此外,MongoDB 不能强制执行任何约束(字段值的唯一性除外)。

总体而言,您似乎也有一种非常相关的思维模式,这将使您难以使用 MongoDB 的用途。

出于这些原因,我建议您坚持使用关系数据库。

您首先考虑使用 MongoDB 的原因可能是因为您听说它速度快且可扩展性好。是的,它速度很快,并且可以很好地扩展,但这只是因为它不强制引用完整性并且因为它不执行表连接。当您需要这些功能并因此不得不寻找丑陋的变通方法来模拟它们时,MongoDB 将不再那么快。

于 2013-04-02T13:32:29.920 回答