图数据库设计:我应该添加关系,还是只遍历

Graph database design: Should I add relationships, or just traverse

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

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

选项 B:我执行红色关系,这样可以更快地计算出年轻结构是否属于古代组。

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

总而言之,我想知道增加一整套新的关系是否值得 space,或者遍历寻找所有亲戚是否是一项 simple/inexpensive 任务这是不值得这样做的。或者,两种选择都是可行的,这根本不是真正的问题。感谢阅读。

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

不确定为什么不想使用标签?标签用于将节点分组为相同类型的集合,并且也是索引支持的——这使得找到查询的起点要快得多(通过全数据库扫描进行索引查找)。