Neptune DFE 쿼리 엔진과 함께 Gremlin 사용 - Amazon Neptune

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

Neptune DFE 쿼리 엔진과 함께 Gremlin 사용

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

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

참고

엔진 릴리스 1.0.5.0부터 DFE는 기본적으로 지원하지 않는 단계를 발견하면 Neptune Gremlin 엔진이 아닌 기본 TinkerPop 엔진으로 돌아갑니다.

쿼리 계획 인터리빙

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

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

성능을 비교할 목적이라면 DFE 엔진을 사용하여 접두사 부분을 실행하면서 쿼리의 인터리빙을 설정 해제하는 것이 좋습니다. 아니면 비접두사 쿼리 실행에는 TinkerPop 엔진만 사용하세요. 이를 위해 disableInterleaving 쿼리 힌트를 사용할 수 있습니다.

값이 falseuseDFE 쿼리 힌트가 DFE에서 쿼리가 아예 실행되지 않도록 하는 것처럼, 값이 truedisableInterleaving 쿼리 힌트는 쿼리 변환에 대한 DFE 인터리빙을 설정 해제합니다. 예시:

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

Gremlin explainprofile 출력 업데이트

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

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

참고

DFE 엔진은 랩 모드에서 출시된 실험용 기능이기 때문에 explainprofile 출력의 정확한 형식은 변경될 수 있습니다.