Importante
¿Busca una solución de base de datos para escenarios a gran escala con un contrato de nivel de servicio (SLA) de disponibilidad de 99,999%, escalabilidad automática instantánea y conmutación automática por error en varias regiones? Considere la posibilidad de usar Azure Cosmos DB para NoSQL.
¿Desea implementar un grafo de procesamiento analítico en línea (OLAP) o migrar una aplicación de Apache Gremlin existente? Considere el uso de Graph en Microsoft Fabric.
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 muestra cuánto tiempo se dedica a obtener los objetos de vértice, los objetos perimetrales y el tamaño del conjunto de datos de trabajo. Esta salida está relacionada con las medidas de 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 grafo, vértices y bordes aparecen como documentos JSON en el back-end. Una consulta de Gremlin puede modificar uno o varios objetos de grafo a la vez, y el costo depende directamente de los objetos y bordes procesados por la consulta. Este proceso funciona del mismo modo que para todas las demás API de Azure Cosmos DB.
El cargo de RU depende del conjunto de datos de trabajo del recorrido, no del conjunto de resultados. Considere un ejemplo en el que una consulta obtiene un único vértice como resultado, pero necesita atravesar varios otros objetos a lo largo del camino. En este ejemplo, el costo se basa en todos los objetos de grafo implicados en calcular el vértice de resultados.
¿Cuál es la escala máxima que puede tener una base de datos de grafos en Azure Cosmos DB para Apache Gremlin?
Azure Cosmos DB usa la creación de particiones horizontales para escalar automáticamente el almacenamiento y el rendimiento según sea necesario. El número de particiones de un contenedor determina su capacidad máxima de rendimiento y almacenamiento. Para obtener un rendimiento óptimo a escala, siga las instrucciones específicas para la API para contenedores de Gremlin. Para más información sobre la creación de particiones y los procedimientos recomendados, consulte el artículo [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 Apache 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 nativos de Apache Gremlin permiten proporcionar un diccionario de parámetros para la ejecución de consultas. Esta funcionalidad se admite en las bibliotecas de Gremlin.Net y gremlin (Node.js).
¿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 for Apache Gremlin admite un subconjunto del área de superficie de Gremlin. Para más información sobre los pasos admitidos, consulte el artículo compatibilidad con Gremlin .
Para resolver este error, vuelva a escribir las consultas de Gremlin mediante los pasos admitidos, ya que Azure Cosmos DB proporciona toda la funcionalidad esencial de Gremlin.
¿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 punto de conexión es en realidad el punto de conexión de documentos de su base de datos de grafos.
El punto de conexión correcto que se va a usar es el punto de conexión de Gremlin , que tiene el siguiente formato: https://<account-name>.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:
g.V()
Esta consulta intenta recuperar todos los vértices del grafo. Por lo tanto, el costo de esta consulta es igual al menos al número de vértices en términos de unidades de solicitud (RU). La configuración de unidades de solicitudes por segundo (RU/s) debe ajustarse para abordar 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 de WebSocket no tienen un período de vida específico, Azure Cosmos DB para Apache 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 Apache Gremlin aún no admite llamadas API fluidas. Las llamadas a la API de Fluent dependen de una característica de formato interna denominada compatibilidad con código de bytes, que Azure Cosmos DB para Apache Gremlin no proporciona actualmente. Por este motivo, tampoco se admite el controlador Gremlin-JavaScript más reciente.
¿Cómo determino el costo por unidad de solicitud para una consulta?
Puede encontrar el cargo de unidad de solicitud (RU) para una consulta de Azure Cosmos DB for Apache Gremlin mediante uno de los siguientes métodos:
Uso de Azure Portal
Inicie sesión en Azure Portal.
Cree una nueva cuenta de Azure Cosmos DB para Apache Gremlin y la inicializará con datos, o seleccione una cuenta existente que ya contenga datos.
Vaya al panel Explorador de datos y seleccione el contenedor en el que desea trabajar.
Escriba una consulta válida y, a continuación, seleccione Ejecutar consulta de Gremlin.
Seleccione Estadísticas de consulta para mostrar el cargo real de solicitud para la solicitud que ejecutó.
Uso del kit de desarrollo de software (SDK) de .NET
Ejecute una consulta para obtener el resultado como un objeto de tipo
ResultSet<>:ResultSet<dynamic> results = client.SubmitAsync<dynamic>("g.V().count()").Result;Obtenga el coste de solicitud de los resultados mediante la matriz
StatusAttributesy el indexadorx-ms-request-charge:double requestCharge = (double)results.StatusAttributes["x-ms-request-charge"];
Uso del SDK de Java
Ejecute una consulta para obtener el resultado como un objeto de tipo
ResultSet:ResultSet results = client.submit("g.V().count()");Obtenga el coste de solicitud de los resultados mediante el método
statusAttributesy la clavex-ms-request-charge:Map<String, Object> attributes = results.statusAttributes(); Double requestCharge = (Double) attributes.get("x-ms-request-charge");
El cargo de solicitud está disponible bajo la clave x-ms-request-charge en los encabezados de respuesta devueltos por la API para Gremlin.