2014-11-25 2 views
0

우리는 현재 엔진의 일부로 사용할 neo4j을 평가하고 있습니다. 슬프게도 우리의 사이퍼 쿼리가 받아 들일 수 없을 정도로 느린 것으로 밝혀졌습니다.Neo4J는 "관련 제품 가져 오기"쿼리에 적합한 선택입니까?

그래서 우리는 사이퍼에서 자바로 옮길 생각입니다. 다음 노드 유형들 우리 neo4j 데이터베이스 맵 관계 : IT는 다음과 같은 문제를 해결 자바 플러그인을 만들 가능한겠습니까

  • 고객

    1. 제품
    2. 태그
    3. 제조사

    neo4j DB의 각 관계에는 일정한 비용이 있습니다 (예 : 제품과 Tag_1 간의 연결 비용이 t보다 적습니다. 동일한 제품과 Tag_2 간의 연결 (제품과 특정 사용자 간의 연결보다 비용이 적게 듭니다).

    특정 소스 제품과 가장 유사한 N (10? 20? 100?) 제품을 찾고 싶습니다.
    유사성은 두 노드 간의 경로 부족으로 정의 될뿐만 아니라 소스와 대상 사이의 경로 수에 의해 정의됩니다.

    사이퍼를 사용하면 성능이 매우 저하되므로 Neo4J가이 문제에 적합한 도구인지 질문하기 시작합니다. 여기에있는 모든 Neo4J 전문가를위한 질문 :
    두 노드 사이의 경로 수를 계산하는 Java에서 작은 경로 찾기 알고리즘을 만드는 것이 가능합니까? 응답 시간이 100ms (최대!) 미만이어야합니다.

    • Neo4J 버전 : 사회 2.1.1
    • 노드 : 650,000
    • 제품 노드 : 550,000
    • 속성 : 8,000,000
    • 우리 neo4j 서버는 순간 다음과 같습니다 관계 : 6,000,000

    • 관계 유형 : 9

    미리 감사드립니다.

  • 답변

    1

    this extension을 살펴보십시오. GraphAware Framework 및 Algorithms 확장을 사용하거나 repo의 코드를보고 자체 관리되지 않는 확장을 작성할 수 있습니다.

    우리는 비슷한 요구 사항을 가진 클라이언트의 repo에 경로 찾기 알고리즘을 작성했습니다. 쿼리 시간이 수 초에서 수 밀리 초로 단축되었습니다.