2011-10-11 173 views
4

我们开始在工作中使用MongoDB。 到目前为止这么好,但是我被要求评估MongoDB是否可以同时进行Replica Set和Sharding。找了一段时间后,我发现它是可以的,但分片应该避免,除非真的有必要。为什么在MongoDB中使用分片?

我读过somewhere对于MongoDB,你真的需要大量的文档(比如数十亿)开始思考Sharding,但是由于没有提到平均文档的组织和大小,我没有理解这一点那些“统计数据”。

我们现在的标准是RAM应该大于完成请求所需的内存负载。

这些将我带到这些问题: MongoDB和SQL服务器的指令是什么,以了解请求中RAM的使用情况?

在MongoDB中使用Sharding有什么关键要求?

当某人解释为什么他们在MongoDB中使用Sharding时,是否有人能指向我的文章,文章或其他内容?

MongoDB如何处理自动分片?

谢谢。

回答

2

根据我的理解,您的工作集(您访问最频繁的数据)必须适合内存以获得良好的性能。如果没有,那么分片可以是一个选项。

副本集允许分布集的读取,而分片也可用于分配写入。

在O'Reilly有一本名为'scaling mongodb'的书,解释了如何以及何时使用副本集和碎片。

您也可以看看这个页面:http://www.mongodb.org/display/DOCS/Sharding+Introduction

+3

您的所有数据不必在RAM中 - 但指数真的应该或者你会看到在性能大幅下降。 –

+1

为了进一步限定条件,经常使用的索引部分应该在内存中(所谓的权限平衡)。在某些情况下,这将是整个索引。 –

+0

@JamesAvery如果我理解你的话,只有索引必须完全适合MongoDB才能在RAM中运行? – lollancf37