

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# O mecanismo de consulta alternativo (DFE) do Amazon Neptune
<a name="neptune-dfe-engine"></a>

O Amazon Neptune tem um mecanismo de consulta alternativo conhecido como DFE, que usa recursos de instância de banco de dados, como núcleos de CPU, memória I/O e com mais eficiência do que o mecanismo Neptune original.

**nota**  
Com grandes conjuntos de dados, o mecanismo DFE pode não funcionar bem em instâncias t3.

O mecanismo DFE executa consultas SPARQL, Gremlin e openCypher e é compatível com uma ampla variedade de tipos de plano, incluindo de profundidade esquerda, espessos e híbridos. Os operadores do plano podem invocar tanto as operações de computação, que são executadas em um conjunto reservado de núcleos de computação, quanto I/O as operações, cada uma delas executada em seu próprio thread em um I/O pool de threads.

O DFE usa estatísticas pré-geradas sobre os dados do grafo do Neptune para tomar decisões embasadas sobre como estruturar consultas. Consulte [Estatísticas do DFE](neptune-dfe-statistics.md) para obter informações sobre como essas estatísticas são geradas.

A escolha do tipo de plano e do número de threads de computação usados é feita automaticamente com base em estatísticas pré-geradas e nos recursos que estão disponíveis no nó principal do Neptune. A ordem dos resultados não é predeterminada para planos com paralelismo computacional interno.

# Controlar onde o mecanismo DFE do Neptune é usado
<a name="neptune-dfe-enabling-disabling"></a>

Por padrão, o parâmetro [neptune\$1dfe\$1query\$1engine](parameters.md#parameters-instance-parameters-neptune_dfe_query_engine) de uma instância é definido como `viaQueryHint`, o que faz com que o mecanismo DFE seja usado somente para consultas openCypher e para consultas Gremlin e SPARQL que incluam explicitamente a dica de consulta `useDFE` definida como `true`.

É possível habilitar totalmente o mecanismo DFE para que ele seja usado sempre que possível definindo o parâmetro de instância `neptune_dfe_query_engine` como `enabled`.

Você também pode desabilitar o DFE incluindo a dica de consulta `useDFE` para uma [consulta do Gremlin](gremlin-query-hints-useDFE.md) ou [do SPARQL](sparql-query-hints-useDFE.md) específica. Essa dica de consulta permite impedir que o DFE execute essa consulta específica.

É possível determinar se o DFE está habilitado ou não em uma instância usando uma chamada [Status de instância](access-graph-status.md) desta forma:

```
curl -G https://your-neptune-endpoint:port/status
```

Depois, a resposta de status especifica se o DFE está habilitado ou não:

```
{
  "status":"healthy",
  "startTime":"Wed Dec 29 02:29:24 UTC 2021",
  "dbEngineVersion":"development",
  "role":"writer",
  "dfeQueryEngine":"viaQueryHint",
  "gremlin":{"version":"tinkerpop-3.5.2"},
  "sparql":{"version":"sparql-1.1"},
  "opencypher":{"version":"Neptune-9.0.20190305-1.0"},
  "labMode":{
    "ObjectIndex":"disabled",
    "ReadWriteConflictDetection":"enabled"
  },
  "features":{
    "ResultCache":{"status":"disabled"},
    "IAMAuthentication":"disabled",
    "Streams":"disabled",
    "AuditLog":"disabled"
  },
  "settings":{"clusterQueryTimeoutInMs":"120000"}
}
```

Os resultados `explain` e `profile` do Gremlin informam se uma consulta está sendo executada pelo DFE. Consulte [Informações contidas em um relatório `explain` do Gremlin](gremlin-explain-api.md#gremlin-explain-api-results) no caso de `explain` e [Relatórios de `profile` do DFE](gremlin-profile-api.md#gremlin-profile-dfe-output) no caso de `profile`.

Da mesma forma, o `explain` do SPARQL informa se uma consulta SPARQL está sendo executada pelo DFE. Para obter mais detalhes, consulte [Exemplo de saída de `explain` SPARQL quando o DFE está habilitado](sparql-explain-examples.md#sparql-explain-output-dfe) e [Operador `DFENode`](sparql-explain-operators.md#sparql-explain-operator-dfenode).

# Construções de consulta compatíveis com o DFE do Neptune
<a name="neptune-dfe-suppoorts-subset"></a>

No momento, o DFE do Neptune é compatível com um subconjunto de construções de consulta SPARQL e Gremlin.

No caso do SPARQL, trata-se do subconjunto de [padrões de grafos básicos](https://www.w3.org/TR/sparql11-query/#BasicGraphPatterns) conjuntivos.

No caso do Gremlin, geralmente é o subconjunto de consultas que contêm uma cadeia de percursos que não apresentam algumas das etapas mais complexas.

Você pode descobrir se uma de suas consultas está sendo executada total ou parcialmente pelo DFE da seguinte maneira:
+ No Gremlin, os resultados `explain` e `profile` informam quais partes de uma consulta estão sendo executadas pelo DFE, se houver. Consulte [Informações contidas em um relatório `explain` do Gremlin](gremlin-explain-api.md#gremlin-explain-api-results) no caso de `explain` e [Relatórios de `profile` do DFE](gremlin-profile-api.md#gremlin-profile-dfe-output) no caso de `profile`. Consulte também [Ajustar consultas do Gremlin usando `explain` e `profile`](gremlin-traversal-tuning.md).

  Detalhes sobre o suporte ao mecanismo do Neptune para etapas individuais do Gremlin estão documentados em [Suporte a etapas do Gremlin](gremlin-step-support.md).
+ Da mesma forma, o `explain` do SPARQL informa se uma consulta SPARQL está sendo executada pelo DFE. Para obter mais detalhes, consulte [Exemplo de saída de `explain` SPARQL quando o DFE está habilitado](sparql-explain-examples.md#sparql-explain-output-dfe) e [Operador `DFENode`](sparql-explain-operators.md#sparql-explain-operator-dfenode).