ArangoDB:如果数据或索引不再适合内存,是不是很糟糕?

亲爱的ArangoDB社区,

我想知道,当我们使用ArangoDB的时候是不是很糟糕,如果不幸的是数据+索引变得太大,不适合RAM。 那么发生了什么? 它是否毁了系统性能可怕?

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

另外,对于TokuMX的MongoDB,我们可以通过一些命令来限制RAM的使用。

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

在该服务器上,我有1个Nodejs服务器和2个数据库实例正在运行。 因此,我将TokuMX和ArangoDb与Linux中的TOP命令进行比较,以检查RAM的使用情况。 两个databeses只有一个小集合进行testing。 而在Linux中的TOP命令对我说:ArangoDB:RES:使用128兆字节,而TokuMX则表示只有9 MB(!!)Res表示:实际使用的物理RAM,我发现了。 所以,差别已经很大了……感谢和许多问候。 而且虚拟RAM的使用情况也有很大的不同。 5GB的arangodb。 tokumx只有300 MB。

ArangoDB是一个数据库加API服务器。 它使用V8来扩展数据库的function并定义新的API。 在我的Mac的默认configuration中,它使用3个调度程序线程和5个V8线程。 这给居民大小81M。 将调度器设置为1(这通常是足够的)将其减less到80M。 将V8实例设置为两个

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

将其降至34M,将其设置为1将其降至24M。 所以据推测数据库本身使用不到14M。

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

还有一个问题:是否可以在一个ArangoDB实例上使用两个不同的数据库? 这将是更有效的内存,启动只有一个服务器,其中有两个数据库。

你好,谢谢你的回答。 那么,我将只使用Node实例在我的后台服务器上使用一个ArangoDB实例,就像你推荐的那样。 那里没有mongodb了。 我相信我今后会再有一些问题。 到目前为止,我不得不说,阿郎戈并不像芒果壳那样容易被打断。 它的shell命令对我来说有点神秘。 但是ACID事务和在服务器端运行javascript的能力是一个非常大的优势,非常酷! 其实这就是我使用ArangoDB的原因。 现在,从我的Nodejs服务器启动ACID事务,然后将操作和参数发送给ArangoDb。 为了最大限度地减less操作块,我创build了一个javascript模块,并将其放在上次告诉我的目录中的ArangoDb上,这很好。 那个自编程序的小模块完成了所有的ACID事务。 但是,你是否同意,通过编写FOXX应用程序来进行ACID交易,我可能会进一步提高性能? 因为现在我想每次我打电话给自制模块,首先需要装载自己的模块才能执行事务。 而且foxx应用程序一直保留在RAM中,并且每次命中都不会重新加载。 你同意吗?