2011-05-12 41 views

回答

4

不,你不需要相同的RAM。 (是的,您可以按照描述設置副本集。)

MongoDB對所有緩存使用內存映射文件,這意味着緩存分頁由操作系統處理。具有更多內存的副本將使內存中的數據庫更多;那些少的人將更多地轉到磁盤。

如果可以的話,MongoDB最終會將整個數據庫帶入內存。如果您使用兩個副本進行讀取,一個用於寫入,則可能需要使用5GB和4GB計算機進行讀取,因此它們更有可能正在讀取RAM。

+0

我會猶豫是否將2GB服務器作爲主服務器。這對更新和插入是不利的。更新不在內存中的數據非常昂貴。插入數據需要至少更新一個索引,所以更少的RAM意味着修改該索引通常會更昂貴。 – 2011-05-13 22:51:11

+0

@ gates這是一個很好的觀點。這取決於你的用例。我假設一個閱讀繁重的環境。 – 2011-05-13 23:45:01

2

是的,你可以用這種方式配置副本集。

如果是,有什麼優點和缺點?

Here's a doc解釋副本集的主要特徵。我們來看看這些RAM的差異。

優點:

  • 更多的電腦意味着更好數據冗餘。擁有這個2GB節點至少意味着你有更多的數據副本。
  • 在副本集上擁有完整的3個節點,可以更輕鬆地取下維護

缺點:

  • 具有不同尺寸的服務器是不是偉大的自動故障轉移。假設您的5GB服務器是主服務器。當它發生故障並且2GB服務器贏得大選時會發生什麼?您仍然具有自動故障切換功能,但是您的性能可能會大幅下降。
  • 讀取縮放可能無法正常工作。根據您的讀取模式,將讀取發送到2GB服務器可能會導致大量額外的磁盤命中和較慢的性能。

所以,這裏的大問題,確實是一個表現。如果你只是爲了設置開發者,那麼它基本上是可行的。但在生產過程中,您有可能完全癱瘓您的應用程序。如果您的應用習慣使用4GB以上的RAM,然後突然降至2GB,則可能無法使用。

大多數生產設置想故障轉移到另一臺「等電源」計算機。

相關問題