2011-09-16 31 views
2

我已經評估了大部分的NoSQL解決方案,並且似乎要使用MongoDB,Riak和HyperTable(或HBase)的組合。MongoDB,Riak和HyperTable(或HBase)的內存需求/利用率

這些數據庫運行舒適的最低要求是什麼?假設我在運行FreeBSD的單機上部署這些數據庫(MongoDB,Riak和HyperTable或HBase)和Web服務器(例如nginx或Cherokee)和Java/GlassFish-ALL,其中32 GB的RAM,它們將如何執行?請注意,通過採用這種方法,所有應用程序均可共享整個32 GB的RAM。對於Java/GlassFish和HBase,可以使用「-Xmx0000m」選項來限制它,但對於那些數據庫,它們會自動使用整個內存?我知道MongoDB是內存映射 - 等等 - 所以當他們都在爲內存而戰時會發生什麼? (我認爲可以通過啓動參數來限制MongoDB,Riak和HyperTable的內存利用率,但是怎麼做?)

或者,在Solaris Containers或Solaris容器上部署Solaris(或OpenIndiana)區域「)虛擬化來限制每個應用程序,例如爲每個MongoDB,Riak和HyperTable/HBase區域分配4 GB?在這種方法中,所有的數據庫本質上都只有4 GB的環境運行?所以,爲了讓它們正常工作,最小的舒適RAM是什麼?

+0

由於原因,這些數據庫中每個數據庫的內存要求都取決於您將要存儲的數據量的100%。 –

回答

2

我在生產中使用了mongodb和hbase,所以我可以評論這些。

Mongodb沒有辦法限制內存使用,它使用最大的內存。所以基本上,你對mongodb有更好的記憶。它總是一個好主意,把mongodb放在一個單獨的機器上。

對於hbase來說,它並不那麼簡單,因爲它包含了底層服務。服務是:namenode,datanode,zookeeper-server,hmaster,regionserver(如果你要使用mapreduce,你需要jobtracker和tasktraker)。 namenode,zookeeper-server和hmaster並不需要太多。但那麼你需要一個好的io/ram餘額來存放datanode和更好的內存區域服務器。將這些服務放在同一個盒子裏不是一個好主意(即使它們是由於io需求而是虛擬的)。

最後但並非最不重要的提防交換! swap對MongoDB和hbase都是敵人。

+0

對於HBase,datanode和regionserver服務通常位於相同的服務器(節點)上,通常還有一個tasktracker用於縮減地圖工作。 namenode,jobtracker,hbase master和sookeeper不會在同一個節點上,除非你正在做一個非常小的僅測試僞分佈式設置。 – cftarnas

相關問題