[英]ArangoDB crashes on attempt to run traversal AQL with COLLECT clause in it
数据模型为:
书籍- 文件
页- 文件。 页面可能只包含一个对另一本书的引用
book_pages - 边缘。 从书到页,从页到书
例子:
book1 -> (edge) -> page1 -> (edge) -> book2
book1 -> (edge) -> page2 -> (edge) -> book2
book1 -> (edge) -> page3 -> (edge) -> book2
book1 -> (edge) -> page4 -> (edge) -> book3
book2 -> (edge) -> page5 -> (edge) -> book4
book2 -> (edge) -> page6 -> (edge) -> book4
book2 -> (edge) -> page7 -> (edge) -> book4
book2 -> (edge) -> page6 -> (edge) -> book4
...
目标是在书籍之间建立边缘,避免重复。 book1 包含几页提到 book2,但我只需要一个边缘。 id 在 book1 中引用 book2 的次数无关紧要。
质量标准:
FOR b1 IN books
FOR v IN 1..1 OUTBOUND b1 books_pages
FOR b2 IN 1..1 OUTBOUND v books_pages
COLLECT from = b1._id, to = b2._id
RETURN {'from':from, 'to': to}
当数据库中的文档数量很大时,arangodb 崩溃。 这个查询有什么问题,或者这只是 arangodb 方面的一个错误?
我无法对崩溃发表评论,尤其是所有原因,因为您没有提供任何与其相关的信息以及它如何表现出来——如果原因是内存不足杀死/重启,您应该提到(检查如果 arangodb 日志没有帮助,则系统会记录)。
但是关于您的问题:您是否对所有长度为 3(就顶点而言,就边而言为 2)的唯一路径感兴趣? 这不是凝聚成
FOR b IN books
FOR v,e,p IN 2..2 OUTBOUND b GRAPH 'books'
RETURN DISTINCT {"from": p.vertices[0]._id, "to": p.vertices[2]._id}
它适用于非常小的样本集。 也许这在查询平面、刽子手上稍微轻一点?
向 AQL 添加选项有助于解决问题。
OPTIONS {uniqueEdges: 'path', uniqueVertices: 'global', bfs: true }")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.