Graph gremlin中的依赖属性
考虑以下JanusGraph中的模式Graph gremlin中的依赖属性,graph,metadata,gremlin,janusgraph,Graph,Metadata,Gremlin,Janusgraph,考虑以下JanusGraph中的模式 g.addV('node1').next() g.addV('node2').next() g.addV('node3').next() g.V().hasLabel('node1').as('fromV').V().hasLabel('node2').as('toV').addE('rel').from('fromV').to('toV').property('property1',1).iterate() g.V().hasLabel('node1'
g.addV('node1').next()
g.addV('node2').next()
g.addV('node3').next()
g.V().hasLabel('node1').as('fromV').V().hasLabel('node2').as('toV').addE('rel').from('fromV').to('toV').property('property1',1).iterate()
g.V().hasLabel('node1').as('fromV').V().hasLabel('node3').as('toV').addE('rel1').from('fromV').to('toV').property('property2',2).iterate()
3个节点:节点1、节点2和节点3
2关系:节点1->rel->node2和节点1->rel1->node3
我希望rel1关系的property2依赖于公式2*property1的rel关系的property1。
例子:
如果属性1=4,则属性2=2*4=8
是否可以在更新属性1时自动更新属性2?如何更新?
如果无法自动更新,如何使用查询进行更新?您必须自己构建该功能作为应用程序的一部分,因为TinkerPop或JanusGraph中没有允许您指定此类规则的内容。不过,有些东西可能会帮助您构建此类功能:
- -您可以尝试侦听边缘属性上的突变事件,然后触发更改
- -也许您可以直接监听JanusGraph的事务日志,然后触发更改
- -也许您可以将您的逻辑构建到自定义DSL步骤中,这样当您注意到对
您就可以插入额外的Gremlin步骤来更新另一个边缘属性属性('property1')的调用时,
- 如果不需要实时数据,显然可以使用批处理作业来更新
值。如果您有一个非常大的图形,那么您将需要考虑使用类似Spark的东西来并行执行这样的作业property2