在我们希望执行多个更新操作的情况下,在MongoDB中是原子的并且处于隔离状态,以便其他进程或线程在这些操作正在进行时不会获取数据。我知道仅在文档级支持原子性和隔离这一事实,锁也维持在db级别。我在上面的情况下有以下查询:
答案 0 :(得分:1)
我们是否可以批量单独进行多次更新,因为$ isloated不适用于分片,而且,findAndModify()适用于单个文档?
不,$isolated
是最接近的事情
我们如何进行并发控制以实现上述情况?
你不能,MongoDB通过拆分ACID来实现并发工作。
我们可以在这里使用两阶段提交,通过在这里维护一个事务,它会被隔离的方式执行吗?
两阶段提交,不是服务器端的独立事务将无效。
在探索时我发现MongoMVCC用于多版本并发控制,如果有人使用它,请分享您对上述用例的体验。
这是用Java编写的,在MongoDB之上,实际上并不是MongoDB本身,也不能代替ACID中的I.此外,MVCC更多地是关于无锁数据库而不是孤立操作。