GILT FÜR: Gremlin
Gremlin-Abfragen
Auswerten der Effizienz von Gremlin-Abfragen
Mit dem Vorschauschritt executionProfile() können Sie eine Analyse des Abfrageausführungsplans bereitstellen. Dieser Schritt muss am Ende jeder Gremlin-Abfrage hinzugefügt werden. Sie können zum Beispiel den Schritt am Ende einer g.V('example').out('relationship')
-Abfrage hinzufügen, die zu g.V('example').out('relationship').executionProfile()
führt.
Die Ausgabe des Profils oben zeigt, wie viel Zeit zum Abrufen der Scheitelpunkt- und Kantenobjekte aufgewendet wird, sowie die Größe des Arbeitsdatasets. Dies bezieht sich auf die Standardkostenmessungen für Azure Cosmos DB-Abfragen.
Weitere häufig gestellte Fragen
Wie werden RUs/Sek. beim Ausführen von Abfragen für eine Graphdatenbank in Rechnung gestellt?
Alle Graphobjekte – Scheitelpunkte und Kanten – werden im Back-End als JSON-Dokumente dargestellt. Da eine Gremlin-Abfrage jeweils ein oder mehrere Graphobjekte ändern kann, stehen die damit verbundenen Kosten in direkter Beziehung zu den Objekten – Kanten, die von der Abfrage verarbeitet werden. Denselben Prozess verwendet Azure Cosmos DB für alle anderen APIs. Weitere Informationen finden Sie unter Anforderungseinheiten in Azure Cosmos DB.
Die RU-Gebühr basiert auf dem Arbeits-DataSet des Durchlaufs und nicht auf dem Resultset. Beispiel: Wenn eine Abfrage einen einzelnen Scheitelpunkt als Ergebnis ermitteln soll, dabei jedoch mehrere andere Objekte durchlaufen muss, basieren die Kosten auf allen Graphobjekten, die zum Berechnen des Ergebnisscheitelpunkts benötigt werden.
Welche maximale Skalierung kann eine Graphdatenbank in Azure Cosmos DB for Gremlin aufweisen?
Azure Cosmos DB nutzt horizontale Partitionierung, um einem Anstieg der Speicher- und Durchsatzanforderungen automatisch gerecht zu werden. Das Höchstmaß an Durchsatz und Speicherkapazität einer Workload richtet sich nach der Menge von Partitionen, die einem bestimmten Container zugeordnet sind. Ein „API für Gremlin“-Container weist jedoch einen bestimmten Satz von Richtlinien auf, um eine optimale bedarfsorientierte Leistung zu gewährleisten. Weitere Informationen zur Partitionierung und zu Best Practices finden Sie im Artikel Partitionieren und horizontales Skalieren in Azure Cosmos DB.
Soll ich für die C#/.NET-Entwicklung das Paket „Microsoft.Azure.Graphs“ oder Gremlin.NET verwenden?
Die Azure Cosmos DB for Gremlin nutzt die Open-Source-Treiber als Hauptconnectors für den Dienst. Daher ist die empfohlene Option die Verwendung von Treibern, die von Apache unterstützt werden.
Wie kann ich mithilfe von Gremlin-Treibern vor Einschleusungsangriffen schützen?
Die meisten nativen Gremlin-Treiber von Apache TinkerPop lassen die Bereitstellung eines Wörterbuchs von Parametern für die Abfrageausführung zu. Hier finden Sie Beispiele für die Bereitstellung in Gremlin.Net und in Gremlin-Javascript.
Warum erhalte ich die Fehlermeldung „Gremlin Query Compilation Error: Unable to find any method“ (Fehler bei der Kompilierung von Gremlin-Abfragen: Methoden konnten nicht gefunden werden)?
Azure Cosmos DB for Gremlin implementiert eine Teilmenge der auf der Gremlin-Oberfläche definierten Funktionalität. Unterstützte Schritte und weitere Informationen finden Sie im Artikel Gremlin-Unterstützung.
Die beste Problemumgehung besteht darin, die Gremlin-Schritte mit den unterstützten Funktionen erneut zu schreiben, da alle wesentlichen Gremlin-Schritte von Azure Cosmos DB unterstützt werden.
Warum erhalte ich die Fehlermeldung „WebSocketException: The server returned status code '200' when status code '101' was expected“ (WebSocketException: Der Server hat den Statuscode „200“ zurückgegeben, obwohl der Statuscode „101“ erwartet wurde)?
Dieser Fehler wird wahrscheinlich ausgelöst, wenn der falsche Endpunkt verwendet wird. Der Endpunkt, der diesen Fehler generiert, hat das folgende Muster: https://<account-name>.documents.azure.com:443/
Dies ist der Dokumentendpunkt für Ihre Graphdatenbank. Der richtige Endpunkt für die Verwendung ist der Gremlin-Endpunkt, der das folgende Format aufweist:
https://YOUR_DATABASE_ACCOUNT.gremlin.cosmosdb.azure.com:443/
Warum erhalte ich den Fehler „RequestRateIsTooLarge“?
Dieser Fehler weist darauf hin, dass die zugeordneten Anforderungseinheiten pro Sekunde für die Verarbeitung der Abfrage nicht ausreichen. Dieser Fehler wird angezeigt, wenn Sie eine Abfrage ausführen, die alle Scheitelpunkte abruft:
// Query example:
g.V()
Diese Abfrage versucht, alle Scheitelpunkte aus dem Graph abzurufen. Daher entsprechen die Kosten für diese Abfrage mindestens der Anzahl von Scheitelpunkten in Bezug auf RUs. Die RUs/Sek.-Einstellung muss dieser Abfrage entsprechend angepasst werden.
Warum werden meine Gremlin-Treiberverbindungen schließlich gelöscht?
Eine Gremlin-Verbindung wird über eine WebSocket-Verbindung hergestellt. WebSocket-Verbindungen haben zwar keine bestimmte Gültigkeitsdauer, die Azure Cosmos DB for Gremlin beendet Verbindungen im Leerlauf jedoch nach 30 Minuten Inaktivität.
Warum kann ich keine Fluent-API-Aufrufe in den nativen Gremlin-Treibern verwenden?
Fluent-API-Aufrufe werden von Azure Cosmos DB for Gremlin noch nicht unterstützt. Fluent-API-Aufrufe erfordern ein internes Formatierungsfeature namens Bytecode-Unterstützung, das von Azure Cosmos DB for Gremlin derzeit nicht unterstützt wird. Aus demselben Grund wird auch der aktuelle Gremlin-JavaScript-Treiber derzeit nicht unterstützt.
Zugehöriger Inhalt
- Wire Protocol-Unterstützung in Azure Cosmos DB for Gremlin
- Erstellen, Abfragen und Durchlaufen einer Azure Cosmos DB-Graphdatenbank mithilfe der Gremlin-Konsole