Neptune DFE 쿼리 엔진에서 Gremlin 사용 - Amazon Neptune

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

Neptune DFE 쿼리 엔진에서 Gremlin 사용

DFE 랩 모드에서(neptune_lab_modeDB 클러스터 파라미터를 로 설정하여DFEQueryEngine=enabled) 로 알려진 Neptune 대체 쿼리 엔진을 완전히 활성화하면 Neptune은 읽기 전용 Gremlin 쿼리/트래버설을 중간 논리적 표현으로 변환하고 가능하면 DFE 엔진에서 실행합니다.

그러나 DFE 는 아직 모든 Gremlin 단계를 지원하지 않습니다. 에서 단계를 기본적으로 실행할 수 없는 경우 DFENeptune은 다시 실행 TinkerPop 하여 단계를 실행합니다. explainprofile 보고서에는 이러한 상황이 발생할 경우 경고를 표시합니다.

참고

엔진 릴리스 1.0.5.0부터 기본 지원 없이 Gremlin 단계를 처리하기 위한 기본 DFE 동작이 변경되었습니다. 이전에DFE는 Neptune Gremlin 엔진에서 엔진이 다시 떨어졌지만 이제는 바닐라 TinkerPop 엔진에서 다시 떨어졌습니다.

DFE 엔진에서 기본적으로 지원되는 Gremlin 단계
  • GraphStep

  • VertexStep

  • EdgeVertexStep

  • IdStep

  • TraversalFilterStep

  • PropertiesStep

  • 텍스트 및 Without 조건자가 없는 경우를 제외하고 속성, ids 및 레이블의 버텍스와 엣지에 대한 HasStep 필터링 지원.

  • Path 범위 필터와 함께 WherePredicateStep(ByModulation, SideEffect 또는 Map 조회는 지원하지 않음).

  • ByModulation, SideEffect, Map 조회 지원을 제외한 DedupGlobalStep.

쿼리 계획 인터리빙

번역 프로세스에서 해당 네이티브 DFE 연산자가 없는 Gremlin 단계가 발생하면 Tinkerpop 사용으로 돌아가기 전에 DFE 엔진에서 네이티브로 실행할 수 있는 다른 중간 쿼리 부분을 찾습니다. 이는 최상위 순회에 인터리빙 로직을 적용하여 수행합니다. 결과적으로 지원되는 단계는 가능한 모든 곳에서 사용됩니다.

이러한 모든 중간 비접두사 쿼리 변환은 explainprofile 출력에서 NeptuneInterleavingStep을 사용하여 표현됩니다.

성능 비교를 위해 DFE 엔진을 사용하여 접두사 부분을 실행하는 동안 쿼리에서 인터리빙을 끄는 것이 좋습니다. 또는 접두사가 아닌 쿼리 실행에 TinkerPop 엔진만 사용할 수도 있습니다. 이를 위해 disableInterleaving 쿼리 힌트를 사용할 수 있습니다.

값이 인 사용DFE 쿼리 힌트가 DFE 에서 쿼리를 전혀 실행하지 false 못하게 하는 것처럼 값이 인 쿼리 힌트는 disableInterleaving 쿼리 번역을 위한 DFE 인터리빙을 끕true니다. 예:

g.with('Neptune#disableInterleaving', true) .V().has('genre','drama').in('likes')

Gremlin explainprofile 출력 업데이트

Gremlin Explain은 Neptune이 쿼리를 실행하는 데 사용하는 최적화된 순회에 대한 세부 정보를 제공합니다. DFE 엔진이 활성화될 때 DFE explain 출력이 어떤 모습인지에 대한 예는 샘플 explain 출력을 참조하세요.

Gremlin profile API는 지정된 Gremlin 순회를 실행하고, 실행에 대한 다양한 지표를 수집하며, 자세한 최적화된 쿼리 계획 및 다양한 연산자의 런타임 통계 정보가 포함된 프로필 보고서를 생성합니다. DFE 엔진이 활성화될 때 DFE profile 출력이 어떤 모습인지에 대한 예는 샘플 profile 출력을 참조하세요.

참고

DFE 엔진은 랩 모드에서 릴리스된 실험 기능이므로 explainprofile 출력의 정확한 형식은 변경될 수 있습니다.