【问题标题】:What is meant by fan-out in entity-relationships graph databases?实体关系图数据库中的扇出是什么意思?
【发布时间】:2021-07-17 21:07:13
【问题描述】:
在Dgraph paper 中提到,实体在服务器之间随机分片,它们自身携带与其他实体的关系。这会在图查询的中间步骤中导致高扇出结果集,从而导致服务器上的广播和执行连接的高延迟。
这里扇出的意思我不明白。
我尝试从基础理解,这就是我发现的:
- 查询中的大量扇出请求会导致网络等问题
拥塞、尾部延迟和 CPU 边界。点击here查看论文。
- 扇入是对调用其他函数或方法(例如 X)的函数或方法数量的度量。扇出是函数 X 调用的函数的数量。它用作基于调用图的指标。点击here获取来源。
我不确定上述点如何与 Dgraph 论文中讨论的基于实体的图相关。是不是实体与其他实体有很多关系,所以一个实体有很多边?
【问题讨论】:
标签:
graph
graph-databases
dgraph
【解决方案1】:
简而言之:是的,在某些情况下,一个实体可以附加许多边。
在第一篇论文中,分片基于谓词“lives-in”和“eats”。在这个描述中,所有“存在”的数据都在一个分片中,所有“吃掉”的数据都在另一个分片中,论文说:“假设最坏的情况是集群如此之大,每个分片都存在于单独的服务器。”
现在,考虑一个包含多个谓词的查询,每个谓词在自己的分片中,每个分片位于不同的服务器上。
Find any person
that lives-in ???,
that eats ???,
that drinks ???,
that drives ???,
that reads ???
随着谓词数量的增加(即被询问的分片数量),我们看到了论文中描述的高扇出。集群“广播”的数量显着增长,导致查询延迟成比例增长。