gpt4 book ai didi

graph-databases - 如何优化 ArangoDB 中的图遍历?

转载 作者:行者123 更新时间:2023-12-02 15:21:48 38 4
gpt4 key购买 nike

我主要想问这个问题:“ArangoDB 是一个真正的图形数据库吗?”

但是,这个问题听起来很令人反感。

你们,triAGENS 的人们,在创建“多范式”数据库方面做得非常出色。作为 PostgreSQL、PostGIS、MongoDB 和 Neo4J/Titan 的用户,我真的很高兴看到一个“一体化”解决方案:)

但问题仍然存在,基本上在 ArangoDB 中创建一个图需要创建两个单独的集合:一个用于边,一个用于顶点,因此,据我所知,这已经意味着顶点和相关边不是“物理上”的邻居。

此外,即使在创建适当的索引之后,我在 Gremlin 中执行此类操作时仍面临一些严重的性能问题

g.v('an_id').out('likes').in('likes').count()

大约 3 秒(感知时间)后返回结果

我以为我不太了解 Gremlin 和 Blueprint/ArangoDB 的工作原理,因此我尝试使用 AQL 重写相同的查询:

LET lst = (FOR e1 in NEIGHBORS(vertices, edges, "an_id", "outbound", [ { "$label": "likes" } ] )
FOR e2 in NEIGHBORS(vertices, edges, e1.edge._to, "inbound", [ { "$label": "likes" } ] )
RETURN 1
)
RETURN length(lst)

这给我带来了相同数量级的延迟。

如果我尝试在 Titan 或 Neo4j 数据库上运行相同的查询(具有完全相同的数据),查询几乎立即返回(感知时间:<200ms)

因此,在我看来,ArangoDB 图形功能是“传统文档数据库”之上的“智能图形层”,但 ArangoDB 不是“ native ”图形数据库。

为了证实这种感觉,我转换数据以将其加载到 PostgreSQL 中并运行查询(可以假设使用多个表 JOIN),并得到了类似的(与 ArangoDB)执行延迟

我做错了什么(在 AQL 查询中)吗?

有没有办法优化数据库以获得更好的遍历时间?

在 PostgreSQL 中,从概念上讲,我会混合边缘和节点并使用 CLUSTER 子句对数据进行物理排序,在 ArangoDB 中是否可以完成类似的操作? (我认为这会很难,因为它涉及“交错”边缘和节点,只是一种直觉)

最佳答案

我是 ArangoDB 的核心开发人员。您能给我更多关于您正在使用的数据维度的信息吗?

  • 顶点数量
  • 边缘数量

然后我们可以创建自己的具有相同尺寸的设置并对其进行优化。

关于graph-databases - 如何优化 ArangoDB 中的图遍历?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21020366/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com