首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蒙语阅读偏好设计策略

蒙语阅读偏好设计策略
EN

Stack Overflow用户
提问于 2014-02-26 00:28:54
回答 1查看 806关注 0票数 0

我有一个应用程序,我的任务是设计一个蒙戈支持的数据存储。

应用程序的目标是以最快的加载时间提供最新数据(无陈旧数据)。

数据大小在几百万左右,应用程序写得很重。

在选择给读取策略一个3节点的复制集(1个主复制集、1个辅助复制集、1个仲裁器)时,我遇到了两种不同的策略来确定从哪里读取数据-

  • 从二级读取以减少主站的负载。使用writeConcern = REPLICA_SAFE,从而确保在主写和次写都完成了写操作。设置读取首选项。敬secondaryPreferred
  • 总是从小学读到的。但是,在阅读之前,要确保数据处于初级状态。所以设置writeConcern= SAFE。读取首选项是默认的- primaryPreferred

在选择其中一个选项之前,需要考虑的是什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-26 02:19:38

根据文档,安全是一个废弃的术语,应该用承认代替。这里的另一个问题是,这里的w值似乎是这个常量中的2

这是你的配置的一个问题,因为你有你的主和只有一个二级,再加上一个仲裁者。如果一个节点发生故障,或者无法到达,其级别设置为此,它希望确认来自2节点的所有写操作,其中不会有2节点可用。您可以让写操作以这种方式挂起。

配置的更好的情况是多数派,因为它将确保写入主程序和次要文件的“多数”节点的数量。但是在您的示例中,涉及的任何与写有关的条件都会阻塞上的,如果其中一个节点已关闭或不可用,因为您必须至少有两个E 219辅助节点可用,以便仍然有“大多数”节点来确认写入。或者放弃仲裁器,拥有两个次要节点。

因此,您必须坚持默认的w=1,其中所有的写入都被确认为主写,除非您可以在one备用程序出现故障时处理失败的写入。

您可以将读取首选项设置为secondaryPreferred,只要您接受可以“可能”读取陈旧的数据,也可以不接受数据的最新表示形式,因为唯一的真正保证是对主节点的写入。一般的复制考虑仍然存在,因为节点的处理能力应该是相当的,或者这可能会导致查询操作的滞后或一般性能下降。

请记住,复制是为冗余实现的,而不是用于改进性能的系统。如果您正在寻找性能,那么也许可以考虑扩展您的系统硬件或实现分片来分配负载。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22029213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档