【发布时间】:2020-04-10 03:15:56
【问题描述】:
我正在研究 AWS Neptune 和 Gremlin 以构建权限系统。 这个系统基本上有 3 种类型的顶点:用户、权限和组。
- 一个组有 0..n 个权限
- 一个用户可以有 0..n 个组
- 一个用户可以直接连接到0..n权限
- 一个用户可以连接到另一个用户,在这种情况下,它会“继承”该用户的权限
- 一个组可以在另一个组内,即在另一个组内.... 以此类推。
我正在寻找一个高性能查询来查找给定用户的所有权限。
这个图可能会变得非常大,所以为了强调一下,我已经构建了一个 17kk 用户顶点图,为每个顶点创建了 10 个随机边,然后创建了一些权限。
然后我用来获取所有权限的查询显然永远运行... n_n'
我正在尝试的只是:
g.V('u01')
.repeat(out())
.until(hasLabel('Permission'))
.simplePath()
有没有更好的查询来实现它?或者甚至可以为这种场景提供更好的建模?
我在想,也许我的 10 个随机边创建了很多“毫无意义”的循环和连接,这就是查询缓慢的原因。有意义吗?
提前致谢!
【问题讨论】:
标签: graph-databases gremlin amazon-neptune