我必须选择一个图形数据库系统,对于主流的数据库不支持此功能感到很惊讶吗?
为什么对数据库系统如此不行?为什么开发人员似乎不要求它?应该是我不知道的原因。
感谢您的帮助。
答案 0 :(得分:2)
据我了解,“纯”双向图数据库无法支持也存在单向关系的情况,例如Twitter。
因此问题变成“为什么没有混合(双向和单向)图数据库?”此解决方案有两个问题:
它可能不会像预期的那样保存存储,因为对于双向关系,混合图数据库将需要存储三个边而不是一个边:A-> B,B-> A和A <-> B原因是某些非常常见的查询涉及单向关系。
一些基本查询的成本很高。例如,图形数据库中存在两个常见问题:
找到A的所有朋友
找到B的所有朋友
常用图形数据库将A的所有好友保存为相邻的边(AB,AC,AD等)。要查找A的所有朋友,他们只需要找到A并浏览到前缀不是A的第一条边。假设A有m个朋友,有n个。记录总共在数据库中,则查询复杂度为O(log(n))+ O(m)。相同的逻辑适用于B。但是,如果使用双向边缘(例如A <-> B),则查询A的朋友的成本是相同的,但查询B的朋友的成本将是O(n),因为对数据库的完整扫描是需要。