让我在这里评论ArangoDB,作为其开发者之一.
还有第三种可能性,即为不同的访问方法提供单个顶点集合和多个边集合.然后,您将"正式"拥有3个共享相同顶点集的图形.
我希望这在性能上更好,因为每种访问类型只需处理单一类型的边缘,访问速度很快.
显然这一切都取决于你的疑问.我的陈述适用于诸如"一个人可以更新的所有实体是什么?"之类的查询.或"谁可以选择这个实体?".
我可以想象你的标准查询更多"这个人可以删除该实体吗?" 或"此人对该实体拥有哪些访问权限?".
对于任何建议的方法,这两个问题可能效率不高,因为据我所知,所有这些问题都需要在Person的传出边缘或实体的传入边缘进行搜索.
这里需要的是一种"顶点中心索引",它是一个可用于给定顶点的输出或输入边缘集合的索引.例如,如果你使用你的选项2(或者实际上是1,这并不重要),并且在所有边上都有一个排序索引,首先由Person排序,然后由实体排序.然后,它是一个具有时间复杂度O(log(#edges))的查找,以查找从给定Person到给定Entity的(可能是单例)边集.
我们ArangoDB目前正忙于添加此功能,该功能将出现在接下来的两个版本之一中.
| 归档时间: |
|
| 查看次数: |
1377 次 |
| 最近记录: |