【发布时间】:2020-06-19 10:34:04
【问题描述】:
我是 MongoDb 的新手,我正在创建一个应用程序来管理一个非常大的项目(资源)列表,并且该应用程序应该为每个资源管理一种预订。
我的想法是在资源文档中嵌入预订文档,为了避免并发问题我需要在预订过程中锁定资源。
我看到 MongoDB 允许在集合级别锁定,但这会对预订功能造成瓶颈,因为在当前预订正在进行之前,将查看集合中的所有资源,因此对于大量用户和大量的资源,此解决方案的性能将很差。 除此之外,如果预订资源发生死锁,所有资源都将被锁定。
是否有其他解决方案或最佳实践来提高此用例的性能和可扩展性? 一个可能的解决方案应该是锁定不是在集合级别,而是在文档级别(我的示例中的资源),这样预订资源的用户不会锁定另一个用户预订另一个资源,即使(也在这个case)我不确定最终结果,因为写入命令不是并行执行的:我想我可能还需要一个服务器集群来并行管理多个写入。
【问题讨论】:
-
复习docs.mongodb.com/manual/faq/concurrency,你对mongodb的理解不准确。
标签: mongodb concurrency locks