分布式写操作

一、分片集群的写操作

对于分片集群的分片集合,mongos决定写操作从应用到负责将数据集的特定部分的分片。mongos用集群元数据从配置数据库路由写操作到合适的分片。


一个分片集群图

MongoDB根据分片键的值在一个分片集合内分割数据到一定范围。然后,MongoDB分步这些数据块到分片。分片键决定块到分片的分配。在一个集群里这个能影响写操作的性能。

  重要提示:
  影响单个文件的更新操作必须包括分片键或_id字段。在某些情况下,如果它们具有分片键,更新影响多个文档是更有效的,但能传播到所有的分片。

如果分片键的值增加或减少在针对单一分片的每一个的插入,所有的插入操作。其结果是,单个分片的容量成为限制分片集群的插入的容量。

更多信息,查看分片集群教程和在MongoDB中批量插入。

二、在副本集上的写操作

在副本集,所有的写操作进入设置的主,它应用写操作然后记录写操作在主的操作日志或oplog。oplog是对数据集操作的可再现序列。设备的从成员用一个异步的进程不断复制oplog和应用操作到它自身。


读和写到主的默认路线图

大量的写操作,特别是批量操作,可能造成在足够的速度下从成员应用从主复制操作困难的情况。这可能导致从成员的状态跟不上主。从成员显著落后于主为副本集的正常操作出现问题。尤其是在故障转移回滚的形式以及一般的读一致性。

为了避免这个问题,你可以定义写关注每100或1000个操作从副本集到其它成员[1]的写操作返回确认。这提供了一个机会让从赶上主。写关注可以减缓写操作的整体进展,但保证了从相对于主的状态保持大体上的一致性。


用w:2水平的写关注写操作到副本集或写操作到主和至少一个的从。

副本集和写操作的更多信息,查看副本已确认,oplog大小和改变oplog大小。


 [1]间歇性地发出一个写关注用一个或多数的一个w值将放缓写入流量的吞吐量。无论如何,这种做法将允许从保持与主的当前状态一致。
 在版本2.6的改变:在主/从部署,MongoDB支持“majority”等同于在早期版本MongoDB的w: 1,在主从部署里“majority”产生一个错误。

京ICP备14008139号-1