Gremlin typePromotion 쿼리 힌트 - Amazon Neptune

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Gremlin typePromotion 쿼리 힌트

숫자 값 또는 범위를 필터링하는 Gremlin 순회를 제출할 때 Neptune 쿼리 엔진은 쿼리 실행 시 일반적으로 유형 승격을 사용해야 합니다. 즉, 필터링 대상 값을 포함할 수 있는 모든 유형의 값을 검사해야 합니다.

예를 들어, 55와 같은 값을 필터링하는 경우 엔진은 55와 같은 정수, 55L의 긴 정수, 55.0과 같은 부동 소수점 등을 검색해야 합니다. 각 유형 승격에는 스토리지에 대한 추가 검색이 필요하므로, 겉보기에 간단한 쿼리를 완료하는 데 예상하지 못하게 시간이 오래 걸릴 수 있습니다.

고객 연령 속성이 5보다 큰 모든 버텍스를 검색한다고 가정해 보겠습니다.

g.V().has('customerAge', gt(5))

순회를 철저하게 실행하려면 Neptune은 쿼리를 확장하여 쿼리하려는 값이 승격될 수 있는 모든 숫자 유형을 검사하도록 해야 합니다. 이 경우 gt 필터는 5를 초과하는 정수, 5L 이상의 긴 정수, 5.0을 초과하는 부동 소수점, 5.0을 초과하는 모든 2배수에 적용되어야 합니다. 이러한 각 유형 승격에는 스토리지에 대한 추가 조회가 필요하므로, 이 쿼리에 대해 Gremlin profile API를 실행하면 숫자 필터당 여러 필터가 표시되며 완료하는 데 예상보다 훨씬 오래 걸립니다.

특정 유형의 값만 찾으면 된다는 사실을 미리 알고 있기 때문에 유형 승격이 불필요한 경우가 많습니다. 이 경우 typePromotion 쿼리 힌트를 사용하여 유형 승격을 끄면 쿼리 속도를 크게 높일 수 있습니다.

구문

typePromotion 쿼리 힌트는 쿼리에 withSideEffect 단계를 추가하여 지정합니다.

g.withSideEffect('Neptune#typePromotion', true or false).gremlin-traversal
참고

모든 Gremlin 쿼리 힌트 부작용에는 Neptune#이라는 접두사가 붙습니다.

사용 가능한 값
  • true

  • false

위 쿼리에 대한 유형 승격을 설정 해제하려면 다음을 사용합니다.

g.withSideEffect('Neptune#typePromotion', false).V().has('customerAge', gt(5))