MongoDB是否适合某些用例?

son*_*oom 3 mongodb nosql

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

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

  • 有具有标准用户详细信息属性的用户
  • 每个用户可以有多个收据,一个收据只能有一个用户
  • 收据包含许多产品
  • 产品具有标准的产品详细信息属性
  • 用户可以有多个朋友,每个朋友本身就是一个用户
  • 用户可以对产品进行评论
  • 在Stackoverflow上将有一个类似信誉系统的系统,用户可以在该系统中获得积分和徽章

如您所见,有许多相互之间具有各种关系的实体。数据完整性很重要。这种类型的架构是否适合MongoDB?

Phi*_*ipp 5

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

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

您似乎总体上也具有非常相关的思维模式,这将使您难以利用MongoDB的用法。

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

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