2014-01-05 29 views
0

我有一个疑问(一对夫妇)。我觉得我把握的答案,但即时寻找一个确认mongodb复制+分片一致性

可以说,我会实现的MongoDB分片集群,是需要有一个副本中设置躺在旁边的碎片?

我知道,如果我只用了replicaSet,我决定来分发辅助节点上的读操作,这将导致最终一致性,对不对? 另一方面,如果我不启用次要节点上的读取,我将得到的“唯一”优势是保护数据库在一个节点将会下降的情况下

但是如何在分片 - replicaset?它仍然是最终一致的,或者是完全一致的?

回答

2

是需要有一个副本中设置躺在碎片

在你身边没有,但如果你关心可用性你会的。

我决定在二级节点上分配读操作,它会导致最终一致性,对吗?

是的,并且由于辅助人员收集尽可能多的OP作为初选,并且大多数驱动程序只会从辅助阅读中读取一个辅助阅读,这是毫无用处的。

“唯一”的优势,我会得到的是保护数据库中某个节点的情况下将下降

“唯一”?这是复制品集的全部要点,以产生自动故障转移。这是存在的根本原因,它是一个很大的原因。

它仍然是最终一致的,或者它会完全一致吗?

这取决于你在哪里做你的阅读,但如果你从次级在分片设置读你不仅可以得到最终的一致性,但由于块的运动也可能会重复的文档。

如果你是从初选阅读,那么你会得到一分片副本集建立很强的一致性。

+0

谢谢你的回答!我把“唯一”放在引号内,完全是因为我不想贬低它带来的好处。对不起,我应该用另一个词,它是我的英语XD 我试图理解为什么在你说的最后一句话里:从初选中读。我的意思是,为什么复数?分片群集中可以有多个主分区? – lese

+0

@lese确定分片副本设置为每个碎片是逸岸主 – Sammaye

+0

@lese遗憾写道,快速,每个碎片是具有其自身的主要和次级 – Sammaye