2011-10-11 41 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