Read Concern(读关注)
在 MongoDB 中,Read Concern 通常用于控制读操作的一致性级别,包括以下几个级别:
- local:默认级别,读取数据时只保证返回当前节点上最新的数据版本。
- available:读取数据时尝试读取当前节点上的最新数据版本,如果当前节点无法提供最新数据版本,将会从其他节点读取数据。
- majority:读取数据时保证读取到多数节点上的最新数据版本,确保数据的强一致性。
Read Concern行为优缺点
级别 | 优点 | 缺点 |
---|---|---|
local | 读取数据速度快,不会受到数据同步的影响 | 数据可能不是最新的, 可能会出现读取到过期数据的情况 |
available | 读取到的数据是比较新的, 可以从多个节点获取数据,提高可用性 | 读取的数据可能不是最新的, 可能会出现数据不一致的情况 |
majority | 读取到的数据是最新的, 可以保证数据的强一致性 | 读取数据的速度较慢, 可能会出现阻塞等待的情况 |
Write Concern(写关注)
在 MongoDB 中,Write Concern 通常用于控制写操作的确认级别,包括以下几个级别:
- majority:默认级别,确保写操作在多数节点上写入成功。
- acknowledged:确保写操作在至少一个节点上写入成功。
- unacknowledged:不等待写操作完成的确认,仅发送写操作请求。
- wtimeout:设置写操作确认的超时时间。
Write Concern行为优缺点
级别 | 优点 | 缺点 |
---|---|---|
majority | 确保写入数据的可靠性和一致性,适合数据一致性要求较高的场景 | 写入数据的速度较慢, 可能会出现阻塞等待的情况 |
acknowledged | 写入数据的速度较快, 确保写入操作在至少一个节点上写入成功 | 可能会出现部分写入数据丢失的情况 |
unacknowledged | 写入数据的速度最快,不等待写入确认 | 可能会出现写入数据丢失的情况 |
wtimeout | 可以设置写入操作确认的超时时间 | 写入数据的速度较慢, 可能会出现阻塞等待的情况 |