Domande frequenti su Azure Cosmos DB for Apache Gremlin

SI APPLICA A: Gremlin

Query di Gremlin

In che modo è possibile valutare l'efficienza delle query di Gremlin?

Il passaggio di anteprima executionProfile() può essere usato per fornire un'analisi del piano di esecuzione della query. Questo passaggio deve essere aggiunto alla fine di qualsiasi query Gremlin. Ad esempio, è possibile aggiungere il passaggio alla fine di una g.V('example').out('relationship') query risultante in g.V('example').out('relationship').executionProfile().

L'output del profilo precedente mostra il tempo necessario per ottenere gli oggetti vertice e arco, oltre alle dimensioni del set di dati in uso. Queste informazioni sono correlate alle misure dei costi standard per le query di Azure Cosmos DB.

Altre domande frequenti

In che modo vengono addebitate le unità richiesta al secondo quando si eseguono query in un database a grafi?

Tutti gli oggetti, i vertici e gli archi dei grafi vengono rappresentati come documenti JSON nel back-end. Poiché una query Gremlin può modificare uno o più oggetti grafico alla volta, il costo associato è direttamente correlato agli oggetti, archi elaborati dalla query. Si tratta dello stesso processo usato da Azure Cosmos DB per tutte le altre API. Per altre informazioni, vedere Unità richiesta in Azure Cosmos DB.

L'addebito per unità richiesta viene basato sul set di dati in uso dell'attraversamento e non sul set di risultati. Ad esempio, se una query mira a ottenere un singolo vertice come risultato, ma deve attraversare più di un altro oggetto sulla strada, il costo è basato su tutti gli oggetti grafico necessari per calcolare il vertice di un risultato.

Qual è la scala massima che un database a grafo può avere in Azure Cosmos DB per Gremlin?

Azure Cosmos DB usa il partizionamento orizzontale per gestire automaticamente gli incrementi nei requisiti relativi a risorse di archiviazione e velocità effettiva. La velocità effettiva e la capacità di archiviazione massime di un carico di lavoro vengono determinate dal numero di partizioni associate a una contenitore specifico. Tuttavia, un'API per il contenitore Gremlin ha un set specifico di linee guida per garantire un'esperienza di prestazioni appropriata su larga scala. Per altre informazioni sul partizionamento e sulle procedure consigliate, vedere l'articolo relativo al partizionamento in Azure Cosmos DB.

Per lo sviluppo C#/.NET è necessario usare il pacchetto Microsoft.Azure.Graphs o Gremlin.NET?

Azure Cosmos DB per Gremlin usa i driver open source come connettori principali per il servizio. L'opzione consigliata consiste quindi nell'usare i driver supportati da Apache.

Come ci si può proteggere da attacchi di tipo injection con driver Gremlin?

La maggior parte dei driver Apache Tinkerpop Gremlin nativi consente di specificare un dizionario di parametri per l'esecuzione delle query. Ecco un esempio di come ottenere questo risultato in Gremlin.Net e in Gremlin-Javascript.

Perché viene visualizzato un errore analogo a "Errore di compilazione query Gremlin: non è possibile trovare un metodo"?

Azure Cosmos DB per Gremlin implementa un subset delle funzionalità definite nell'area di attacco Gremlin. Per le procedure supportate e altre informazioni, vedere l'articolo Supporto Gremlin.

La soluzione alternativa migliore consiste nel riscrivere la procedura Gremlin necessaria con le funzionalità supportate, poiché tutti i passaggi Gremlin essenziali sono supportati da Azure Cosmos DB.

Perché viene visualizzato un errore analogo a "WebSocketException: Il server ha restituito il codice di stato '200' ma è previsto il codice di stato '101'"?

Questo errore viene probabilmente generato quando viene usato un endpoint non corretto. L'endpoint che genera questo errore ha il modello seguente: https://<account-name>.documents.azure.com:443/

Endpoint dei documenti per il database a grafi. L'endpoint corretto da usare è l'endpoint Gremlin, che ha il formato seguente:

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

Perché viene visualizzato l'errore "RequestRateIsTooLarge"?

Questo errore indica che le unità richiesta allocate al secondo non sono sufficienti per la query. Questo errore viene visualizzato quando si esegue una query che ottiene tutti i vertici:

// Query example:
g.V()

Questa query tenta di recuperare tutti i vertici dal grafico. Il costo di questa query in termini di unità richiesta sarà uguale almeno al numero di vertici. È necessario modificare l'impostazione UR/s in modo specifico per questa query.

Perché le connessioni del driver Gremlin vengono interrotte?

Una connessione Gremlin viene effettuata tramite una connessione WebSocket. Anche se le connessioni WebSocket non hanno una durata specifica, Azure Cosmos DB per Gremlin terminerà le connessioni inattive dopo 30 minuti di inattività.

Perché non è possibile usare le chiamate API Fluent nei driver Gremlin nativi?

Le chiamate API Fluent non sono ancora supportate da Azure Cosmos DB per Gremlin. Le chiamate API Fluent richiedono una funzionalità di formattazione interna nota come supporto bytecode che attualmente non è supportato da Azure Cosmos DB per Gremlin. A causa dello stesso motivo, non è attualmente supportato il driver Gremlin-JavaScript più recente.

Passaggio successivo