图数据库关系
Relationship 是什么?
连接两个节点的有向边,也能带属性
类比:两人之间的「同事」关系,可以带入职时间
它是什么
关系必须有方向(:A-[:KNOWS]->:B)和类型,两端各有一个节点。关系在存储层是双向指针,所以反方向遍历同样快。
关系也可以有属性,比如 [:RATED {score: 5}]、[:WORKED_AT {from: 2020, to: 2023}]。
为什么比 JOIN 快
关系库的 JOIN 是查询时用索引临时匹配;图库在写入时就把关系存成了物理指针,遍历一跳就是一次指针跳转,代价与全表规模无关。
注意
超级节点(一个节点有几百万条边,如大 V)会让遍历变慢,需要按类型拆分或做预处理。关系不能悬空,删除节点会连带删除它的关系。