1

我正在构建一个社交网络应用程序,我非常关心接下来的事情。当在 mongoDB 中很多用户(假设数百万)尝试同时修改同一个文档时会发生什么。是否会出现任何不匹配、被忽略的查询或任何类型的意外行为?

实际示例:2 个集合:'posts' 和 'likes' 帖子将具有字段 id | 姓名 | 信息 | numberOfLikes likes 将有字段 id | 发布 | 来自用户

当假设有数百万用户喜欢帖子时,喜欢的对象会出现在“喜欢”集合中,并且业务逻辑会自动增加帖子的 numberOfLikes。我想,当大量用户同时尝试修改该帖子的点赞数时,是否会发生冲突。

4

3 回答 3

2

数据库有适当的机制来防止这种情况。您可以“锁定”各种逻辑结构,因此可以确保您的数据是完整的——无论您的交易数量如何。

见下文:

http://docs.mongodb.org/manual/faq/concurrency/

于 2015-07-27T10:39:31.917 回答
0

在 MongoDB 中,操作在文档级别是原子的。请参阅http://docs.mongodb.org/manual/core/data-modeling-introduction/#atomicity-of-write-operations

于 2015-07-27T10:40:08.030 回答
0

有几件事。

您是说您正在构建一个社交应用程序,并期望同时获得数百万的喜欢和“大量”的喜欢。当然,在项目开始时考虑性能和可扩展性是很好的,但你现在不打算构建下一个 Facebook。

此外,您似乎希望将 MongoDB 用作此应用程序的主数据库,并且您似乎希望将其用作关系数据库。阅读标题有点偏颇的文章Why You Should Never Use MongoDB

我建议使用关系数据库支持您的网站(这对于诸如“此用户喜欢哪些帖子”“此用户是否已经喜欢此帖子”之类的查询也可能更好)并定期将其非规范化到 MongoDB 中。

于 2015-07-27T10:54:44.433 回答