Neo4j如何使用关系ID'遍历图形;nodestore文件中的s
有件事把我弄糊涂了我想知道你能不能帮我一下 根据Neo4j图形数据库手册,节点存储文件中有4个字节包含节点关系的ID。如果节点有100个关系(所有关系都是节点在关系链中的第一个关系),neo4j如何理解选择哪个id???例如,我编写了Match(a:user{Name:'a')-[r:Has skill]->(b:skill)Neo4j如何使用关系ID'遍历图形;nodestore文件中的s,neo4j,graph-databases,datamodel,Neo4j,Graph Databases,Datamodel,有件事把我弄糊涂了我想知道你能不能帮我一下 根据Neo4j图形数据库手册,节点存储文件中有4个字节包含节点关系的ID。如果节点有100个关系(所有关系都是节点在关系链中的第一个关系),neo4j如何理解选择哪个id???例如,我编写了Match(a:user{Name:'a')-[r:Has skill]->(b:skill) 假设用户节点有很多关系,但我们对[has_skill]关系感兴趣neo4j如何理解与此关系相关的id?您所说的关系链与“路径”不同。一个节点没有多个关系,而该关系是链中的
假设用户节点有很多关系,但我们对[has_skill]关系感兴趣neo4j如何理解与此关系相关的id?您所说的关系链与“路径”不同。一个节点没有多个关系,而该关系是链中的第一个关系 关系链是一个包含该节点关系的双链接列表。鉴于Neo4J已经找到模式中的第一个用户,它将执行以下步骤(或类似操作):
- 检查是否与搜索到的关系的条件匹配(这里,它的类型应该是
)has\u SKILL
- 如果该关系与条件匹配,则保留该关系以备将来使用;如果不匹配,则丢弃该关系
- 按照指针指向关系链表(在“链”中)中的下一个元素;如果最后一个元素已经存在,则退出循环
来自Ian Robinson、Jim Webber和Emil Eifrem第二版图形数据库,第154页: 要查找节点的关系,我们遵循该节点指向其第一个关系的关系指针(本例中为LIKES关系)。从这里开始,我们遵循该特定节点的关系的双链接列表(即开始节点双链接列表或结束节点双链接列表)直到我们找到我们感兴趣的关系
最后,@InverseFalcon指出,对于密集相关的节点,这将以不同的方式实现,因为它们估计有50+个以上的关系。在这一点上,使用了稍微不同的结构,按类型和方向分组,因此搜索成本降低。请注意,对于密集节点,这一方法的效果稍有不同(通常为50+个关系),有一个不同的结构,它按类型和方向对节点进行分组,以减少搜索所有节点以找到相关关系的成本。