2

我已经评估了大多数 NoSQL 解决方案,似乎结合使用 MongoDB、Riak 和 HyperTable(或 HBase)是可行的方法。

这些数据库舒适运行的最低要求是什么?

比方说,如果我将这些数据库(MongoDB、Riak 和 HyperTable - 或 HBase)和 Web 服务器(如 nginx 或 Cherokee)和 Java/GlassFish - 全部部署在运行 FreeBSD 且具有 32 GB RAM 的单机上,如何他们表演?请注意,通过这种方法,整个 32 GB RAM 由所有应用程序平均共享。对于 Java/GlassFish 和 HBase,可以使用“-Xmx0000m”选项来限制它,但是对于那些数据库,它们会自动使用整个内存吗?我知道 MongoDB 是内存映射的——等等——那么当它们都在争夺内存时会发生什么?(我认为可以通过启动参数来限制 MongoDB、Riak 和 HyperTable 的内存利用率,但是如何?)

或者,在 Solaris(或 OpenIndiana)上部署 Solaris 容器(或“区域”)虚拟化来限制每个应用程序是否是一种更好的方法,例如为每个 MongoDB、Riak 和 HyperTable/HBase 区域分配 4 GB?在这种方法中,所有数据库基本上都在仅 4 GB 的环境中运行?那么,为了让它们正常工作,最低舒适的 RAM 是多少?

4

1 回答 1

2

我在生产中使用了 mongodb 和 hbase,所以我可以评论这些。

Mongodb 没有办法限制内存使用,它使用它可以使用的最大内存。所以基本上,对于 mongodb,你拥有的内存越多越好。将 mongodb 放在单独的机器上总是一个好主意。

对于 hbase 问题,它并不那么简单,因为它由底层服务组成。这些服务是:namenode、datanode、zookeeper-server、hmaster、regionserver(如果你要使用 mapreduce,你需要 jobtracker 和 tasktraker)。namenode、zookeeper-server 和 hmaster 不需要太多。但是你需要为数据节点提供良好的 io/ram 平衡,为区域服务器提供更好的 ram。将这些服务放在同一个盒子上从来都不是一个好主意(即使由于 io 需要它们是虚拟的也不行)。

最后但并非最不重要的一点是要小心交换!swap 是 mongodb 和 hbase 的敌人。

于 2011-09-16T06:11:53.997 回答