mongodb - MongoDB 是否适合某些用例?

标签 mongodb nosql

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

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

  • 有具有标准用户详细信息属性的用户
  • 每个User可以有多个Receipt,一个Receipt只能有一个User
  • 收据包含许多产品
  • 产品具有标准的产品详细信息属性
  • 用户可以有很多 friend ,每个 friend 本身就是一个用户
  • 用户可以对产品进行评论
  • 将有一个像 stackoverflow 上的这样的声誉系统,用户可以在其中赚取积分和徽章

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

最佳答案

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

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

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

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

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

关于mongodb - MongoDB 是否适合某些用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15759420/

相关文章:

node.js - 类型错误 : Cannot read property '_id' of undefined body-parser is installed and required

nosql - couchbase 查询返回空答案

java - Java 使用 Cassandra 的最佳 api/库是什么?

数据结构不断增长的 MongoDB 性能

python - 使用 Django 和 Titan 为 nosql 创建 REST 的最佳方法是什么?

nosql - DynamoDB - 如何使用邻接列表模式处理更新?

python : getting into imbedded document

java - 只返回某些字段的查询?

sql - MongoDB 比 SQL Server 慢

mongodb - mongo查询多个条件