簡體   English   中英

對於給定的遍歷 gremlin 查詢,如何在所有訪問過的節點/邊上應用靜態步驟

[英]How to apply a static has step on all the visited nodes/edges for a given traversal gremlin query

我們將用戶權限標記為每個節點和邊上的屬性(SET 基數)。 想知道在給定遍歷 gremlin 查詢的所有訪問過的節點/邊上應用 has 步驟的最佳方法是什么。

就像一個非常簡單的遍歷查詢:// 從倫敦希思羅機場 (LHR) 到美國機場的航班

g.V().has('code','LHR').out('route').has('country','US').values('code')

在使用上述查詢遍歷時has('permission', 'team1')has('permission', 'team1')到所有訪問過的頂點和邊。

您可以考慮兩種方法。

  1. 編寫自定義TraversalStrategy
  2. 開發Gremlin DSL

對於TraversalStrategy您將開發一個類似於SubgraphStrategyPartitionStrategy ,它們將獲取您的用戶構建權限,然后在out() / in()類型的步驟之后自動注入必要的has()步驟。 這里的缺點是你的TraversalStrategy必須用 JVM 語言編寫,如果使用 Gremlin Server,則必須在服務器上安裝。 如果您打算以任何方式從客戶端配置此TraversalStrategy ,您將需要構建自定義序列化程序以使其成為可能。

對於 DSL,您將為out() / in()類型的步驟創建新的導航步驟,並且它們將插入導航步驟和has()步驟的適當組合。 DSL 方法很好,因為您可以用任何編程語言編寫它並且它可以工作,但它不允許服務器端配置,並且您必須始終確保客戶端在查詢圖形時使用 DSL。

我們將用戶權限標記為每個節點和邊上的屬性(SET 基數)。

最后一點,“SET cardinality”我假設您的意思是multi-properties 邊不允許這些,所以你只能在頂點上標記這樣的屬性。

暫無
暫無

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

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