Graph 如何为给定的遍历gremlin查询在所有访问的节点/边上应用静态has步骤
我们将用户权限标记为每个节点和边上的属性(集合基数)。想知道对于给定的遍历gremlin查询,在所有访问的节点/边上应用has步骤的最佳方法是什么 就像一个非常简单的travarsal查询: //从伦敦希思罗机场(LHR)飞往美国机场的航班Graph 如何为给定的遍历gremlin查询在所有访问的节点/边上应用静态has步骤,graph,gremlin,janusgraph,gremlin-server,Graph,Gremlin,Janusgraph,Gremlin Server,我们将用户权限标记为每个节点和边上的属性(集合基数)。想知道对于给定的遍历gremlin查询,在所有访问的节点/边上应用has步骤的最佳方法是什么 就像一个非常简单的travarsal查询: //从伦敦希思罗机场(LHR)飞往美国机场的航班 g.V().has('code','LHR').out('route').has('country','US').values('code') 添加(“权限”、“TeM1”)/代码>使用上面的查询遍历所有访问的顶点和边。 有两种方法可以考虑。 写一篇 发展
g.V().has('code','LHR').out('route').has('country','US').values('code')
添加<代码>(“权限”、“TeM1”)/代码>使用上面的查询遍历所有访问的顶点和边。
有两种方法可以考虑。
transversalstrategy
您将开发一个类似于子图策略
或分区策略
的策略,该策略将获取用户对构建的权限,然后在out()
/in()
各种步骤之后自动注入必要的has()
步骤。这里的缺点是,您的TraversalStrategy
必须用JVM语言编写,如果使用Gremlin,则必须在服务器上安装服务器。如果您打算从客户端以任何方式配置此TraversalStrategy
,则需要构建自定义序列化程序来实现这一点
对于DSL,您将为out()
/in()
类步骤创建新的导航步骤,它们将插入导航步骤和has()
步骤的适当组合。DSL方法很好,因为您可以用任何编程语言编写它,它也可以工作,但它不允许服务器端配置,并且您必须始终确保客户端在查询图形时使用DSL
我们将用户权限标记为每个节点和边上的属性(集合基数)
最后,我想你说的“集合基数”是指。边不允许这样做,因此您只能在顶点上标记这样的属性。谢谢Stephen,即计划使用CustomUserPermissionStrategy。注意:目前我们通过HttpChannelizer为用户提供运行gremlin查询的功能,因此我们应该在empty-sample.groovy-like-global中使用新的CustomUserPermissionStrategy,您必须编写一些自定义代码才能实现这一点。我认为,您需要根据自己的需要查看并修改它。然后,您可以使用自定义处理程序构建自己的
通道化器来构建自己的管道,并将其插入到Gremlin Server中:好的。再次感谢。看来我需要更深入地了解整个工作流程。我还可以参考任何doc ref,说明如何将这些自定义类插入到一起。注:我们使用janusgraph。顺便提一下你介意在即时通讯器上聊天吗?恐怕在这方面没有太多文档,因为它是API(和netty的)的一种相当高级的用法。如果您还有其他问题,gremlin用户邮件列表可能是一种更好的聊天方式……比IM好一点,因为我们的讨论可能会帮助其他用户。事实上,如果你在那里搜索一下,你可能会发现过去的讨论提供了一些指导。