MongoDB——读操作事务

由于MongoDB是一个分布式数据库,因此我们在读取数据的过程中需要关注以下两个问题:

  • 从哪里读?关注数据节点位置
  • 什么样的数据可以读?关注数据的隔离性

接下来我们引入了两个参数:readPreference和readConcern来控制。

readPreference参数

readPreference决定使用哪一个节点来满足正在发起的读请求。可选值包括:

  • primary:只选择主节点;
  • primaryPreferred:优先选择主节点,如果不可用则选择从节点;
  • secondary:只选择从节点;
  • secondaryPreferred:优先选择从节点,如果从节点不可用则选择主节点;
  • nearest:选择最近的节点;

我们默认的readPreference的值为primary,即从主节点上读取数据。

接下来看一下readPreference在不同场景下参数值的选择:

  • 用户下订单后马上将用户转到订单详情页——primary/primaryPreferred。因为此时从节点可能还没有同步复制到新订单;
  • 用户查询自己下过的订单——secondary/secondaryPreferred。查询历史订单对时效性通常没有太高要求;
  • 生成报表——secondary。报表对时效性要求不高,但资源需求大,可以在从节点单独处理,避免对线上用户造成影响;
  • 将用户上传的图片分发到全世界,让各地用户能够就近读取——nearest。每个地区的应用选择最近的节点读取数据。
发布了37 篇原创文章 · 获赞 42 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42570248/article/details/103809429