2012-09-10 5 views
2

저는 neo4j를 처음 사용하고 있으며 소셜 네트워크를 구축 중입니다. 이 질문을 위해서, 내 그래프는 userevent 개의 노드로 이루어져 있습니다.Neo4j, 어느 것이 더 좋습니까? 여러 관계 또는 속성이있는 관계입니까?

사용자는 초대하거나, 참가하거나, 참석하거나, 주최 할 수 있으며, 각 이벤트는 이전 이벤트의 하위 집합입니다.

각 상태/상태에 대해 여러 개의 관계를 만들거나 현재 상태를 저장하기위한 속성과의 관계를 만들 때 어떤 이점이 있습니까?

+0

난 당신이 하나 개의 관계 유형 (예를 들어, "EVENT")과 그 특성 사용해야합니다 간단한 프로그래밍 코드의 이익을 위해 생각한다 (예를 들어, "상태 : 참석"). 하지만 속도를 극대화해야한다면 아래에 제안 된 관계 유형을 사용하십시오 – ulkas

답변

2

그래프 유형 쿼리는 속성보다는 관계 유형에 대해 내가 이해 한 것보다 더 쉽고 효율적으로 수행됩니다.

관계는 어떻고 관계 유형은 어떻습니까?

Cypher를 사용하여 파이프를 사용하여 여러 유형의 관계를 쿼리 할 수 ​​있습니다 (쿼리에서 선택하지 않을 이벤트와 다른 관계가있는 경우).

업데이트 - 콘솔 예를 추가 : http://console.neo4j.org/?id=woe684

또는, 당신은 단지 약간 더 복잡한 쿼리를 구축 할 필요가 아닌 기존 관계를 남길 수 있습니다,하지만이 사용 사례에 대한 낭비 조금 느낀다.

+0

오늘이 성능 차이가 여전히 사실인지 알고 계십니까? 나는 각각 5 단계로 8 개의 서로 다른 관계가 있습니다. 'value'속성을 사용하여 8 개가 아닌 40 개의 다른 관계 유형을 만들어야합니까? – MrE

+0

예. 캐시 및 스토리지에서 관계 유형은 기본적으로 인덱싱 방식입니다. 8 개의 다른 관계 만있는 경우에는 관계가 없지만 (주어진 노드에서) 수천 개의 EVENT_ATTENDEE 관계와 100 개의 EVENT_HOST 관계 (이 예제에 따라)가있는 경우 EVENT_HOST를 지정하면 다른 관계도 고려하지 않습니다 유형. 당신은 더 많은 관계가 있으므로 더 중요 할 것입니다. –

1

가능한 경우 특성에 의해 규정 된 단일 유형에 대해 다른 관계 유형을 선택하면 그래프를 조회 할 때 성능에 상당한 영향을 줄 수 있습니다. 이전 접근법은 적어도 후자보다 적어도 2 배 더 빠릅니다. 데이터가 하이 레벨 캐시에 있고 네이티브 Java API를 사용하여 그래프를 쿼리 할 때 첫 번째 방법은 단일 홉 트래버스에 대해 8 배 이상 빠릅니다.

출처 : http://graphaware.com/neo4j/2013/10/24/neo4j-qualifying-relationships.html

+0

속성이없는 관계가 있지만 속성이 포함되어있을 때 성능이 어떻습니까? – MAYA

관련 문제