기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
랩 모드에서 DFE라고 하는 Neptunes 대체 쿼리 엔진을 활성화하면(neptune_lab_mode
DB 클러스터 파라미터를 로 설정하여DFEQueryEngine=enabled
) Neptune은 읽기 전용 Gremlin 쿼리/트래버스를 중간 논리적 표현으로 변환하고 가능하면 DFE 엔진에서 실행합니다.
하지만 DFE는 아직 모든 Gremlin 단계를 지원하지는 않습니다. DFE에서 기본적으로 단계를 실행할 수 없는 경우 Neptune은 TinkerPop으로 폴백하여 단계를 실행합니다. explain
및 profile
보고서에는 이러한 상황이 발생할 경우 경고를 표시합니다.
참고
엔진 릴리스 1.0.5.0부터 네이티브 지원 없이 Gremlin 단계를 처리하기 위한 기본 DFE 동작이 변경되었습니다. 이전에는 DFE 엔진이 Neptune Gremlin 엔진으로 대체되었지만, 이제는 vanilla 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 엔진에서 기본적으로 실행할 수 있는 다른 중간 쿼리 부분을 찾으려고 합니다. 이는 최상위 순회에 인터리빙 로직을 적용하여 수행합니다. 결과적으로 지원되는 단계는 가능한 모든 곳에서 사용됩니다.
이러한 모든 중간 비접두사 쿼리 변환은 explain
및 profile
출력에서 NeptuneInterleavingStep
을 사용하여 표현됩니다.
성능을 비교할 목적이라면 DFE 엔진을 사용하여 접두사 부분을 실행하면서 쿼리의 인터리빙을 설정 해제하는 것이 좋습니다. 아니면 비접두사 쿼리 실행에는 TinkerPop 엔진만 사용하세요. 이를 위해 disableInterleaving
쿼리 힌트를 사용할 수 있습니다.
값이 false
인 useDFE 쿼리 힌트가 DFE에서 쿼리가 아예 실행되지 않도록 하는 것처럼, 값이 true
인 disableInterleaving
쿼리 힌트는 쿼리 변환에 대한 DFE 인터리빙을 설정 해제합니다. 예시:
g.with('Neptune#disableInterleaving', true) .V().has('genre','drama').in('likes')
Gremlin explain
및 profile
출력 업데이트
Gremlin Explain은 Neptune이 쿼리를 실행하는 데 사용하는 최적화된 순회에 대한 세부 정보를 제공합니다. DFE 엔진이 활성화되었을 때 explain
출력이 어떻게 보이는지에 대한 예제는 샘플 DFE explain 출력을 참조하세요.
Gremlin profile API는 지정된 Gremlin 순회를 실행하고, 실행에 대한 다양한 지표를 수집하며, 자세한 최적화된 쿼리 계획 및 다양한 연산자의 런타임 통계 정보가 포함된 프로필 보고서를 생성합니다. DFE 엔진이 활성화되었을 때 profile
출력이 어떻게 보이는지에 대한 예제는 샘플 DFE profile 출력을 참조하세요.
참고
DFE 엔진은 랩 모드에서 출시된 실험용 기능이기 때문에 explain
및 profile
출력의 정확한 형식은 변경될 수 있습니다.