你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure Cosmos DB for MongoDB vCore 中,将多个操作分组到事务中

适用对象: MongoDB vCore

通常需要将多个操作分组到单个事务中,以便一起提交或回滚。 在数据库原则中,事务通常实现四个关键 ACID 原则。 ACID 代表:

  • 原子性:事务完全完成或完全不完成。
  • 一致性:数据库从一种一致状态转换为另一种一致状态。
  • 隔离:单个事务与其他同时进行的事务相互隔离。
  • 持久性:完成的事务是永久性的,将确保数据即使在系统故障期间也保持一致。

数据库管理中的 ACID 原则可确保可靠地处理事务。 Azure Cosmos DB for MongoDB vCore 实现这些原则,使你能够为多个操作创建事务。

先决条件

创建事务

使用所选开发人员语言的适当方法创建新事务。 这些方法通常包括某种将多个事务组合在一起的包装机制,以及一种提交事务的方法。

注意

本节中的示例假定你有一个名为 collection 的集合变量。

  1. 使用 startSession() 为事务操作创建客户端会话。

    const transactionSession = client.startSession();
    
  2. 使用 withTransaction() 创建事务,并将所有相关事务操作置于回调中。

    await transactionSession.withTransaction(async () => {
        await collection.insertOne({ name: "Coolarn shirt", price: 38.00 }, transactionSession);
        await collection.insertOne({ name: "Coolarn shirt button", price: 1.50 }, transactionSession);
    });
    
  3. 使用 commitTransaction() 提交事务。

    transactionSession.commitTransaction();
    
  4. 使用 endSession() 结束事务会话。

    transactionSession.endSession();
    

回滚事务

有时,可能需要在提交事务之前撤消该事务。

  1. 使用现有的事务会话,通过 abortTransaction() 中止事务。

    transactionSession.abortTransaction();
    
  2. 结束事务会话。

    transactionSession.endSession();
    

下一步