Perguntas frequentes sobre o Azure Cosmos DB for Apache Gremlin

APLICA-SE AO: Gremlin

Consultas do Gremlin

Como avaliar a eficiência das consultas do Gremlin

A etapa de versão prévia do executionProfile() pode ser usada para fornecer uma análise do plano de execução de consulta. Esta etapa precisa ser adicionada ao final de qualquer consulta do Gremlin. Por exemplo, você pode adicionar a etapa ao final de uma consultag.V('example').out('relationship') resultando em g.V('example').out('relationship').executionProfile().

A saída do perfil acima mostra quanto tempo é gasto na obtenção dos objetos de vértice e borda, além do tamanho do conjunto de dados de trabalho. Isso está relacionado às medidas de custo padrão para as consultas do Azure Cosmos DB.

Outras perguntas frequentes

Como as RU/s são cobradas ao executar consultas em um banco de dados do gráfico?

Todos os objetos do grafo, vértices e bordas são mostrados como documentos JSON no back-end. Já que uma consulta Gremlin pode modificar um ou muitos objetos do gráfico por vez, o custo associado a ela está diretamente relacionado aos objetos, que são bordas processadas pela consulta. É o mesmo processo que o Azure Cosmos DB usa para todas as outras APIs. Para obter mais informações, consulte Unidades de Solicitação no Azure Cosmos DB.

O custo da RU é baseado no conjunto de dados de trabalho da passagem, não no conjunto de resultados. Por exemplo, se uma consulta tem por objetivo obter um único vértice como resultado, mas precisa atravessar vários outros objetos no caminho, então, o custo se baseará em todos os objetos do gráfico necessários para calcular o vértice de um resultado.

Qual é a escala máxima permitida para um banco de dados de grafo no Azure Cosmos DB for Gremlin?

O Azure Cosmos DB utiliza o particionamento horizontal para aumentar automaticamente o endereço nos requisitos de armazenamento e da taxa de transferência. A capacidade de armazenamento e produtividade máxima de uma carga de trabalho é determinada pelo número de partições associadas a um determinado contêiner. No entanto, um contêiner da API for Gremlin tem um conjunto específico de diretrizes para garantir uma experiência de desempenho adequada em escala. Para obter mais informações sobre particionamento e práticas recomendadas, consulte o particionamento no artigo do Azure Cosmos DB.

Para o desenvolvimento em C#/.NET, posso usar o pacote Microsoft.Azure.Graphs ou o Gremlin.NET?

O Azure Cosmos DB for Gremlin usa os drivers de código aberto como os principais conectores do serviço. Portanto, a opção recomendada é usar drivers compatíveis com o Apache.

Como me proteger contra ataques de injeção usando os drivers do Gremlin?

A maioria dos drivers Tinkerpop Gremlin nativos do Apache permite fornecer um dicionário de parâmetros para a execução da consulta. Este é um exemplo de como fazer isso no Gremlin.Net e no Gremlin-Javascript.

Por que estou vendo o "Erro de compilação da consulta do Gremlin: não é possível encontrar nenhum método"?

O Azure Cosmos DB for Gremlin implementa um subconjunto da funcionalidade definida na área de superfície do Gremlin. Para obter etapas com suporte e mais informações, confira o artigo Suporte do Gremlin.

A melhor solução é regravar as etapas necessárias do Gremlin com a funcionalidade compatível, pois todas as etapas essenciais do Gremlin são compatíveis com o Azure Cosmos DB.

Por que estou vendo o erro "WebSocketException: o servidor retornou o código de status '200', mas o código de status '101' era esperado"?

Esse erro provavelmente é gerado quando o ponto de extremidade incorreto é usado. O ponto de extremidade que gera esse erro tem o seguinte padrão:https://<account-name>.documents.azure.com:443/

Este é o ponto de extremidade do documento para o banco de dados do gráfico. O correto a usar é o Ponto de Extremidade do Gremlin, que tem o seguinte formato:

https://YOUR_DATABASE_ACCOUNT.gremlin.cosmosdb.azure.com:443/

Por que estou vendo o erro "RequestRateIsTooLarge"?

Esse erro significa que as Unidades de Solicitação alocadas por segundo não são suficientes para atender a consulta. O erro é visto quando você executa uma consulta que obtém todos os vértices:

// Query example:
g.V()

Esta consulta tenta recuperar todos os vértices do gráfico. Portanto, o custo será igual a, pelo menos, o número de vértices em termos de RUs. A configuração de RU/s deve ser ajustada para atender a essa consulta.

Por que minhas conexões de driver do Gremlin são descartadas com o tempo?

Uma conexão do Gremlin é feita por meio de uma conexão WebSocket. Embora as conexões WebSocket não tenham um tempo específico de duração, o Azure Cosmos DB for Gremlin encerrará as conexões ociosas após 30 minutos de inatividade.

Por que não é possível usar chamadas de API fluentes nos drivers Gremlin nativos?

As chamadas à API fluentes ainda não têm suporte do Azure Cosmos DB for Gremlin. As chamadas à API fluentes exigem um recurso de formatação interno conhecido como suporte do código de bytes que atualmente não é compatível com o Azure Cosmos DB for Gremlin. Devido à mesma razão, o driver do JavaScript mais recente do Gremlin também não é suportado atualmente.

Próxima etapa