세분화된 관계 이름을 사용하여 중복 노드 레이블 확인 방지 - Amazon Neptune

세분화된 관계 이름을 사용하여 중복 노드 레이블 확인 방지

성능 최적화를 위해 노드 패턴에 고유한 관계 레이블을 사용하면 노드에 대한 레이블 필터링을 제거할 수 있습니다. 그래프 모델에서 likes 관계가 두 person 노드 간의 관계 정의에만 사용된다고 가정해 보세요. 이 패턴을 찾기 위해 다음과 같은 쿼리를 작성할 수 있습니다.

MATCH (n:person)-[:likes]->(m:person) RETURN n, m

person 레이블 검사는 n과 m 모두 person 유형일 때만 관계가 나타나도록 정의했으므로 중복됩니다. 성능을 최적화하기 위해 다음과 같이 쿼리를 작성할 수 있습니다.

MATCH (n)-[:likes]->(m) RETURN n, m

이 패턴은 속성이 단일 노드 레이블에 독점적으로 적용될 때도 적용될 수 있습니다. person 노드만 email 속성을 가질 경우, 노드 레이블이 person과 일치하는지 확인하는 것은 중복됩니다. 이 쿼리를 다음과 같이 작성할 수 있습니다.

MATCH (n:person) WHERE n.email = 'xxx@gmail.com' RETURN n

이 쿼리를 다음과 같이 작성하는 것보다 효율성이 떨어집니다.

MATCH (n) WHERE n.email = 'xxx@gmail.com' RETURN n

성능이 중요하고 모델링 과정에서 이러한 엣지 레이블이 다른 노드 레이블 관련 패턴에 재사용되지 않도록 확인 절차가 마련된 경우에만 이 패턴을 채택해야 합니다. 이후 company와 같은 다른 노드 레이블에 email 속성을 추가하면 두 버전의 쿼리 결과는 달라질 것입니다.