2014-01-21 4 views
1

소셜 그래프의 퍼포먼스 향상에 관한 어드바이스가 필요합니다. 대상 쿼리는 작은 결과 번호로 올바르게 작동합니다. 하지만 1000 개가 넘는 행이있는 큰 결과를 반환 할 수 있습니다. 사이퍼 쿼리의 대용량 반응으로 성능을 조정할 수 있습니까?Neo4j 소셜 그래프 퍼포먼스 대

사이퍼 쿼리를 사용 : 친구가 표현되는 여러 데이터 항목을 가질 수

friend1Node-[:FRIEND]->friend1Node 

:

START givenFriend=node:Nodes('id:709387498'), 
item=node:ItemCat1Cat2('category:a.b') 
MATCH p = givenFriend-[:FRIEND]-friend1-[:FRIEND]-friend2-[:DATA]->item 
RETURN p, item 

Neo4j 코어 1.9.5

그래프는 연결된 친구 포함 속성을 갖는 노드로서 :

friendNode-[:DATA]->DataNode 

데이터 노드에는 약 8 개의 속성이 있습니다. 그 중에는 카테고리 속성이 있습니다. 데이터 항목 노드는 범주별로 인덱싱됩니다.

친구는 노드 수 : 650,772

친구 관계 번호 : 842755

데이터 항목은 노드 수 : 5,640

와 데이터 항목에 주어진 노드 ID의 모든 경로를 선택해야 개선을 요구 쿼리 2 명의 친구를 통해 정의 된 카테고리.

givenFriend-friend1-friend2-dataItem 

는 성능을 향상 호랑이 용기 수 : 경로는 다음과 같은보기가?

2.0.0으로 마이그레이션하면 db 모델과 쿼리 성능이 향상 될 수 있습니까?

** UPD

  1. 내가 PHP 라이브러리 https://github.com/jadell/neo4jphp 를 사용하지만 다른 변종 오픈입니다. 지금 나는 신교 (Golang)를보고있다. 또한 neo4j 확장을 사용하여 쿼리를 수행하는 방법을 고려했습니다. 대상 쿼리는 neo4j 대시 보드를 통해 테스트됩니다. 그래서 클라이언트 층은 결석했다.
  2. php lib의 최신 버전이 X-Stream을 사용하고 있습니다. 내 것이 아니야. 그러나 쿼리가 클라이언트없이 테스트되었으므로이 요소는 생략 할 수 있습니다.
  3. 질문이 좋았습니다. 쿼리를 조정했습니다. 노드는 아니지만 필요한 속성을 반환하고 성능이 약간 향상되었습니다.
  4. SLA에 대해 올바르게 이해하면 이러한 유형의 요청은 동시성 100 및 요청 당 허용 가능한 응답 시간 2와 함께 작동해야합니다.대시 보드를 통해 쿼리 응답 시간 = 3208ms

    7000 LIMIT를 SKIP

    LIMIT 3000

LIMIT 1 = 195ms

LIMIT 100 = 564ms

LIMIT 1000 = 1549ms (1) = 2051ms

응답에는 최대 13,000 개의 레코드가 포함될 수 있습니다.

답변

2
  1. 어떤 고객을 사용합니까?
  2. 스트리밍을 사용하고 있습니까? 즉, X-Stream : true 헤더
  3. 경로 또는 노드가 아닌 필요로하는 데이터 만 반환하므로 실제로 사용 사례를 수행해야하는 속성 만 반환합니다.
  4. 2.0.1은 트랜잭션 엔드 포인트

당신의 SLA 및 현재의 응답 시간은 무엇인가에 대한 성능을 향상시킬 것인가? 응답은 얼마나 큽니까?

+0

답변이 ** UPD –

+0

에 추가됩니다. 데이터 영역 리팩토링없이 성능을 향상시킬 수있는 기회가 있습니까? –

관련 문제