你当前正在访问 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 实现这些原则,使你能够为多个操作创建事务。
先决条件
- 现有的 Azure Cosmos DB for MongoDB vCore 群集。
- 如果没有 Azure 订阅,请免费创建一个帐户。
- 如果具有现有 Azure 订阅,则创建新的 Azure Cosmos DB for MongoDB vCore 群集。
创建事务
使用所选开发人员语言的适当方法创建新事务。 这些方法通常包括某种将多个事务组合在一起的包装机制,以及一种提交事务的方法。
注意
本节中的示例假定你有一个名为 collection
的集合变量。
使用
startSession()
为事务操作创建客户端会话。const transactionSession = client.startSession();
使用
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); });
使用
commitTransaction()
提交事务。transactionSession.commitTransaction();
使用
endSession()
结束事务会话。transactionSession.endSession();
回滚事务
有时,可能需要在提交事务之前撤消该事务。
使用现有的事务会话,通过
abortTransaction()
中止事务。transactionSession.abortTransaction();
结束事务会话。
transactionSession.endSession();