

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# El motor de consultas alternativo (DFE) de Amazon Neptune (DFE)
<a name="neptune-dfe-engine"></a>

Amazon Neptune tiene un motor de consultas alternativo denominado DFE que utiliza recursos de instancias de base de datos, como núcleos de CPU y memoria, y de forma I/O más eficiente que el motor Neptune original.

**nota**  
Con conjuntos de datos de gran tamaño, es posible que el motor DFE no funcione bien en las instancias t3.

El motor DFE ejecuta consultas SPARQL, Gremlin y openCypher, y es compatible con una amplia variedad de tipos de planes, incluidos planes left-deep, bushy e híbridos. Los operadores del plan pueden invocar tanto operaciones de cómputo, que se ejecutan en un conjunto reservado de núcleos de cómputo, como I/O operaciones, cada una de las cuales se ejecuta en su propio subproceso de un grupo de subprocesos. I/O 

El DFE utiliza estadísticas pregeneradas sobre los datos de los gráficos de Neptune para tomar decisiones informadas sobre cómo estructurar las consultas. Consulte [Estadísticas del DFE](neptune-dfe-statistics.md) para obtener información sobre cómo se generan estas estadísticas.

La elección del tipo de plan y el número de subprocesos de computación utilizados se realiza automáticamente en función de las estadísticas generadas previamente y de los recursos disponibles en el nodo principal de Neptune. El orden de los resultados no está predeterminado para los planes que tienen un paralelismo de computación interno.

# Control sobre dónde se usa el motor DFE de Neptune
<a name="neptune-dfe-enabling-disabling"></a>

De forma predeterminada, el parámetro de instancia [neptune\$1dfe\$1query\$1engine](parameters.md#parameters-instance-parameters-neptune_dfe_query_engine) de una instancia está establecido en `viaQueryHint`, lo que hace que el motor DFE solo se utilice para las consultas de openCypher y para las consultas de Gremlin y SPARQL que incluyen explícitamente la sugerencia de consulta `useDFE` establecida en `true`.

Para habilitar por completo el motor DFE para que se utilice siempre que sea posible, defina el parámetro de instancia `neptune_dfe_query_engine` en `enabled`.

También puede deshabilitar el DFE incluyendo la sugerencia de consulta `useDFE` para una [consulta de Gremlin](gremlin-query-hints-useDFE.md) o una [consulta de SPARQL](sparql-query-hints-useDFE.md) en particular. Esta sugerencia de consulta le permite impedir que el DFE ejecute esa consulta concreta.

Puede determinar si el DFE está habilitado o no en una instancia mediante una llamada [Estado de la instancia](access-graph-status.md), de la siguiente manera:

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

A continuación, la respuesta de estado especifica si el DFE está habilitado o no:

```
{
  "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"}
}
```

Los resultados de `explain` y `profile` de Gremlin indican si el DFE está ejecutando una consulta. Consulte [Información contenida en un informe `explain` de Gremlin](gremlin-explain-api.md#gremlin-explain-api-results) para `explain` y [Informes `profile` de DFE](gremlin-profile-api.md#gremlin-profile-dfe-output) para `profile`.

Del mismo modo, `explain` de SPARQL le indica si el DFE está ejecutando una consulta de SPARQL. Para obtener más información, consulte [Ejemplo de salida `explain` de SPARQL cuando el DFE está habilitado](sparql-explain-examples.md#sparql-explain-output-dfe) y [operador `DFENode`](sparql-explain-operators.md#sparql-explain-operator-dfenode).

# Componentes de consulta compatibles con el DFE de Neptune
<a name="neptune-dfe-suppoorts-subset"></a>

Actualmente, el DFE de Neptune admite un subconjunto de componentes de consultas de SPARQL y Gremlin.

En el caso de SPARQL, se trata del subconjunto de [patrones gráficos básicos](https://www.w3.org/TR/sparql11-query/#BasicGraphPatterns) conjuntivos.

En el caso de Gremlin, generalmente es el subconjunto de consultas que contiene una cadena de recorridos que no contienen algunos de los pasos más complejos.

Puede averiguar si el DFE ejecuta una de sus consultas total o parcialmente de la siguiente manera:
+ En Gremlin, los resultados de `explain` y `profile` indican qué partes de una consulta está ejecutando el DFE, si las hay. Consulte [Información contenida en un informe `explain` de Gremlin](gremlin-explain-api.md#gremlin-explain-api-results) para `explain` y [Informes `profile` de DFE](gremlin-profile-api.md#gremlin-profile-dfe-output) para `profile`. Consulte también [Ajuste de las consultas de Gremlin mediante `explain` y `profile`](gremlin-traversal-tuning.md).

  Los detalles sobre la compatibilidad del motor de Neptune para pasos individuales de Gremlin están documentados en [Compatibilidad con pasos de Gremlin](gremlin-step-support.md).
+ Del mismo modo, `explain` de SPARQL le indica si el DFE está ejecutando una consulta de SPARQL. Para obtener más información, consulte [Ejemplo de salida `explain` de SPARQL cuando el DFE está habilitado](sparql-explain-examples.md#sparql-explain-output-dfe) y [operador `DFENode`](sparql-explain-operators.md#sparql-explain-operator-dfenode).