Läs på engelska Redigera

Dela via


Vanliga frågor och svar om Azure Cosmos DB för Apache Gremlin

GÄLLER FÖR: Gremlin

Gremlin-frågor

Så här utvärderar du effektiviteten i Gremlin-frågor

Förhandsversionssteget executionProfile() kan användas för att tillhandahålla en analys av frågekörningsplanen. Det här steget måste läggas till i slutet av alla Gremlin-frågor. Du kan till exempel lägga till steget i slutet av en g.V('example').out('relationship') fråga som resulterar i g.V('example').out('relationship').executionProfile().

Utdata från profilen ovan visar hur mycket tid som ägnas åt att hämta hörnobjekten, kantobjekten och storleken på arbetsdatauppsättningen. Detta gäller standardkostnadsmätningar för Azure Cosmos DB-frågor.

Andra vanliga frågor och svar

Hur debiteras RU/s när du kör frågor i en grafdatabas?

Alla grafobjekt, hörn och kanter visas som JSON-dokument i serverdelen. Eftersom en Gremlin-fråga kan ändra ett eller flera grafobjekt i taget är kostnaden som är kopplad till den direkt relaterad till objekten, kanterna som bearbetas av frågan. Det här är samma process som Azure Cosmos DB använder för alla andra API:er. Mer information finns i Enheter för programbegäran i Azure Cosmos DB.

RU-avgiften baseras på arbetsdatauppsättningen för blädderingen och inte på resultatuppsättningen. Om en fråga till exempel syftar till att få ett enda hörn som ett resultat men behöver korsa fler än ett annat objekt på vägen, baseras kostnaden på alla grafobjekt som krävs för att beräkna ett resultathörn.

Vilken är den maximala skala som en grafdatabas kan ha i Azure Cosmos DB för Gremlin?

Azure Cosmos DB använder horisontell partitionering för att automatiskt hantera ökade lagrings- och dataflödeskrav. Det maximala dataflödet och lagringskapaciteten för en arbetsbelastning bestäms av antalet partitioner som är associerade med en viss container. Ett API för Gremlin-container har dock en specifik uppsättning riktlinjer för att säkerställa en korrekt prestandaupplevelse i stor skala. Mer information om partitionering och metodtips finns i artikeln partitionering i Azure Cosmos DB .

Ska jag använda Microsoft.Azure.Graphs-paketet eller Gremlin.NET för C#/.NET-utveckling?

Azure Cosmos DB för Gremlin använder drivrutiner med öppen källkod som huvudanslutningar för tjänsten. Det rekommenderade alternativet är därför att använda drivrutiner som stöds av Apache.

Hur kan jag skydda mot inmatningsattacker med Gremlin-drivrutiner?

De flesta inbyggda Apache Tinkerpop Gremlin-drivrutiner tillåter alternativet att tillhandahålla en ordlista med parametrar för frågekörning. Det här är ett exempel på hur du gör det i Gremlin.Net och i Gremlin-Javascript.

Varför får jag felet "Gremlin Query Compilation Error: Unable to find any method"?

Azure Cosmos DB for Gremlin implementerar en delmängd av funktionerna som definierats i Gremlin-ytan. Anvisningar som stöds och mer information finns i artikeln om Gremlin-support .

Den bästa lösningen är att skriva om nödvändiga Gremlin-steg med de funktioner som stöds, eftersom alla viktiga Gremlin-steg stöds av Azure Cosmos DB.

Varför får jag felet "WebSocketException: Servern returnerade statuskoden "200" när statuskoden "101" förväntades?

Det här felet utlöses troligen när fel slutpunkt används. Slutpunkten som genererar det här felet har följande mönster: https://<account-name>.documents.azure.com:443/

Det här är dokumentslutpunkten för grafdatabasen. Rätt slutpunkt att använda är Gremlin-slutpunkten, som har följande format:

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

Varför får jag felet "RequestRateIsTooLarge"?

Det här felet innebär att de allokerade enheter för begäranden per sekund inte räcker för att hantera frågan. Det här felet visas när du kör en fråga som hämtar alla hörn:

// Query example:
g.V()

Den här frågan försöker hämta alla hörn från diagrammet. Kostnaden för den här frågan är alltså lika med minst antalet hörn när det gäller RU:er. RU/s-inställningen bör justeras för att hantera den här frågan.

Varför tas mina Gremlin-drivrutinsanslutningar bort så småningom?

En Gremlin-anslutning görs via en WebSocket-anslutning. Även om WebSocket-anslutningar inte har någon specifik tid att leva, avslutar Azure Cosmos DB för Gremlin inaktiva anslutningar efter 30 minuters inaktivitet.

Varför kan jag inte använda fluent API-anrop i de inbyggda Gremlin-drivrutinerna?

Fluent API-anrop stöds ännu inte av Azure Cosmos DB för Gremlin. Fluent API-anrop kräver en intern formateringsfunktion som kallas bytekodsstöd som för närvarande inte stöds av Azure Cosmos DB för Gremlin. På grund av samma orsak stöds inte heller den senaste Gremlin-JavaScript-drivrutinen.

Gå vidare