簡體   English   中英

Neo4j設計:財產與“節點與關系”

[英]Neo4j Design: Property vs “Node & Relationship”

我有一個節點類型,其字符串屬性通常具有相同的值。 等等。數百萬個節點只有該字符串值的5個選項。 我將通過該屬性進行搜索。

我的問題是在性能和​​內存方面更好:a)將其實現為節點屬性並具有大量重復(並使用WHERE進行搜索)。 b)將其實現為5個額外節點,其中所有原始節點引用其中一個節點(並使用額外的MATCH進行搜索)。

在不了解更多細節的情況下,很難給出通用答案。

從性能角度來看,最好盡早限制搜索。 如果您不必查看遍歷的屬性,那將更加有益。

鑒於我認為最好將lookup屬性移動到單獨的節點並將該值用作關系類型。

使用標簽 ; 這篇博文是這個新的Neo4j 2.0功能的一個很好的介紹:

我也想過這個問題。 就我而言,我必須代表州:

  • 已啟動
  • 進行中
  • 提交
  • 已完成

總體而言,Node + Relationship方法看起來更具吸引力,因為每次只需要維護一個關系引用而不是屬性字符串,並且您不需要掃描必須在屬性上維護的額外附加索引(內存和表現將直觀地支持這種方法)。

另一個優點是它很容易支持節點鏈接到多個“特殊節點”的能力。 如果您預見到模型中應該可以實現這種情況,那么這比使用屬性數組(以及使用“in”進行搜索)更好。

在實踐中,我發現問題變成了,每次如何訪問這些特殊節點。 您可以維護某種常量引用,其中您擁有這些特殊節點的節點ID,您可以在START語句中直接跳轉到這些節點ID (這是我們的工作),或者您需要針對特殊節點的屬性進行搜索時間(也許是名字),然后遍歷它的關系。 這並不適用於最漂亮的密碼查詢。

暫無
暫無

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

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