我评估了大多数NoSQL解决方案,似乎使用MongoDB,Riak和HyperTable(或HBase)的组合是可行的方法。
这些数据库运行舒适的最低要求是什么?
假设我在运行带有32 GB RAM的FreeBSD的单机上部署这些数据库(MongoDB,Riak和HyperTable - 或HBase) - 以及Web服务器(如nginx或Cherokee)和Java / GlassFish - ALL ,他们将如何表现?请注意,通过这种方法,所有应用程序均可共享整个32 GB的RAM。对于Java / GlassFish和HBase的情况,可以使用“-Xmx0000m”选项限制它,但对于那些数据库,它们会自动使用整个内存吗?我知道MongoDB是内存映射的 - 等等 - 那么当它们都为内存而战时会发生什么? (我认为可以通过启动参数限制MongoDB,Riak和HyperTable的内存利用率,但是如何?)
或者,使用Solaris Containers(或“区域”)虚拟化在Solaris(或OpenIndiana)上部署每个应用程序是否更好的方法,例如为每个MongoDB,Riak和HyperTable / HBase区域分配4 GB?在这种方法中,所有数据库基本上只运行4 GB的环境?那么,为了使它们正常工作,最小的舒适RAM是什么?
答案 0 :(得分:2)
我在制作中使用了mongodb和hbase,所以我可以评论一下。
Mongodb没有办法限制内存使用量,它使用的是最大内存。所以基本上,你对mongodb有更多的记忆。将mongodb放在一台单独的机器上总是一个好主意。
对于hbase问题,它不是那么简单,因为它包含底层服务。服务包括:namenode,datanode,zookeeper-server,hmaster,regionserver(如果你要使用mapreduce,你需要jobtracker和tasktraker)。 namenode,zookeeper-server和hmaster并不需要太多。但是你需要一个良好的io / ram平衡数据节点和更好的RAM用于区域服务器。将这些服务放在同一个盒子上并不是一个好主意(即使它们是由于io需要而是虚拟的)。
最后但并非最不重要的是提防交换!交换是mongodb和hbase的敌人。