在MongoDB文档here中,已经提到在副本集中即使有大多数readConcer,我们也会实现最终的一致性。我想知道当我们在读取和写入中占多数并导致分布式系统中的法定人数(R + W> N)时,这怎么可能?我希望在这种情况下有一个强大的一致系统。这是Cassandra使用的技术,以实现强一致性。
有人可以为我澄清一下吗?
答案 0 :(得分:4)
MongoDb在强一致性方面并不是很好。如果您有一个典型的分片和复制设置来增加一致性,则需要权衡数据库的某些性能。如您所知,您只能在副本集的主服务器上执行写操作。默认情况下,您也只能从中读取。这可能是您从MongoDb AFAIK获得的最强一致性,因为其他节点仅用于复制,故障转移和可用性原因。并且您可以从辅助节点读取仅用于具有最新数据并非关键的操作以及用于长时间运行的操作,例如聚合。
如果设置分片,则可以将大部分读/写操作卸载到不同的主节点。我认为,当谈到MongoDb时,您可以做的就是提高一致性和性能,特别是对于更大的数据集。