Transactions 2阶段提交实现
我试图在文档数据库上实现两阶段提交,该数据库只支持使用插入数据上的事务信息进行单阶段提交 我理解2阶段提交背后的理论,但在实践中存在一些障碍 假设有一个定义了唯一ID的集合,事务包括更新文档的多个字段。 因此,为了在回滚时保存旧数据,我不能覆盖现有文档,但需要添加一个新文档并用事务ID标记它: 解决方案1: 准备阶段:Transactions 2阶段提交实现,transactions,unique-key,document-database,2phase-commit,Transactions,Unique Key,Document Database,2phase Commit,我试图在文档数据库上实现两阶段提交,该数据库只支持使用插入数据上的事务信息进行单阶段提交 我理解2阶段提交背后的理论,但在实践中存在一些障碍 假设有一个定义了唯一ID的集合,事务包括更新文档的多个字段。 因此,为了在回滚时保存旧数据,我不能覆盖现有文档,但需要添加一个新文档并用事务ID标记它: 解决方案1: 准备阶段: 使用更新的字段将新文档插入到主集合中,并使用当前事务ID对其进行标记 在提交之前,将旧文档标记为已删除,并使用当前事务ID对其进行标记 提交阶段: 从添加(更新)的文档中删除事务
但是,我不能允许在提交阶段发生此错误,因为为时已晚,我希望唯一密钥约束在准备阶段失败 那么,实现两阶段提交机制并避免这些问题的正确方法是什么