在这种情况下,我们希望执行多个更新操作,在MongoDB中是原子的,并且是隔离的,这样其他进程或线程就不会在这些进程中获得数据。我知道只在文档级别支持原子性和隔离,也在db级别维护锁。
发布于 2013-10-01 12:46:35
是否有一种方法可以独立地、批量地进行这样的多个更新,因为$isloated不适用于shard,而且,findAndModify()对单个文档有效吗?
不,$isolated是最接近的
我们如何才能做到并发控制来实现上述情况?
你不能,MongoDB自己的并发性是通过分解ACID的I来实现的。
我们能否在这里使用两阶段提交,通过在这里维护一个事务,它会不会是孤立的执行方式?
两阶段提交(不是服务器端的孤立事务)将无法工作。
在探索时,我发现了用于多版本并发控制的MongoMVCC,如果有人使用过它,请与您分享有关上述用例的经验。
这是在MongoDB的基础上用Java编写的,它实际上不是MongoDB本身,不能在ACID中替换I。而且,MVCC更多的是关于无锁数据库,而不是孤立的操作。
https://stackoverflow.com/questions/19116456
复制相似问题