Mongodb 模仿事务

本文探讨了在MongoDB早期版本中如何模拟事务,包括合并文档以实现原子性,通过日志校验确保一致性,以及利用二阶段提交来处理多文档操作。尽管存在局限性,如文档大小限制和验证滞后问题,这些方法为不支持事务的MongoDB提供了一定的解决方案。
摘要由CSDN通过智能技术生成

背景

数据库事务四要素:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
虽然Mongodb 4.0 已经支持事务,但是之前的版本并不支持;由于Mngodb的特性不允许多文档原子事务,为了有效避免该问题,就需要采取有效的方法替代。(mongodb 4.0的文档现在还在更新中,对4.0性能、灵活表示忧虑)

一、合并文档

将二段提交的多文档,合并为单一文档
但是局限性非常明显,文档不能过大,很多场景下显得笨重
在典型的转账问题上,只能是“二段提交“

二、日志校验

最笨的方法是对所有的日志进行统计校验
缺点:验证滞后性
优化方法:分段校验,添加版本记录,一段时间校验一次,减少重复校验,提高效率

三、二阶段提交

在Mongo 中 不可能单个 update 来完成操作,为了满足“事务“需求,一般来说最好的方法是在数据模型上模仿事务
二阶段提交可以分为:预提交阶段(准备阶段)提交阶段

Created with Raphaël 2.1.2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值