Neo4j的设计建议:Array的索引或关系

时间:2012-08-27 11:44:49

标签: neo4j spring-data-neo4j

我需要一个设计建议来实现数组的索引或关系。我正在使用最新的Spring Data Neo4j来实现它 我有一个Node,其中包含以下类别的字段,

@NodeEntity
Class Product {

      Set<Category> Categories;

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

现在,我需要找出具有X和Y类别的产品(例如:RTW和SHOE)。 实现这一目标的最佳方法是什么? 我可以在数组类型上创建索引吗?或者我应该为类别创建一个新的NodeEntity并在Product和Category之间创建必要的关系吗?

对此的任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:3)

您应该使用关系,因为它是图数据库的本质。

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

想象一下,您希望显示每个类别中的产品数量,基于最畅销产品,用户推荐等最受欢迎的类别......使用横向查询可以轻松计算。您应该使用索引来优化,而不是关联。

看看gremlin的视频演示,它非常强大:http://www.youtube.com/watch?v=5wpTtEBK4-E

Spring Data支持Cypher和Gremlin查询语言。

有关图表数据库中建模类别的更多信息,请参阅此处:http://blog.neo4j.org/2010/03/modeling-categories-in-graph-database.html