단일 사용자를 위해 수천 개의 관계를 허용하는 데 가장 좋은 디자인은 무엇입니까?Neo4j 그래프 디자인 - 헤더/카테고리 노드?
-
이 이미지 참조 (소셜 네트워킹 응용 프로그램에서 작업 당신이 어떤 "일반적인"소셜 네트워크 설계를 알고 있다면 .. 도움이 될 것을 지적하시기 바랍니다) - 상태 업데이트를 연결리스트를 나타냅니다를, 관심사는 다른 관심사를 나타내는 반면, 이러한 관심사는 단일 사용자를 위해 수천 개의 노드로 크게 날아갈 수 있습니다. 이렇게하면 일종의 슈퍼 노드 문제가 발생하지 않을까요?
그림
1은 더 나은 디자인은 그 이익에 대한 범주, 또는 "헤더"노드를 가지고하는 다음 두 가지 이익이 카테고리 노드에 해당이겠습니까? 처음에는 사용자 노드와 몇 개의 관계/헤더 노드를 처리 할 때 수천 개의 노드가 사용자 노드와 직접 관련되는 대신 효율적이라고 생각합니다.
예 : 그림 2 사용자
|
+ 이익 +
+ ----- 관심
+ ----- 관심이
+ ----- 등 ...
그리고
은 이익도 "서브 헤더를"하지 말았어야 예컨대 같은 "책", "영화", "제품"으로 분류 노드 :
**FIGURE 3**
User
|
+ interests+
+ books+
| + interest
| + interest
| + interest
+ movies+<br>
+ interest
+ interest
+ interest
여기
내 질문이다 (물론 나는 n00b가 네오을 해요) :
어떤 모델은 고성능에 가장 적합한, 확장, 시스템과 같은 페이스 북 - 범주없이 하나, 또는 하나? 성능을 염두에 두십시오.
관심사가 항상 수천 노드에 날아 가지 않을 수도 있습니다 - 12 개 또는 100 일 수 있음 - 추가 카테고리 디자인이 너무 많은 오버 헤드를 추가합니까? 자신이 좋아하는 친구를 찾는 것을 고려해보십시오. 카테고리를 추가하면 오버 헤드가 너무 많이 추가됩니까?
후자의 이미지 (카테고리 및 하위 카테고리 노드가있는 이미지)는 성능이 좋고 조직적으로 좋지는 않습니까?
범주 노드 대신 범주가 무엇인지 설명하는 범주 속성이 있어야합니까? 그리고 카테고리 속성을 가진 노드를 인덱스에 추가하는 것이 카테고리 노드를 갖는 것만 큼 좋을까요?
질문 4와 관련하여 색인에 범주가있는 노드를 추가하는 것이 더 나은 해결책입니까?
이러한 유형의 구조에는 어떤 단점이 있습니까?그들은 진짜 이점이 있습니까?
글쎄, 저는 수백만 개의 연결을 디자인하려고합니다. 책 X와 같은 FOF를 찾으십시오. 그러나 모든 사용자를 살펴보고 책을 좋아하는 사용자를 찾고 싶습니다. Y (fof 쿼리가 아닙니다.) .. 그래서 그것은 두 가지 방법입니다 ..하지만 모든 사용자와 모든 관심사를 조사하기 위해 그래프 데이터를 항상 hadoop에 던질 수 있습니다 - 분석은 대규모의 경우 반드시 neo4j에 있어야 할 필요는 없습니다. 그림 쿼리 .. –
당신이 책에서 시작할 수 있다면, 그것은 단지 두 단계 홉입니다 범주와 함께 모든 후 사용자에게 도착하는 것은 매우 간단해야합니다. 상대방 (모든 사용자)에서 시작하여 특정 책을 찾으려고하면 더 많이 참여하게됩니다. 백그라운드에서 쿼리를 실행하고 쿼리 결과를 나타내는 추가 그래프 구조를 만들 수 있습니다. –
Michael - danke .. 소셜 네트워크 스키마를 게시 한이 질문에 대한 귀하의 의견은 무엇입니까? http://stackoverflow.com/questions/15714963/neo4j-graph-model-for-a-social-network –