为什么大多数图数据库不支持双向边?

Why don't most graph databases support bidirectional edges?

我不得不选择一个图数据库系统,很奇怪主流的不支持这个功能?

为什么它对数据库系统如此不利?为什么那里的开发人员似乎不要求它?应该有我不知道的原因。

感谢您的帮助。

据我了解,"pure" 双向图形数据库无法支持同时存在单向关系的情况,例如 Twitter。

所以问题就变成了"why there are no hybrid (bidirectional and unidirectional) graph databases?"这个解决方案有两个问题:

  1. 它可能不会像您预期的那样节省存储空间,因为对于双向关系,混合图形数据库需要存储三个边而不是一个:A -> B、B -> A 和 A <-> B.原因是一些非常常见的查询涉及单向关系。

  2. 一些基本查询的成本比较高。比如图数据库中常见的两个问题:

    • 找到A的所有朋友

    • 找到B

    • 的所有好友

通常图数据库将 A 的所有朋友保存为相邻边(AB、AC、AD 等)。要找到 A 的所有朋友,他们只需要找到 A 并浏览到前缀不是 A 的第一条边。假设 A 有 m 个朋友,并且有 n 个。记录在数据库中,则查询复杂度为 O(log(n)) + O(m)。同样的逻辑适用于 B。但是,如果使用双向边,比如 A<->B,查询 A 的朋友的成本是相同的,但查询 B 的朋友的成本是 O(n),因为完整的数据库扫描是必需的。