0

在我们希望执行多个更新操作的情况下,在 MongoDB 中是原子的和隔离的,以便其他进程或线程在这些进程或线程正在处理时不会获取数据。我知道仅在文档级别支持原子性和隔离性,并且在数据库级别维护锁。在上述情况下,我有以下查询:

  • 有没有办法我们可以单独批量进行多次更新,因为“$isolated”不适用于集群,此外,findAndModify() 适用于单个文档?
  • 我们如何进行并发控制来实现上述情况?
  • 我们可以在这里使用两阶段提交,通过维护一个事务,它会以隔离的方式执行吗?
  • 在探索过程中,我发现 MongoMVCC 用于多版本并发控制,如果有人使用过它,请分享您对上述用例的经验。
4

1 回答 1

1

有没有办法我们可以单独批量进行多次更新,因为 $isloated 不适用于分片,此外,findAndModify() 适用于单个文档?

不,$isolated是最接近的东西

我们如何进行并发控制来实现上述情况?

你不能,MongoDB 自己的并发性是通过分离 ACID 的 I 来工作的。

我们可以在这里使用两阶段提交,通过在这里维护一个事务,它会以隔离的方式执行吗?

两阶段提交,不是服务器端的隔离事务,将不起作用。

在探索过程中,我发现 MongoMVCC 用于多版本并发控制,如果有人使用过它,请分享您对上述用例的经验。

这是在 MongoDB 之上用 Java 编写的,它实际上不是 MongoDB 本身,不能代替 ACID 中的 I。此外,MVCC 更多的是关于无锁数据库,而不是孤立的操作。

于 2013-10-01T12:46:35.820 回答