首页 > 解决方案 > 图数据库设计:我应该添加关系,还是只是遍历

问题描述

我最近开始探索图形数据库和 Neo4J,并希望使用自己的数据。目前我遇到了一些困惑。我创建了一个示例图像来说明我的问题。就效率而言,我想知道哪个选项更好(我想在开始处理更多数量之前的早期立即获得它)。

插图

选项A:仅使用蓝色关系,我可以确定事物是否与Ancient 组相关或属于Ancient 组。这个过程会进行很多次,但不太可能超过 6 代。

选项 B:我实现了红色关系,这样可以更快地确定年轻结构是否属于古代组。

我试图在这种情况下不使用标签,因为我试图将标签用于特定目的以简化我的生活(跨单独网络链接结构),我不确定我是否应该有一个标签来表示已经存在的节点。

总而言之,我想知道在占用更多空间的同时添加全新的关系是否值得,或者遍历查找所有亲戚是否是一项如此简单/便宜的任务,不值得这样做。或者,两种选择都是可行的,这根本不是一个真正的问题。谢谢阅读。

标签: graphdatabase-designneo4jgraph-databases

解决方案


我会选择选项 A。Neo4j 的优势之一是它可以非常有效和快速地遍历关系,因此不需要具体化关系(有时,关系会在复杂和/或非常大的图中具体化,但是这不是你的情况)。

不确定为什么不想使用标签?标签用于将节点分组为相同类型的集合,并且还支持索引 - 这使得查找查询的起点更快(索引查找超过完整的数据库扫描)。


推荐阅读