gpt4 book ai didi

mongodb - 有人能告诉我为什么不允许在 MongoDB 副本集中写入辅助数据的详细技术原因吗

转载 作者:搜寻专家 更新时间:2023-10-30 21:46:43 25 4
gpt4 key购买 nike

我知道我们不能在 MongoDB 中写入辅助数据。但我找不到任何技术原因。就我而言,我真的不在乎是否有轻微的延迟,但写入辅助数据可能会更快。如果可以,请提供一些引用。谢谢!!

最佳答案

你不能写到辅助的原因是复制的工作方式:

从节点连接到主节点上的一个特殊集合,称为oplog。此 oplog 包含通过查询优化器运行的操作。基本上,oplog 是一个上限集合,辅助节点使用可尾游标访问它的条目并从最旧到最新处理它。

当因为主服务器宕机/降级而发生选举时,具有最新 oplog 条目的辅助服务器被选为主服务器。从节点连接到新的主节点,查询它们尚未处理的 oplog 条目,并且集群处于同步状态。

这个过程非常简单。现在想象一个人可以写信给二级。集群中的所有节点都必须在集群的所有其他节点上有一个可跟踪的游标,并且在一台机器发生故障的情况下保持一致的状态变得非常复杂,并且在发生故障甚至竞争的情况下条件依赖的东西。实际上,甚至无法再保证最终的一致性。这或多或少是一场赌博。

也就是说:副本集用于负载平衡。副本集的目的是增强数据的可用性和持久性。因为从辅助节点读取是一件没有风险的事情,MongoDB 使它成为可能,根据他们在不影响可伸缩性的情况下提供最大可能功能的信条(如果可以写入辅助节点,这将受到严重阻碍)。

但是 MongoDB 确实提供了负载平衡功能:sharding .选择正确的分片键,您可以根据需要将读写负载分布到(几乎)任意数量的分片上。更不用说在分片时您可以以合理的价格提供更多宝贵的 RAM。

关于mongodb - 有人能告诉我为什么不允许在 MongoDB 副本集中写入辅助数据的详细技术原因吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27039424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com