ArangoDB:如果数据或索引不再适合RAM,那会不好?

时间:2014-06-03 12:42:06

标签: node.js arangodb

亲爱的ArangoDB社区,

我想知道当我们使用ArangoDB时它是否坏,如果不幸的话,数据+索引变得太大而且不再适合RAM。那发生了什么?它是否会严重破坏系统性能?

对于TokuMX,这是一个非常迷人的MongoDB分支(TokuMX提供我需要的ACID交易),他们说这根本没问题!甚至TokuMX在他们的网站上也明确表示,如果数据+索引不适合RAM,对TokuMX来说没什么大不了的。

此外,对于TokoMX的MongoDB,我们可以通过某些命令限制RAM的使用。

对于我的web项目,我想决定我要使用哪个数据库,我不想稍后更改。我的数据库服务器的RAM现在不超过500MB,它由NodeJS服务器同时使用。所以两者都坐在一台服务器上。

在该服务器上,我运行了1个Nodejs Server和2个Database实例。在此我将TokuMX和ArangoDb与linux中的TOP命令进行比较以检查RAM的使用情况。两个数据集只有一个很小的集合用于测试。并且通过Linux中的TOP命令对我说:ArangoDB:RES:128 MByte在使用,而对于TokuMX它只说9 MB(!!)Res意味着:实际的,真正使用的物理RAM我发现了。所以,差异已经很大了......谢谢和许多问候。虚拟RAM的使用也是非常不同的。 arangodb的5 Gb。 tokumx只有300 MB。

2 个答案:

答案 0 :(得分:5)

ArangoDB是一个数据库加上一个API服务器。它使用V8来扩展数据库的功能并定义新的API。在我的Mac上的默认配置中,它使用3个调度程序线程和5个V8线程。这使居民人数达到81M。将调度程序设置为1(通常足够)可将此值减少到80M。将V8实例设置为两个

./bin/arangod -c etc/relative/arangod.conf testbase3 --scheduler.threads 1 --server.threads 2

将此值降低到34M,将其设置为1可将其降低到24M。因此可能数据库本身使用的不到14M。

如果数据和索引变得太大,任何大多数内存数据库(无论是mongodb还是arangodb或redis)都会降低性能。如果您的索引仍然适合内存并且您的工作数据集足够小,那么可能没问题。但是,如果您的工作集太大,您的服务器将开始交换,性能将下降。这个问题将存在于任何类型的主要内存数据库中,如ArangoDB和MongoDB。

另外一个问题:是否可以在一个ArangoDB实例上使用两个不同的数据库?只需启动一台带有两个数据库的服务器,就可以提高内存效率。

答案 1 :(得分:1)

你好,谢谢你的回答。好吧,我将在我的后台服务器上使用一个ArangoDB实例,只使用Node实例,如你所推荐的那样。那里没有mongodb了。我相信我将来会再有一些问题。到目前为止,我不得不说,Arangosh并不像mongo-shell那么容易。它的shell命令对我来说有点神秘。但是ACID交易以及在服务器端运行javascript进行生产的能力是一个非常大的优点,非常酷!实际上这就是我使用ArangoDB的原因。现在,从我的Nodejs服务器启动ACID事务,然后将动作和参数发送到ArangoDb。为了最小化动作块我创建了一个javascript模块,我把它放在你上次告诉我的目录中的ArangoDb上,这太好了。那个小程序自编程的javascript模块执行所有ACID事务。但是,你是否同意,我可能通过编写FOXX应用程序进行ACID交易来提高性能?因为现在我认为每当我调用自制模块时,它首先需要加载它可以执行交易。并且foxx应用程序永远保留在RAM中,并且不会为每次点击重新加载。你同意吗?