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.
nota
La compatibilidad con openCypher depende del motor de consultas DFE de Neptune.
El motor DFE estuvo disponible por primera vez en el modo de laboratorio en la versión 1.0.3.0 del motor de Neptune y, a partir de la versión 1.0.5.0 del motor de Neptune, pasó a estar habilitado de forma predeterminada, pero solo para su uso con sugerencias de consulta y para la compatibilidad con openCypher.
A partir de la versión 1.1.1.0 del motor de Neptune, el motor DFE ya no está en modo de laboratorio y ahora se controla mediante el parámetro de instancia neptune_dfe_query_engine del grupo de parámetros de base de datos de una instancia.
El motor DFE utiliza la información sobre los datos de gráficos de Neptune para realizar compensaciones efectivas a la hora de 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 mediante la API o el punto final. GetGraphSummarysummary
Actualmente, estas estadísticas del DFE se vuelven a generar cada vez que se modifica 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 administrar la generación de estadísticas de DFE a través de uno de los siguientes puntos de conexión:
https://
(para SPARQL).your-neptune-host
:port
/rdf/statisticshttps://
(para Gremlin y openCypher) y su versión alternativa:your-neptune-host
:port
/propertygraph/statisticshttps://
.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://
) está en desuso a favor del punto de conexión your-neptune-host
:port
/gremlin/statisticspropertygraph
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 de conexión de las estadísticas de SPARQL (https://
) está en desuso a favor del punto de conexión your-neptune-host
:port
/sparql/statisticsrdf
. Sigue siendo compatible con versiones anteriores, pero es posible que se elimine en futuras versiones.
En los ejemplos siguientes, $STATISTICS_ENDPOINT
se refiere a cualquiera de estos puntos finales. URLs
nota
Si un punto de conexión de las estadísticas del DFE está en una instancia del 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 generación de estadísticas de DFE
Actualmente, la generación de estadísticas del DFE 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 del DFE
Puede comprobar el estado actual de las estadísticas del DFE mediante la siguiente solicitud curl
:
curl -G "$STATISTICS_ENDPOINT"
La respuesta a una solicitud de estado contiene los siguientes campos:
status
: el código de retorno HTTP de la solicitud. Si la solicitud se ha realizado correctamente, el código es200
. 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 estadísticas del DFE 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 hora UTC a la que se generaron las estadísticas del DFE 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 llamabasummary
). 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 las estadísticas del DFE están disponibles, la respuesta tiene un aspecto similar al siguiente:
{
"status" : "200 OK",
"payload" : {
"autoCompute" : true,
"active" : true,
"statisticsId" : 1588893232718,
"date" : "2020-05-07T23:13Z",
"summary" : {
"signatureCount" : 5,
"instanceCount" : 1000,
"predicateCount" : 20
}
}
}
Si las estadísticas del DFE no se pudieron 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"
}
}
Deshabilitación de la generación automática de estadísticas del DFE
De forma predeterminada, la generación automática de estadísticas del DFE se habilita cuando se habilita el DFE.
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 respuesta HTTP 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 retorno HTTP 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 del DFE
De forma predeterminada, la generación automática de estadísticas del DFE ya está habilitada cuando se habilita el DFE. 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 respuesta HTTP 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
.
Activación manual de la generación de estadísticas del DFE
Puede iniciar la generación de estadísticas del DFE 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 retorno HTTP 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 las estadísticas del DFE, el nuevo nodo de escritor recogerá el último punto de comprobación procesado y reanudará la ejecución de las estadísticas desde allí.
Uso de la StatsNumStatementsScanned
CloudWatch métrica para monitorear 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](images/StatsNumStatementsScanned-graph.png)
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 mediante la API de estadísticas, pero si no lo hace, puede provocar que las estadísticas no estén actualizadas, lo que, a su vez, puede provocar una generación deficiente del plan de consultas para el motor DFE.
Consulte Monitorización de Neptune con Amazon CloudWatch para obtener información sobre cómo utilizar CloudWatch.
Uso de la autenticación AWS Identity and Access Management (IAM) con puntos finales de estadísticas del DFE
Puede acceder a los puntos de conexión de estadísticas del DFE de forma segura con la autenticación de IAM mediante awscurl
awscurl "$STATISTICS_ENDPOINT" \ --region
(your region)
\ --service neptune-db
O, por ejemplo, puede crear un archivo JSON denominado request.json
que contenga:
{ "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
Eliminación de estadísticas del DFE
Puede eliminar todas las estadísticas de la base de datos realizando una solicitud HTTP DELETE al punto de conexión de las estadísticas:
curl -X "DELETE" "$STATISTICS_ENDPOINT"
Los códigos de retorno HTTP 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
.
Códigos de error comunes para la solicitud de estadísticas del DFE
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 y openCypher) – Código de retorno:400
. Mensaje:Bad route: /pg/statistics
.BadRequestException
(para datos RDF) – Código de retorno: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 realiza una solicitud cuando el DFE y las estadísticas no están habilitados, obtendrá una respuesta como la siguiente:
{
"code" : "BadRequestException",
"requestId" : "b2b8f8ee-18f1-e164-49ea-836381a3e174",
"detailedMessage" : "Bad route: /sparql/statistics"
}