Editar

Perguntas frequentes sobre o Azure Cosmos DB para Apache Gremlin

APLICA-SE A: Gremlin

Consultas Gremlin

Como avaliar a eficiência das consultas Gremlin

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

A saída do perfil acima mostra quanto tempo é gasto obtendo os objetos de vértice, os objetos de borda e o tamanho do conjunto de dados de trabalho. Isso está relacionado às medições de custo padrão para consultas do Azure Cosmos DB.

Outras perguntas frequentes

Como os RU/s são cobrados ao executar consultas em um banco de dados gráfico?

Todos os objetos de gráfico, vértices e arestas, são mostrados como documentos JSON no back-end. Como uma consulta Gremlin pode modificar um ou vários objetos gráficos de cada vez, o custo associado a ela está diretamente relacionado aos objetos, bordas que são processadas pela consulta. Esse é o mesmo processo que o Azure Cosmos DB usa para todas as outras APIs. Para obter mais informações, veja Unidades de Pedido no Azure Cosmos DB.

A taxa de RU é baseada no conjunto de dados de trabalho da travessia, e não no conjunto de resultados. Por exemplo, se uma consulta visa obter um único vértice como resultado, mas precisa atravessar mais de um outro objeto no caminho, então o custo é baseado em todos os objetos de gráfico necessários para calcular o vértice de um resultado.

Qual é a escala máxima que um banco de dados gráfico pode ter no Azure Cosmos DB para Gremlin?

O Azure Cosmos DB usa o particionamento horizontal para abordar automaticamente o aumento nos requisitos de armazenamento e taxa de transferência. A taxa de transferência máxima e a capacidade de armazenamento de uma carga de trabalho são determinadas pelo número de partições associadas a um determinado contêiner. No entanto, uma API para contêiner 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 artigo particionamento no Azure Cosmos DB .

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

O Azure Cosmos DB para Gremlin usa os drivers de código aberto como os conectores principais para o serviço. Portanto, a opção recomendada é usar drivers suportados pelo Apache.

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

A maioria dos drivers nativos Apache Tinkerpop Gremlin permitem a opção de fornecer um dicionário de parâmetros para execução de consultas. Este é um exemplo de como fazê-lo em Gremlin.Net e em Gremlin-Javascript.

Por que estou recebendo o erro "Gremlin Query Compilation Error: Unable to find any method"?

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

A melhor solução é reescrever as etapas Gremlin necessárias com a funcionalidade suportada, já que todas as etapas Gremlin essenciais são suportadas pelo Azure Cosmos DB.

Por que estou recebendo o erro "WebSocketException: O servidor retornou o código de status '200' quando o código de status '101' era esperado"?

Esse erro provavelmente é gerado quando o ponto de extremidade errado está sendo 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 de documentos para seu banco de dados gráfico. O ponto de extremidade correto a ser usado é o ponto de extremidade Gremlin, que tem o seguinte formato:

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

Por que estou recebendo o erro "RequestRateIsTooLarge"?

Esse erro significa que as Unidades de Solicitação alocadas por segundo não são suficientes para atender à consulta. Este 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. Assim, o custo desta consulta será igual a, pelo menos, o número de vértices em termos de RUs. A configuração RU/s deve ser ajustada para resolver essa consulta.

Por que minhas conexões de driver Gremlin são interrompidas eventualmente?

Uma conexão Gremlin é feita através de uma conexão WebSocket. Embora as conexões WebSocket não tenham um tempo específico para viver, o Azure Cosmos DB para Gremlin encerrará as conexões ociosas após 30 minutos de inatividade.

Por que não posso usar chamadas de API fluentes nos drivers Gremlin nativos?

As chamadas de API fluentes ainda não são suportadas pelo Azure Cosmos DB para Gremlin. As chamadas de API fluentes exigem um recurso de formatação interno conhecido como suporte a bytecode que atualmente não é suportado pelo Azure Cosmos DB para Gremlin. Devido ao mesmo motivo, o driver Gremlin-JavaScript mais recente também não é suportado atualmente.

Próximo passo