ArangoDB 因更复杂的图形查询而崩溃
ArangoDB crashs with a litte more complex graph query
ArangoDB 因两次跳图查询而崩溃。
图像三个顶点集合 VA,VB 和 VC。 VA 连接到 VB 和 VC。我们有一个 VB 的实例,并希望所有 VC 通过边和 VA 实例连接到它。
所有这些都在图中定义,以便使用 Arango 图访问它们 API。我使用以下 AQL 语句来查询图形。首先,我获取连接到 VB 实例的所有 VA,然后获取连接到 VA 的所有 VC。
FOR va IN GRAPH_NEIGHBORS("Graph", "VB/Instance", {direction: "inbound", edgeCollectionRestriction: "eAB"})
FOR vc in GRAPH_NEIGHBORS("Graph", va._id, {direction: "outbound", edgeCollectionRestriction: "eBA"})
RETURN vc
结果是,经过几分钟的计算,ArangoDB 崩溃了,日志文件中没有任何有用的信息。
将边缘建模为文档而不是文档之间的链接似乎非常低效,因为在这样的查询中,整个边缘集合已经 运行 通过多次来找到正确的链接。我假设两跳足以让数据库处理。或者是否有可能改进查询而不会使数据库崩溃?
在几天前(2015 年 6 月)发布的 2.6 中,进行了一些更改以使 GRAPH_NEIGHBORS
和 NEIGHBORS
更快。
正如评论中所见,这似乎解决了问题。
ArangoDB 因两次跳图查询而崩溃。
图像三个顶点集合 VA,VB 和 VC。 VA 连接到 VB 和 VC。我们有一个 VB 的实例,并希望所有 VC 通过边和 VA 实例连接到它。
所有这些都在图中定义,以便使用 Arango 图访问它们 API。我使用以下 AQL 语句来查询图形。首先,我获取连接到 VB 实例的所有 VA,然后获取连接到 VA 的所有 VC。
FOR va IN GRAPH_NEIGHBORS("Graph", "VB/Instance", {direction: "inbound", edgeCollectionRestriction: "eAB"})
FOR vc in GRAPH_NEIGHBORS("Graph", va._id, {direction: "outbound", edgeCollectionRestriction: "eBA"})
RETURN vc
结果是,经过几分钟的计算,ArangoDB 崩溃了,日志文件中没有任何有用的信息。
将边缘建模为文档而不是文档之间的链接似乎非常低效,因为在这样的查询中,整个边缘集合已经 运行 通过多次来找到正确的链接。我假设两跳足以让数据库处理。或者是否有可能改进查询而不会使数据库崩溃?
在几天前(2015 年 6 月)发布的 2.6 中,进行了一些更改以使 GRAPH_NEIGHBORS
和 NEIGHBORS
更快。
正如评论中所见,这似乎解决了问题。