通常,希望将多个操作组合到单个事务中,以便一起提交或回滚。 在数据库原则中,事务通常实现四个关键 ACID 原则。 ACID 代表:
- 原子性:事务要么完全完成,要么完全不完成。
- 一致性:数据库从一个一致状态过渡到另一个状态。
- 隔离:单个事务不受并发事务干扰。
- 持久性:完成的事务是永久性的,确保数据保持一致,即使在系统故障期间也是如此。
数据库管理中的 ACID 原则可确保可靠地处理事务。 Azure DocumentDB 实现了这些原则,使您能够为多个操作创建事务。
先决条件
Azure 订阅服务
- 如果没有 Azure 订阅,请创建 试用版
现有的 Azure DocumentDB 群集
- 如果没有群集,请 创建新群集
创建交易
使用所选开发人员语言中的相应方法创建新事务。 这些方法通常包括一些包装机制,用于将多个事务组合在一起,以及提交事务的方法。
注释
本部分中的示例假定你有一个名为 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();