

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

# Neptune DFE 쿼리 엔진과 함께 Gremlin 사용
<a name="gremlin-with-dfe"></a>

([neptune\$1dfe\$1query\$1engine](parameters.md#parameters-instance-parameters-neptune_dfe_query_engine)인스턴스 파라미터를 로 설정하여`enabled`) DFE라고 하는 Neptune의 [대체 쿼리 엔진을](neptune-dfe-engine.md) 활성화하면 Neptune은 읽기 전용 Gremlin 쿼리/트래버스를 중간 논리적 표현으로 변환하고 가능하면 DFE 엔진에서 실행합니다.

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

## 쿼리 계획 인터리빙
<a name="gremlin-with-dfe-interleaving"></a>

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

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

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

값이 `false`인 [useDFE](gremlin-query-hints-useDFE.md) 쿼리 힌트가 DFE에서 쿼리가 아예 실행되지 않도록 하는 것처럼, 값이 `true`인 `disableInterleaving` 쿼리 힌트는 쿼리 변환에 대한 DFE 인터리빙을 설정 해제합니다. 예제:

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

## Gremlin `explain` 및 `profile` 출력 업데이트
<a name="gremlin-with-dfe-explain-update"></a>

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

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

**참고**  
Gremlin에 대한 DFE 지원은 실험적 기능이므로 `explain` 및 `profile` 출력의 정확한 형식은 변경될 수 있습니다.