Édition

Share via


Questions fréquentes sur Azure Cosmos DB for Apache Gremlin

S’APPLIQUE À : Gremlin

Requêtes Gremlin

Comment évaluer l’efficacité des requêtes Gremlin

L’étape de l’aperçu executionProfile() peut être utilisée pour fournir une analyse du plan d'exécution de la requête. Cette étape doit être ajoutée à la fin de n’importe quelle requête Gremlin. Par exemple, vous pouvez ajouter l’étape à la fin d’une requête g.V('example').out('relationship') ayant le résultat g.V('example').out('relationship').executionProfile().

La sortie du profil ci-dessus indique combien de temps est consacré à l’obtention des objets de vertex, des objets d’arête, ainsi que la taille du jeu de données de travail. Cela concerne les mesures de coût standard pour les requêtes Azure Cosmos DB.

Autres questions fréquentes

Comment les RU/s sont-elles facturées lors de l’exécution des requêtes sur une base de données de graphique ?

Tous les objets, sommets et arêtes des graphes sont affichés sous forme de documents JSON dans le back-end. Dans la mesure où une seule requête Gremlin peut modifier un ou plusieurs objets de graphe à la fois, le coût associé est directement lié aux objets ou arêtes traités par la requête. Azure Cosmos DB utilise le même processus pour toutes les autres API. Pour plus d’informations, voir Unités de requête dans Azure Cosmos DB.

Les frais de RU sont basés sur le jeu de données de travail de la traversée, et non sur le jeu de résultats. Par exemple, si une requête vise à obtenir un seul vertex en résultat mais doit traverser plusieurs autres objets sur le chemin, le coût est basé sur tous les objets de graphe utilisés pour calculer cet unique vertex de résultat.

Quelle est la mise à l’échelle maximale qu’une base de données de graphe peut présenter dans Azure Cosmos DB for Gremlin ?

Azure Cosmos DB utilise le partitionnement horizontal pour répondre automatiquement aux exigences d’augmentation de stockage et de débit. Le débit et la capacité de stockage maximum d’une charge de travail sont déterminés par le nombre de partitions associées à un conteneur donné. Toutefois, un conteneur d’API pour Gremlin comporte un ensemble spécifique d’instructions pour garantir une expérience de performances à l’échelle correcte. Pour plus d’informations sur le partitionnement de données et les meilleurs pratiques, voir l’article sur le partitionnement dans Azure Cosmos DB.

Pour le développement en C#/.NET, dois-je utiliser le package Microsoft.Azure.Graphs ou Gremlin.NET ?

Azure Cosmos DB for Gremlin se utilise des pilotes open source comme connecteurs principaux pour le service. Nous recommandons alors d’utiliser les pilotes pris en charge par Apache.

Comment puis-je me protéger contre les attaques par injection à l’aide de pilotes Gremlin ?

La majorité des pilotes Apache Tinkerpop Gremlin natifs offrent la possibilité de fournir un dictionnaire de paramètres pour l’exécution des requêtes. Voici un exemple montrant comment le faire sous Gremlin.Net et Gremlin-Javascript.

Pourquoi est-ce que je reçois le message d’erreur « Erreur de compilation de la requête Gremlin : Impossible de trouver une méthode » ?

Azure Cosmos DB for Gremlin implémente un sous-ensemble des fonctionnalités définies dans la surface d’exposition de Gremlin. Pour voir les étapes prises en charge ou pour plus d’informations, consultez l’article Prise en charge de Gremlin.

La meilleure solution de contournement consiste à récrire les étapes Gremlin nécessaires avec la fonctionnalité prise en charge puisque toutes les étapes Gremlin essentielles sont prises en charge par Azure Cosmos DB.

Pourquoi est-ce que je reçois le message d’erreur « WebSocketException : Le serveur a retourné le code d’état "200" alors que le code d’état attendu était "101" » ?

Cette erreur survient probablement lorsqu’un point de terminaison incorrect est utilisé. Le point de terminaison qui génère cette erreur a le modèle suivant :https://<account-name>.documents.azure.com:443/

C’est le point de terminaison de documents pour votre base de données de graphique. Le bon point de terminaison à utiliser est le point de terminaison Gremlin qui a le format suivant :

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

Pourquoi est-ce que je reçois le message d’erreur « RequestRateIsTooLarge » ?

Cette erreur signifie que les unités de requête par seconde allouées ne sont pas suffisantes pour traiter la requête. Cette erreur se produit lorsque vous exécutez une requête qui obtient tous les vertex :

// Query example:
g.V()

Cette requête tente de récupérer tous les vertex du graphique. Par conséquent, le coût de cette requête sera au moins égal au nombre de vertex en termes d’unités de requête. Le paramètre RU/s doit être ajusté pour répondre à cette requête.

Pourquoi mes connexions de pilote Gremlin finissent par être supprimées ?

Une connexion Gremlin est établie via une connexion WebSocket. Bien que les connexions WebSocket ne disposent pas d’une durée de vie spécifique, Azure Cosmos DB for Gremlin terminera les connexions inactives après 30 minutes d’inactivité.

Pourquoi ne puis-je pas utiliser d’appels d’API Fluent dans les pilotes Gremlin natifs ?

Les appels d’API Fluent ne sont pas encore pris en charge par l’Azure Cosmos DB for Gremlin. Les appels d’API Fluent nécessitent une fonctionnalité de mise en forme interne, appelée la « prise en charge bytecode », qui n’est actuellement pas prise en charge par l’Azure Cosmos DB for Gremlin. Pour la même raison, le dernier pilote Gremlin-JavaScript n’est pas pris en charge actuellement.

Étape suivante