SE APLICA A: Gremlin
Consultas de Gremlin
Evaluación de la eficiencia de las consultas de Gremlin
Se puede usar el paso de vista previa executionProfile() para realizar un análisis del plan de ejecución de la consulta. Este paso debe agregarse al final de cualquier consulta de Gremlin. Por ejemplo, puede agregar el paso al final de una consulta g.V('example').out('relationship')
, lo que da como resultado g.V('example').out('relationship').executionProfile()
.
La salida del perfil anterior muestra cuánto tiempo se dedica a obtener los objetos de vértice y borde, así como el tamaño del conjunto de datos de trabajo. Esto tiene que ver con las mediciones de los costos estándar para las consultas de Azure Cosmos DB.
Otras preguntas frecuentes
¿Cómo se cobran las RU/s cuando se ejecutan consultas en una base de datos de grafos?
Todos los objetos de gráficos, vértices y bordes se muestran como documentos JSON en el servidor back-end. Como una consulta de Gremlin puede modificar uno o varios objetos de grafo a la vez, el costo asociado con él está directamente relacionado con los objetos, los bordes que la consulta procesa. Este es el mismo proceso que Azure Cosmos DB usa para las demás API. Para más información, vea Unidades de solicitud en Azure Cosmos DB.
El cargo por las RU se basa en el conjunto de datos de trabajo del recorrido, y no en el conjunto de resultados. Por ejemplo, si una consulta pretende obtener como resultado un solo vértice pero, para ello, debe atravesar más de un objeto en el camino, el costo se basa en todos los objetos de gráfico que se necesitan para procesar el resultado de un vértice.
¿Cuál es la escala máxima que puede tener una base de datos de grafos de Azure Cosmos DB para Gremlin?
Azure Cosmos DB usa particiones horizontales para abordar automáticamente el aumento en los requisitos de almacenamiento y capacidad de proceso. La capacidad de rendimiento y la capacidad de almacenamiento máximas de una carga de trabajo vienen determinadas por el número de particiones que están asociadas con un contenedor determinada. Sin embargo, un contenedor de API para Gremlin tiene un conjunto específico de directrices para garantizar una experiencia de rendimiento adecuada a gran escala. Para más información sobre la creación de particiones y procedimientos recomendados, vea el artículo sobre creación de particiones en Azure Cosmos DB.
¿Para desarrollar con C# o .NET, debo usar el paquete de Microsoft.Azure.Graphs o Gremlin.NET?
Azure Cosmos DB para Gremlin usa los controladores de código abierto como conectores principales para el servicio. Por lo tanto, la opción recomendada es usar controladores compatibles con Apache.
¿Cómo me puedo proteger frente a ataques de inyección de código con los controladores Gremlin?
La mayoría de los controladores Gremlin de Apache Tinkerpop nativos ofrecen la opción de proporcionar un diccionario de parámetros para la ejecución de consultas. Este es un ejemplo de cómo hacerlo en Gremlin.Net y en Gremlin-Javascript.
¿Por qué recibo el mensaje "Gremlin Query Compilation Error: Unable to find any method" (Error de compilación de consultas de Gremlin: no se encuentra ningún método)?
Azure Cosmos DB para Gremlin implementa un subconjunto de la funcionalidad definida en el área expuesta de Gremlin. Para ver pasos admitidos y obtener más información, consulte el artículo sobre compatibilidad con Gremlin.
La mejor solución es volver a escribir los pasos necesarios de Gremlin con la funcionalidad admitida, porque todos los pasos de Gremlin esenciales son compatibles con Azure Cosmos DB.
¿Por qué recibo el mensaje "WebSocketException: The server returned status code "200" when status code "101" was expected" (WebSocketException: el servidor devolvió el código de estado "200" cuando el código de estado esperado era "101")?
Este error probablemente se produce cuando se usa el punto de conexión incorrecto. El punto de conexión que genera este error tiene el siguiente patrón: https://<account-name>.documents.azure.com:443/
Este es el punto de conexión de documentos de la base de datos de grafos. El punto de conexión correcto que hay que usar es el punto de conexión de Gremlin, que tiene el formato siguiente:
https://YOUR_DATABASE_ACCOUNT.gremlin.cosmosdb.azure.com:443/
¿Por qué recibo el error "RequestRateIsTooLarge"?
Este error significa que las unidades de solicitud por segundo asignadas no son suficientes para atender la consulta. Este error aparece cuando se ejecuta una consulta que obtiene todos los vértices:
// Query example:
g.V()
Esta consulta intenta recuperar todos los vértices del grafo. Por lo tanto, el costo de esta consulta será igual que el número de vértices en términos de RU, como mínimo. El valor de RU/s se debería ajustar para poder atender esta consulta.
¿Por qué las conexiones del controlador de Gremlin terminan por desconectarse?
Las conexiones de Gremlin se realizan a través de una conexión de WebSocket. Aunque las conexiones WebSocket no tienen un tiempo de vida específico, Azure Cosmos DB para Gremlin finalizará las conexiones inactivas después de 30 minutos de inactividad.
¿Por qué no puedo usar llamadas a API fluida en los controladores nativos de Gremlin?
Azure Cosmos DB para Gremlin aún no admite llamadas API fluidas. Las llamadas API fluidas requieren una característica de formato interna conocida como compatibilidad con código de bytes, que actualmente no se admite en Azure Cosmos DB para Gremlin. Por el mismo motivo, el controlador más reciente de Gremlin-JavaScript tampoco es compatible.
Contenido relacionado
- Compatibilidad con protocolo de transferencia de Azure Cosmos DB para Gremlin
- Creación, consulta y recorrido de una base de datos de grafos de Azure Cosmos DB en la consola de Gremlin