2012-08-27 69 views
1

我需要一個設計建議來實現數組的索引或關係。我使用最新的Spring數據的Neo4j及其實施 我有有類別,如下面的場節點,Neo4j的設計建議:數組的索引或關係

@NodeEntity 
Class Product { 

     Set<Category> Categories; 

} 
public enum Category { 
RTW, 
SHOE, 
DENIM, 
OUTER_WEAR 
} 

現在,我需要找出哪些有X和Y類別(EX產品:RTW和SHOE)。 達成此目的的最佳方法是什麼? 我可以在數組類型上創建索引嗎?或者是否應爲類別創建新的NodeEntity並在產品和類別之間創建必要的關係?

任何幫助,這將不勝感激。提前致謝。

回答

3

您應該使用關係,因爲它是圖形數據庫的本質。

[ProductA(Node)] ---[HAS_CATEGORY(Relation)]---> [Category1 (Node)] <--[HAS_CATEGORY(Relation)]---- [ProductB (Node)] 

試想一下,你要顯示的產品在每個類別數量的基礎上,最暢銷的產品,用戶recommandations等最流行的類別......這很容易計算與橫向查詢。你應該使用索引來優化,而不是相關。

看看小鬼的視頻演示,這是真的很強大:http://www.youtube.com/watch?v=5wpTtEBK4-E

春數據支持Cypher和小鬼查詢語言。

在這裏看到有關建模類別的圖形數據庫更多的信息:http://blog.neo4j.org/2010/03/modeling-categories-in-graph-database.html

+0

感謝您的及時回覆靈光。它爲我提供了設計所需的良好信息。我將通過提供的鏈接瞭解更多信息。 –

+1

使用「超節點」時要小心,即它們之間具有太多關係的節點。它減慢了整個分貝。 當與兩百億個節點一起工作時,最好在名稱(RTW,SHOE ...)和它的值的特定節點上創建一個屬性,而不是索引這個屬性,而不是有一個SHOE節點和兩個關係。 – ulkas