我正在构建一个社交网络应用程序,我非常关心下一件事。在mongoDB中会发生什么,许多用户(让我们假设数百万)同时尝试修改同一个文档。是否存在任何不匹配,或忽略的查询或任何意外行为?
实际例子: 2个收藏:'帖子'并且'喜欢' 帖子将有字段ID |名字|信息| numberOfLikes 喜欢将有字段id |发布| FROMUSER
当假设数百万用户喜欢这个帖子时,就像对象一样出现在喜欢的内容中。集合和业务逻辑自动增加numberOfLikes for post。我想如果有大量用户试图修改那些帖子同时计数时会发生冲突。
答案 0 :(得分:1)
数据库有适当的机制来防止这种情况。您可以“锁定”各种逻辑结构,因此无论您的交易数量多少,都可以确保您的数据完好无损。
请参阅以下内容:
答案 1 :(得分:0)
在MongoDB中,操作在文档级别是原子的。 见http://docs.mongodb.org/manual/core/data-modeling-introduction/#atomicity-of-write-operations
答案 2 :(得分:0)
有几件事。
你说你正在建立一个社交应用程序,并期待数百万的喜欢和#34;"他们在同一时间。当然,在项目开始时考虑性能和扩展是很好的,但是你现在不打算构建下一个Facebook。
此外,您似乎希望将MongoDB用作此应用程序的主数据库,并且您似乎希望将其用作关系数据库。阅读有点偏见的文章Why You Should Never Use MongoDB。
我建议您使用关系数据库备份您的网站(这对于像&#34这样的查询也可能更好;此用户喜欢哪些帖子" 和& #34;此用户是否已经喜欢这篇文章" )并定期将其反正规化为MongoDB。