배경 : 다음은 Graph Databases 책에서 발췌 한 것으로 Neo4j 책에서 언급 된 성능 테스트를 다룹니다 .
그래프의 관계는 자연스럽게 경로를 형성합니다. 그래프 조회 또는 순회는 다음 경로를 포함합니다. 데이터 모델의 근본적인 경로 지향적 특성으로 인해 대부분의 경로 기반 그래프 데이터베이스 작업은 데이터가 배치되는 방식과 밀접하게 연계되어있어 매우 효율적입니다. 파트너와 Vukotic는 자신의 저서 Neo4j in Action에서 관계형 상점과 Neo4j를 사용하여 실험을 수행합니다.
파트너와 Vukotic의 실험은 소셜 네트워크에서 친구의 친구를 최대 5 명까지 찾으려고합니다. 두 사람이 무작위로 선택되면 최대 5 개의 관계가있는 사람들을 연결하는 경로가 있습니까? 각각 약 50 명의 친구가있는 1,000,000 명을 포함하는 소셜 네트워크의 경우, 표 2-1에서 볼 수 있듯이 그래프 데이터베이스가 연결된 데이터에 가장 적합한 선택임을 강력하게 제안합니다.
표 2-1. 관계형 데이터베이스에서 확장 된 친구 찾기와 Neo4j의 효율적인 찾기
Depth RDBMS Execution time (s) Neo4j Execution time (s) Records returned 2 0.016 0.01 ~2500 3 30.267 0.168 ~110,000 4 1543.505 1.359 ~600,000 5 Unfinished 2.132 ~800,000
깊이있는 2 (친구)는 관계형 데이터베이스와 그래프 데이터베이스 모두 온라인 시스템에서 이들을 사용할 수있을 정도로 성능이 우수합니다. Neo4j 쿼리는 관계형 쿼리 시간의 3 분의 2에서 실행되지만, 최종 사용자는 둘 사이의 밀리 초 차이를 거의 인식하지 못합니다. 그러나 깊이 3 (친구의 친구)에 도달 할 때까지 관계형 데이터베이스는 더 이상 합리적인 시간 안에 쿼리를 처리 할 수 없다는 것이 분명합니다. 완료하는 데 걸리는 30 초는 완전히 받아 들일 수 없습니다 온라인 시스템. 반대로 Neo4j의 응답 시간은 비교적 평평한 상태로 유지됩니다. 온라인 시스템에 대해 충분히 빠른 속도로 쿼리를 수행 할 수 있습니다.
깊이 4에서 관계형 데이터베이스는 대기 시간이 길어 온라인 시스템에 실질적으로 쓸모가 없습니다. Neo4j의 타이밍도 약간 저하되었지만 여기서 지연 시간은 반응 형 온라인 시스템에 적합합니다. 마지막으로 깊이 5에서 관계형 데이터베이스는 쿼리를 완료하는 데 너무 오래 걸립니다. 반대로 Neo4j는 약 2 초 안에 결과를 반환합니다. 깊이 5에서 거의 전체 네트워크가 우리의 친구입니다. 실제로 많은 유스 케이스의 경우 결과와 타이밍을 다듬을 것입니다.
질문은 :