2014-03-19 51 views
1

我有一個約50萬個嵌入到Java應用程序的數據集。我試着去完成這樣的:在neo4j中模擬「創建視圖」功能的替代方法是什麼?

1 - 執行的朋友 - 的 - 朋友喜歡暗號查詢(「MATCH (n)-[r:rel*3]->(m) return n,r,m」) 2 - 這些子集

的想法就像是在SQL創建視圖下進行查詢。我在谷歌組閱讀這篇文章,看起來像我的擔心。

https://groups.google.com/forum/#!searchin/neo4j/sql$20view/neo4j/kFa8_ZJYzEM/0KuulGphrTYJ

你認爲標註的節點,爲某種標誌,在第一個查詢是最好的選擇?在性能方面,當我回想起「標誌」節點時,即使速度很快,我也會在整個數據集上重新運行查詢,所以我認爲它有點消耗。 有沒有其他的neo4j函數我忘記了?謝謝。

回答

1

用某種標誌標記節點似乎不是一個很好的選擇。在這種情況下,您仍然必須查詢具有特殊屬性的節點,爲什麼不重新發出創建該視圖的原始查詢?

順便說一句,應該保留一個選項 - 只是根據需要重新發布查詢。副手,你有其他幾個選擇:

  1. 在java層實現一個traversal封裝/返回視圖應該是什麼,然後使用它。
  2. 而不是增加一個屬性,你可以將標籤添加到節點via a create statement(你仍然必須查詢那些有你的「查看」標籤,做任何事情與你的「視圖」節點)
  3. 創建一個特殊的索引節點。將其標記爲「VIEW」。然後創建從該索引節點到視圖中所有節點的關係(例如VIEWNODE- [r:contains] - > someObjectInView)。通過抓取該索引節點句柄並僅遍歷[r:contains],可以快速「重新計算」該視圖。

最終你選擇什麼取決於你想對「視圖」進行的查詢。

相關問題