4

亲爱的 ArangoDB 社区,

我想知道当我们使用 ArangoDB 时它是否不好,如果不幸的是数据 + 索引变得太大并且不再适合 RAM。那是怎么回事?它会严重破坏系统性能吗?

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

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

对于我的 Web 项目,我想决定要使用哪个数据库,以后不想更改。我的数据库服务器的内存现在不超过 500MB,并且由 NodeJS 服务器并发使用。所以两者都坐在一台服务器上。

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

4

2 回答 2

5

ArangoDB 是一个数据库加上一个 API 服务器。它使用 V8 toifif 扩展了数据库的功能并定义了新的 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 实例上使用两个不同的数据库?只启动一个包含两个数据库的服务器会更节省内存。

于 2014-06-03T21:13:16.847 回答
1

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

于 2014-06-05T20:20:30.260 回答