다른 소스 시스템의 임시 데이터 세트를 포함하기 위해 neo4j를 사용하고 있습니다. 내 데이터는 ~ 4 ~ 7 개의 다양한 유형의 하위 오브젝트 계층을 포함하는 몇 개의 상위 오브젝트로 구성됩니다. 데이터 세트당 총 개체 수는 2,000 ~ 150 만 개입니다. 필자는 파이썬 py2neo 라이브러리를 사용하고 있습니다.이 라이브러리는 데이터 생성 단계에서 좋은 성능을 보였고보고를 위해 사이퍼 쿼리를 통과했습니다.neo4j에서 관련없는 데이터 세트를 분리하는 최적의 방법은 무엇입니까?
쿼리 및 퍼지 목적으로 관련없는 시스템에서 데이터 세트를 분리하고 싶지만 성능이 걱정됩니다. 몇 가지 아이디어가 있지만 나에게 실행 가능성이 가장 높은 것은 분명하지 않습니다.
가장 쉽게 구현할 수있는 코드는 최상위 "프로젝트"객체입니다. 그 프로젝트 객체는 몇 개의 직접적인 자식 (관계를 통해)과 많은 간접적 인 자식을 가질 것이다. 나는 프로젝트별로 필터링하고 싶을 때 관계 와일드 카드
MATCH (pr:project)<-[:IN_PROJECT*7]-(c:child_object)
거리를 사용해야 할 것인데, 그것은 매우 비싼 쿼리와 비슷하게 보입니다.또한 프로젝트 개체와 프로젝트의 다른 모든 개체 사이에 직접적인 관계를 만들 수 있습니다.
MATCH (pr:project)<-[:IN_PROJECT]-(c:child_object)
이것은 쿼리 작성이 쉬워야하지만 잠재적으로 수백만 개의 관계가있는 단일 개체가있을 때 어떤 일이 발생할지 모릅니다.마지막으로 데이터 세트의 모든 단일 개체에 project-id 속성을 설정할 수있었습니다.
MATCH (c:child_object {project-id:"A1B2C3"})
그것은 낭비적인 해결책 인 것처럼 보이지만 그래프 DB 모델에서 성능이 현명 할 수도 있습니다.
샘플 Cypher 쿼리/neo4j 용어를 잘못 작성한 경우 사과드립니다. 나는 6 주 동안이 프로젝트를 제쳐두고 조금 녹슬었다.
재미있게도 [OCIM3] (http://www.opencypher.org/event/2017/11/13/ocim3/) 오픈 오피스는 이미 프랑스에서 개최되었습니다. 이벤트의 주요 주제는 "Multiple Graphs"를 처리하는 것이 었습니다.이 방법은이 문제를 해결할 수있는 좋은 방법입니다. 그때까지는 해결 방법이 남아 있습니다. 내가 선호하는 방법을 1 분 안에 추가하겠습니다. –