我需要一个设计建议来实现数组的索引或关系。我正在使用最新的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之间创建必要的关系吗?
对此的任何帮助将不胜感激。提前谢谢。
答案 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