Administrar las estadísticas para que las use Neptuno DFE - Amazon Neptune

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.

Administrar las estadísticas para que las use Neptuno DFE

nota

Support for openCypher depende del motor de DFE consultas de Neptune.

El DFE motor estuvo disponible por primera vez en modo laboratorio en la versión 1.0.3.0 del motor de Neptuno y, a partir de la versión 1.0.5.0 del motor de Neptuno, pasó a estar habilitado de forma predeterminada, pero solo para su uso con sugerencias de consulta y como soporte. openCypher

A partir de la versión 1.1.1.0 del motor Neptune, el DFE motor ya no está en modo laboratorio y ahora se controla mediante el parámetro de neptune_dfe_query_engine instancia del grupo de parámetros de base de datos de una instancia.

El DFE motor utiliza la información sobre los datos del gráfico de Neptune para hacer concesiones efectivas al planificar la ejecución de las consultas. Esta información adopta la forma de estadísticas que incluyen los denominados conjuntos de características y estadísticas de predicados que pueden guiar la planificación de las consultas.

A partir de la versión 1.2.1.0 del motor, puede recuperar información resumida sobre su gráfico a partir de estas estadísticas utilizando el punto final o el punto final. GetGraphSummaryAPIsummary

Actualmente, estas DFE estadísticas se vuelven a generar cada vez que se modifican más del 10% de los datos del gráfico o cuando las estadísticas más recientes tienen más de 10 días de antigüedad. Sin embargo, estos desencadenadores pueden cambiar en el futuro.

nota

La generación de estadísticas está deshabilitada en las instancias T3 y T4g porque puede superar la capacidad de memoria de esos tipos de instancias.

Puede gestionar la generación de DFE estadísticas a través de uno de los siguientes puntos finales:

  • https://your-neptune-host:port/rdf/statistics (paraSPARQL).

  • https://your-neptune-host:port/propertygraph/statistics(para Gremlin yopenCypher), y su versión alternativa:. https://your-neptune-host:port/pg/statistics

nota

A partir de la versión 1.1.1.0 del motor, el punto de conexión de las estadísticas de Gremlin (https://your-neptune-host:port/gremlin/statistics) está en desuso a favor del punto de conexión propertygraph o pg. Sigue siendo compatible con versiones anteriores, pero es posible que se elimine en futuras versiones.

A partir de la versión 1.2.1.0 del motor, el punto final de SPARQL estadísticas (https://your-neptune-host:port/sparql/statistics) está en desuso en favor del punto final. rdf Sigue siendo compatible con versiones anteriores, pero es posible que se elimine en futuras versiones.

En los ejemplos siguientes, se refiere a $STATISTICS_ENDPOINT cualquiera de estos puntos finales. URLs

nota

Si un punto final de DFE estadísticas está en una instancia de lector, las únicas solicitudes que puede procesar son las solicitudes de estado. Otras solicitudes fallarán con una ReadOnlyViolationException.

Límites de tamaño para la DFE generación de estadísticas

Actualmente, la generación de DFE estadísticas se detiene si se alcanza alguno de los siguientes límites de tamaño:

  • El número de conjuntos de características generados no puede superar los 50 000.

  • El número de estadísticas de predicados generadas no puede superar el millón.

Estos límites pueden cambiar.

Estado actual de las estadísticas DFE

Puede comprobar el estado actual de las DFE estadísticas mediante la siguiente curl solicitud:

curl -G "$STATISTICS_ENDPOINT"

La respuesta a una solicitud de estado contiene los siguientes campos:

  • status— el código de HTTP devolución de la solicitud. Si la solicitud se ha realizado correctamente, el código es 200. Consulte Errores comunes para obtener una lista de los errores comunes.

  • payload:

    • autoCompute: (booleano) indica si la generación automática de estadísticas está habilitada o no.

    • active— (Booleano) Indica si la generación de DFE estadísticas está habilitada o no.

    • statisticsId : indica el identificador de la ejecución de generación de estadísticas actual. Un valor de -1 indica que no se ha generado ninguna estadística.

    • date— La UTC hora a la que se generaron DFE las estadísticas por última vez, en formato ISO 8601.

      nota

      Antes de la versión 1.2.1.0 del motor, se representaba con una precisión minuciosa, pero a partir de la versión 1.2.1.0 del motor, se representa con una precisión de milisegundos (por ejemplo, 2023-01-24T00:47:43.319Z).

    • note: una nota sobre los problemas en el caso de que las estadísticas no sean válidas.

    • signatureInfo: contiene información sobre los conjuntos de características generados en las estadísticas (antes de la versión 1.2.1.0 del motor, este campo se llamaba summary). Por lo general, no se pueden procesar directamente:

      • signatureCount: el número total de firmas en todos los conjuntos de características.

      • instanceCount: el número total de instancias del conjunto de características.

      • predicateCount: el número total de predicados únicos.

La respuesta a una solicitud de estado cuando no se han generado estadísticas es la siguiente:

{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : false, "statisticsId" : -1 } }

Si hay DFE estadísticas disponibles, la respuesta tiene el siguiente aspecto:

{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : true, "statisticsId" : 1588893232718, "date" : "2020-05-07T23:13Z", "summary" : { "signatureCount" : 5, "instanceCount" : 1000, "predicateCount" : 20 } } }

Si la generación de DFE estadísticas no se pudo generar, por ejemplo, porque se superó el límite de tamaño de las estadísticas, la respuesta tendrá el siguiente aspecto:

{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : false, "statisticsId" : 1588713528304, "date" : "2020-05-05T21:18Z", "note" : "Limit reached: Statistics are not available" } }

Desactivar la generación automática de estadísticas DFE

De forma predeterminada, la generación automática de DFE estadísticas está habilitada cuando se habilitaDFE.

Puede deshabilitar la generación automática de la siguiente manera:

curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "disableAutoCompute" }'

Si la solicitud se realiza correctamente, el código de HTTP respuesta es 200 y la respuesta es:

{ "status" : "200 OK" }

Para confirmar que la generación automática está deshabilitada, emita una solicitud de estado y compruebe que el campo autoCompute de la respuesta esté configurado en false.

Al deshabilitar la generación automática de estadísticas, no finaliza un cálculo de estadísticas en curso.

Si realiza una solicitud para deshabilitar la generación automática en una instancia de lectura en lugar de en la instancia de escritura de su clúster de base de datos, la solicitud fallará con un código de HTTP retorno de 400 y tendrá un resultado similar al siguiente:

{ "detailedMessage" : "Writes are not permitted on a read replica instance", "code" : "ReadOnlyViolationException", "requestId":"8eb8d3e5-0996-4a1b-616a-74e0ec32d5f7" }

Consulte Errores comunes para obtener una lista de otros errores comunes.

Volver a habilitar la generación automática de estadísticas DFE

De forma predeterminada, la generación automática de DFE estadísticas ya está habilitada cuando se habilitaDFE. Si deshabilita la generación automática, puede volver a habilitarla más adelante de la siguiente manera:

curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "enableAutoCompute" }'

Si la solicitud se realiza correctamente, el código de HTTP respuesta es 200 y la respuesta es:

{ "status" : "200 OK" }

Para confirmar que la generación automática está habilitada, emita una solicitud de estado y compruebe que el campo autoCompute de la respuesta esté configurado en true.

Activar manualmente la generación de estadísticas DFE

Puede iniciar la generación de DFE estadísticas manualmente de la siguiente manera:

curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "refresh" }'

Si la solicitud se realiza correctamente, el resultado es el siguiente, con un código de HTTP retorno de 200:

{ "status" : "200 OK", "payload" : { "statisticsId" : 1588893232718 } }

El statisticsId en la salida es el identificador de la ejecución de generación de estadísticas que se está produciendo actualmente. Si una ejecución ya estaba en marcha en el momento de la solicitud, la solicitud devuelve el identificador de esa ejecución en lugar de iniciar una nueva. Solo puede realizar una ejecución de generación de estadísticas a la vez.

Si se produce una conmutación por error mientras se generan DFE las estadísticas, el nuevo nodo de escritura recogerá el último punto de control procesado y reanudará la ejecución de las estadísticas desde allí.

Uso de la StatsNumStatementsScanned CloudWatch métrica para supervisar el cálculo de las estadísticas

La StatsNumStatementsScanned CloudWatch métrica devuelve el número total de sentencias escaneadas para el cálculo de estadísticas desde que se inició el servidor. Se actualiza en cada segmento de cálculo de estadísticas.

Cada vez que se activa el cálculo de estadísticas, este número aumenta y, cuando no se realiza ningún cálculo, permanece constante. Por lo tanto, al observar una gráfica de valores StatsNumStatementsScanned a lo largo del tiempo, se obtiene una idea bastante clara de cuándo se estaba realizando el cálculo de las estadísticas y con qué rapidez:

Gráfico de valores StatsNumStatementsScanned métricos

Cuando se realiza el cálculo, la pendiente del gráfico muestra con qué rapidez (cuanto más pronunciada sea la pendiente, más rápido se calculan las estadísticas).

Si el gráfico es simplemente una línea plana en 0, la característica de estadísticas se ha habilitado, pero no se ha calculado ninguna estadística. Si la característica de estadísticas se ha deshabilitado o si está utilizando una versión del motor que no admite el cálculo de estadísticas, StatsNumStatementsScanned no existe.

Como se mencionó anteriormente, puede deshabilitar el cálculo de estadísticas utilizando las estadísticasAPI, pero si lo deja desactivada, puede provocar que las estadísticas no estén actualizadas, lo que, a su vez, puede provocar que el DFE motor genere un plan de consultas deficiente.

Consulte Monitorización de Neptune con Amazon CloudWatch para obtener información sobre cómo CloudWatch utilizarlas.

Uso de la autenticación AWS Identity and Access Management (IAM) con puntos finales de DFE estadísticas

Puede acceder a los puntos finales de DFE las estadísticas de forma segura mediante la IAM autenticación mediante awscurl o cualquier otra herramienta que funcione con y. HTTPS IAM Consulte Se utiliza awscurl con credenciales temporales para conectarse de forma segura a un clúster de base de datos con la IAM autenticación habilitada para saber cómo configurar las credenciales adecuadas. Una vez que lo haya hecho, podrá realizar una solicitud de estado como la siguiente:

awscurl "$STATISTICS_ENDPOINT" \ --region (your region) \ --service neptune-db

O, por ejemplo, puede crear un JSON archivo con un nombre que contenga: request.json

{ "mode" : "refresh" }

Luego, puede iniciar la generación de estadísticas manualmente de la siguiente manera:

awscurl "$STATISTICS_ENDPOINT" \ --region (your region) \ --service neptune-db \ -X POST -d @request.json

Eliminar DFE estadísticas

Puede eliminar todas las estadísticas de la base de datos realizando una HTTP DELETE solicitud al punto final de estadísticas:

curl -X "DELETE" "$STATISTICS_ENDPOINT"

Los códigos de HTTP devolución válidos son:

  • 200: la eliminación se ha realizado correctamente.

    En este caso, una respuesta típica sería la siguiente:

    { "status" : "200 OK", "payload" : { "active" : false, "statisticsId" : -1 } }
  • 204: no había ninguna estadística que eliminar.

    En este caso, la respuesta está en blanco (no hay respuesta).

Si envía una solicitud de eliminación a un punto de conexión de las estadísticas de un nodo de lector, se emite una ReadOnlyViolationException.

Los códigos de error más comunes en DFE las solicitudes de estadísticas

A continuación, se ofrece una lista de los errores más comunes que se pueden producir al realizar una solicitud a un punto de conexión de estadísticas:

  • AccessDeniedException   –   Código de retorno: 400. Mensaje: Missing Authentication Token.

  • BadRequestException(para Gremlin yopenCypher) — Código de retorno:. 400 Mensaje: Bad route: /pg/statistics.

  • BadRequestException(para RDF datos) — Código de devolución:. 400 Mensaje: Bad route: /rdf/statistics.

  • InvalidParameterException   –   Código de retorno: 400. Mensaje: Statistics command parameter 'mode' has unsupported value 'the invalid value'.

  • MissingParameterException   –   Código de retorno: 400. Mensaje: Content-type header not specified..

  • ReadOnlyViolationException   –   Código de retorno: 400. Mensaje: Writes are not permitted on a read replica instance.

Por ejemplo, si realizas una solicitud cuando las estadísticas DFE y las estadísticas no están habilitadas, obtendrás una respuesta como la siguiente:

{ "code" : "BadRequestException", "requestId" : "b2b8f8ee-18f1-e164-49ea-836381a3e174", "detailedMessage" : "Bad route: /sparql/statistics" }