MongoDB事务的理解和思考

  1. 3.2版本开始引入Read Concern,解决了脏读,支持Read Commit

  2. 3.6版本引入Session,支持多个请求共享上下文,为后续的事务支持做准备

  3. 4.0支持多行事务,但4.0的事务只是个过渡的版本

  4. 4.2开始支持多文档事务

1. Mongo的架构

复制集架构

这是最基本的分布式架构,有一个主节点和两个节点。

主节点一般负责写入的功能。用户往主节点中写入数据时,主节点会更新数据表,并将操作信息生成一条oplog,写入到日志文件中。用户可以通过指定writeConcern来控制写入的行为。

从节点一般都只提供读功能,可以用于读写分离。从节点会定时轮询读取 oplog 日志,根据日志内容同步更新数据表,保持与主节点一致。更新完成后,在返回更新时间戳给到主节点。

2. Mongo事务


五种一致性级别

一致性级别

语义

local

从本地读取最新数据,但不保证该数据已被写入大多数副本集成员。数据可能会被回滚

available

从本地读取最新数据,但不保证该数据已被写入大多数副本集成员。数据可能会被回滚

majority

读取已经write majority 的数据。保证数据不会被回滚,但是不一定是本地的最新数据

linearizable

读取已经write majority的数据,但会等待在读之前所有的write majarity确认

snapshot

与关系型数据库中的快照隔离级别语义一致

2.1. write concern

要了解一致性,首先要了解数据是怎么写入的。MongoDB的write concern包含下面3个参数:

参数

含义

取值

w

写操作需要复制并应用到多少个副本集成员才能返回成功

0:不关心成功,立即返回
1:写主成功则返回
majarity:写大多数成功,才返回。比如3个节点中,写2个成功

j

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值