翻译或纠错本页面
复制集的读与写¶
无论MongoDB是以单个节点 (i.e. “单节点” )或是复制集的形式运行,对于应用程序来说它都是透明的。
默认情况下,MongoDB的读请求将会在 主节点 上执行,并一直与最后一次写操作保持数据的 一致性 。
用户可以配置每一个连接的 复制集读选项 来让其将读请求发送到 从节点 上。
这种情况的出现一般与数据的 最终一致性 有关因为虽然从节点的数据集最终会与主节点一致,但当在从节点上进行读操作的时候,MongoDB不能保障数据的 严格一致性 。
为了确保从从节点上进行读操作时的数据一致性,我们可以配置 客户端 来确保写操作在应用到复制集中所有节点后才算成功完成。 参见 写关注 以获得更多信息。此外,这样的配置也可以在故障切换的时候防止 故障切换时的回滚 。
注解
在分片为复制集的 分片集群 中也需要注意读操作与写操作的操作语义。
- 复制集的安全写级别
安全写级别确保了应用程序写入MongoDB的操作的成功。
- 复制集读选项
应用程序通过指定 复制集读选项 来控制驱动对发送到复制集的读操作进行管理。
- 复制集读选项的生效流程
在复制集中,读操作可能有额外的语义或是表现。