【发布时间】:2017-10-16 15:20:39
【问题描述】:
我正在评估 ArangoDB(版本 3.2.4)作为 MongoDB 的替代品。我们有一个包含 2.700.000 个文档的庞大集合。明年这个集合将增加(近 4.000.000 个文档)。
如果我想使用 Java 驱动程序(4.2 版)从该集合中读取数据,则游标需要很长时间才能获取该数据。时间取决于获取文档的大小,也就是说,如果我想获取所有文档,游标获取数据大约需要 10 分钟:
AQL:
for doc in myHugeCollection
RETURN { "name": doc.name }
Java 代码:
AqlQueryOptions aqlQueryOptions = new AqlQueryOptions();
aqlQueryOptions.batchSize(500);
aqlQueryOptions.count(false);
aqlQueryOptions.cache(true);
ArangoCursor<MyHugeCollection> arangoCursor = arangoDatabase.query(
aqlQuery,
new HashMap<>(),
aqlQueryOptions,
MyHugeCollection.class);
这大约需要 10 分钟才能通过光标访问数据。因为我将批量大小设置为 500,所以我的期望是快速响应,因为获取前 500 个结果非常快。
修改后的 AQL 获取前 500 个文档:
for doc in myHugeCollection
limit 500
RETURN { "name": doc.name }
此查询大约需要 20 毫秒。
所以,我的问题是我做错了什么?如何在不等待光标几分钟的情况下访问庞大集合中的数据?
【问题讨论】:
标签: arangodb