簡體   English   中英

Gremlin/Janusgraph 中的多個頂點標簽是可能的,還是更好的替代解決方案?

[英]Are multiple vertex labels in Gremlin/Janusgraph possible, or is an alternative solution better?

我正在為新的圖形數據庫開發導入運行程序。

它需要與:

  • Amazon Neptune - Gremlin 實施,在生產中有很好的基礎設施支持,但在本地工作很痛苦,並且不支持 Cypher。 沒有提供可視化工具。

  • Janusgraph - 作為 Gremlin 實現在本地易於使用,但需要大量投資來支持生產,因此使用 Amazon Neptune。 沒有提供可視化工具。

  • Neo4j - 優秀的可視化工具,Cypher 語言感覺很熟悉,甚至可以與 Gremlin 客戶端一起使用,但需要大量投資來支持生產,並且似乎沒有任何可視化工具能與 Neo4j 中的可視化工具相媲美Gremlin 實現。

因此,我正在創建實體(節點/頂點)具有多種類型(標簽)的圖形,其中一些類型彼此正交,並且是多維的。

例如,代表在線訂單的實體將被標記為OrderOnlineSpendTransaction

             | Spend       Chargeback
----------------------------------------
 Transaction | Purchase    Refund
 Line        | Sale        Return

放大Spend列。

          | Online      Instore
----------------------------------------
 Purchase | Order       InstorePurchase
 Sale     | OnlineSale  InstoreSale 

在 Neo4j 及其 Cypher 查詢語言中,這被證明對於在不明確知道圖中的transaction_id值是什么的情況下創建跨多種類型的關系/邊非常強大:

MATCH (a:Transaction), (b:Line)
WHERE a.transaction_id = b.transaction_id
MERGE (a)<-[edge:TRANSACTED_IN]-(b)
RETURN count(edge);

問題是,Gremlin/Tinkerpop 本身並不支持其頂點的多個標簽。

AWS Neptune這樣的服務器實現將使用分隔符來支持這一點,例如。 Order::Online::Spend::TransactionGremlin 客戶端確實支持它用於 Neo4j 服務器,但我無法找到適用於 JanusGraph 的示例。

最終,我需要能夠運行一個相當於上面 Cypher 的 Gremlin 查詢:

g
  .V().hasLabel("Line").as("b")
  .V().hasLabel("Transaction").as("a")
  .where("b", eq("a")).by("transaction_id")
  .addE("TRANSACTED_IN").from("b").to("a")';

所以這里有多個問題:

  1. 有沒有辦法讓 JanusGraph 接受多個頂點標簽?
  2. 如果不可能,或者這不是最好的方法,是否應該有一個包含標簽列表的附加頂點屬性?
  3. 在選項 2 的情況下,標簽名稱應該是高級標簽( Transaction )還是低級標簽( Order )?

有沒有辦法讓 JanusGraph 接受多個頂點標簽?

不,沒有辦法在 JanusGraph 中擁有多個頂點標簽。

如果不可能,或者這不是最好的方法,是否應該有一個包含標簽列表的附加頂點屬性?

在選項2的情況下,標簽名稱應該是高級標簽(Transaction)還是低級標簽(Order)?

這兩個我一並回答。 根據您上面的描述,我將創建一個標簽,可能命名為 Transaction,並具有與其關聯的不同屬性,例如位置(在線或店內)和類型(購買、退款、退貨、退款等)。 看看你如何描述上面的問題,你實際上只是在談論一個單一的實體,一個交易,其中你用作標簽的所有其他項目(在線/店內,支出/退款)實際上只是關於該交易如何發生的附加元數據。 因此,上述方法將允許對這些屬性中的一個或多個進行簡單過濾,以實現您在 Neo4j 中使用的多個標簽可以完成的任何事情。

暫無
暫無

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

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