簡體   English   中英

gremlin 中的依賴屬性

[英]Dependent properties in gremlin

考慮以下 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').as('fromV').V().hasLabel('node3').as('toV').addE('rel1').from('fromV').to('toV').property('property2',2).iterate()

3 個節點:node1、node2 和 node3 2 個關系:node1->rel->node2 和 node1->rel1->node3

我希望 rel1 關系的 property2 依賴於具有公式 2*property1 的 rel 關系的 property1。 示例:如果 property1=4,則 property2=2 * 4=8

是否可以在更新 property1 時自動更新 property2 以及如何更新? 如果不能自動實現,如何使用查詢進行更新?

您必須自己構建該功能作為應用程序的一部分,因為 TinkerPop 或 JanusGraph 中沒有任何內容允許您指定此類規則。 不過,有些事情可能會幫助您構建此類功能:

  • EventStrategy - 您可以嘗試偵聽邊緣屬性上的突變事件,然后觸發您的更改。
  • JanusGraph 事務日志- 也許您可以直接收聽 JanusGraph 的事務日志,然后觸發您的更改。
  • Gremlin DSL - 也許您可以將邏輯構建到自定義 DSL 步驟中,以便當您注意到對property('property1', <value>)調用時property('property1', <value>)您可以注入額外的 Gremlin 步驟來更新其他邊緣屬性。
  • 如果您不需要實時數據,您顯然可以使用批處理作業來更新property2值。 如果您有一個非常大的圖,那么您將需要考慮使用類似 Spark 的東西來並行執行這樣的工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM