2012-08-27 2 views
1

배열에 대한 색인 또는 관계 구현을위한 설계 제안이 필요합니다. 나는 지금, 나는 아래 같은 카테고리의 필드가 노드를 구현 에 대한Neo4j를위한 제안 사항 : 배열의 색인 또는 관계

@NodeEntity 
Class Product { 

     Set<Category> Categories; 

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

를 최신 봄 데이터 Neo4j를 사용하고, 나는 X 및 전직을위한 Y 범주를 (이 제품을 찾을 필요가 : RTW를 및 SHOE). 이것을 달성하는 가장 좋은 방법은 무엇입니까? 배열 유형에 대한 색인을 만들 수 있습니까? 또는 카테고리에 대한 새로운 NodeEntity를 만들고 Product와 Category 사이에 필요한 관계를 만들까요?

이 문제에 대한 도움을 주시면 감사하겠습니다. 미리 감사드립니다.

답변

3

관계는 그래프 데이터베이스의 특성이므로 사용해야합니다.

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

는 각 카테고리에서 제품의 수를 표시 할 것을 상상해 등 최고 판매 제품, 사용자 recommandations을 기반으로 가장 인기있는 카테고리 ... 그것은 횡단 쿼리 계산하기 쉽다. 당신은 관련성이 없도록 최적화하기 위해 인덱스를 사용해야합니다.

이 놈아의 비디오 프레 젠 테이션에서보세요, 정말 강력 : http://www.youtube.com/watch?v=5wpTtEBK4-E

봄 데이터는 사이퍼와 그렘린 쿼리 언어를 지원합니다. 프롬프트 응답 엠마누엘에 대한 http://blog.neo4j.org/2010/03/modeling-categories-in-graph-database.html

+0

감사 :

그래프 데이터베이스 모델링 범주에 대한 자세한 정보를 보시려면 여기를 참조하십시오. 그것은 저에게 디자인에 필요한 좋은 정보를주었습니다. 자세한 내용은 제공된 링크를 통해 살펴 보겠습니다. –

+1

"슈퍼 노드", 즉 노드가 너무 많은 노드를 사용할 때는주의하십시오. 전체 데이터베이스 속도가 느려집니다. 노드를 사용하여 작업 할 때 특정 노드에서 이름 (RTW, SHOE ...) 및 값을 가진 속성을 만드는 것이 더 좋을 수 있으며, 관계의 빌리온이있는 SHOE 노드가 아닌이 속성을 인덱싱하는 것이 좋습니다. – ulkas

관련 문제