我正在考虑将 MongoDB 用于 Web 应用程序,但我了解到在某些情况下不推荐使用它。我想知道我的项目是否属于其中一种情况。
这是我系统中实体的简要概述 -
- 有具有标准用户详细信息属性的用户
- 每个User可以有多个Receipt,一个Receipt只能有一个User
- 收据包含许多产品
- 产品具有标准的产品详细信息属性
- 用户可以有很多 friend ,每个 friend 本身就是一个用户
- 用户可以对产品进行评论
- 将有一个像 stackoverflow 上的这样的声誉系统,用户可以在其中赚取积分和徽章
如您所见,有许多实体彼此之间存在各种关系。数据完整性很重要。这种模式适用于 MongoDB 吗?
最佳答案
您的数据似乎是非常相关的,而不是面向文档的。
您还指出数据完整性是一项重要要求(我假设您指的是不同实体之间的参照完整性)。当实体不存储在同一个文档中时,MongoDB 中很难保证它们之间的完整性。此外,MongoDB 不能强制执行任何约束(字段值的唯一性除外)。
总体而言,您似乎也有一种非常相关的思维模式,这将使您难以按照预期的方式使用 MongoDB。
出于这些原因,我建议您坚持使用关系数据库。
您最初考虑使用 MongoDB 的原因很可能是因为您听说它速度快且扩展性好。是的,它速度很快而且扩展性很好,但这只是因为它不强制引用完整性 并且因为它不执行表连接。当您需要这些功能并因此不得不寻找丑陋的变通方法来模拟它们时,MongoDB 将不再那么快。
关于mongodb - MongoDB 是否适合某些用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15759420/