我们正在将Mongo DB集成为基于.NET的系统中的数据库。
由于我们的系统需要数据一致性,因此我们需要支持事务。
Mongo DB v4.0支持事务,但是为了将其与.NET System.Transaction机制集成,似乎我们需要为Mongo实现资源管理器,该资源管理器可以是单阶段(IPromotableSinglePhaseNotification)或两阶段(IEnlistNotification)提交。
- Mongo C#驱动程序公开了一个看起来像单阶段提交API的StartTransaction(),Commit()和Rollback()API,因此看起来我们的资源管理器应该实现单相接口。
另一方面,我们需要支持分布式事务,因此适合两阶段提交机制,但是在这种情况下,第一阶段(准备)的实现应该是什么?
- 如果有多个Mongo交易参与者(例如分布式交易),如果其中一个参与者在Mongo驱动程序的Commit()API上失败,会发生什么情况?我应该对所有以前已经承诺的参与者做什么?