MST

星途 面试题库

面试题:MongoDB持久性保证中写关注(Write Concern)的常见级别及应用场景

请阐述MongoDB中写关注(Write Concern)的常见级别,如w:1、w:majority等,以及它们各自适用的应用场景。
49.3万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

w:1

  • 含义:表示只要写入操作在主节点上完成,就认为写入成功并返回。即使在写入主节点后,数据还未来得及同步到从节点,主节点就发生故障,该写入操作也被视为成功。
  • 适用场景:适用于对写入性能要求极高,且能容忍一定数据丢失风险的场景。例如一些日志记录、实时统计等应用场景,少量的数据丢失不会对整体业务逻辑造成严重影响。

w:majority

  • 含义:表示写入操作需要等待大多数(超过一半)的副本节点确认写入成功后,才认为写入成功并返回。这样可以保证在大多数节点上数据是一致的,即使主节点发生故障,也能从多数节点中选举出新的主节点,且数据不会丢失。
  • 适用场景:适用于对数据一致性要求较高,同时对写入性能有一定要求的场景。例如电商订单系统、金融交易记录等场景,数据的一致性至关重要,不能出现数据丢失或不一致的情况。

w:“tag”

  • 含义:这里的“tag”是指副本集成员的标签,通过指定标签,可以让写入操作只在具有特定标签的副本集成员上确认写入成功。例如,设置w:“dc1”,表示写入操作需要在带有“dc1”标签的节点确认成功后才返回。
  • 适用场景:适用于需要将数据写入特定数据中心或特定类型节点的场景。比如,某些应用可能希望将数据优先写入特定地理位置的数据中心,以满足合规性要求或提高本地读取性能。

w:0

  • 含义:表示写入操作不等待任何节点的确认,直接返回。这种情况下,客户端无法得知写入是否成功,写入操作可能在网络传输过程中丢失。
  • 适用场景:适用于对数据一致性和可靠性要求极低,只追求极高写入速度的场景。例如一些用于收集海量但非关键数据的场景,如网站的实时流量统计等,即使少量数据丢失也不影响整体统计结果。