Często zadawane pytania dotyczące usługi Azure Cosmos DB dla języka Apache Gremlin

DOTYCZY: Gremlin

Zapytania języka Gremlin

Jak ocenić wydajność zapytań języka Gremlin

Krok wykonaniaProfile() w wersji zapoznawczej może służyć do przeprowadzenia analizy planu wykonywania zapytania. Ten krok należy dodać na końcu dowolnego zapytania Gremlin. Na przykład możesz dodać krok na końcu g.V('example').out('relationship') zapytania, co spowoduje g.V('example').out('relationship').executionProfile().

Dane wyjściowe powyższego profilu pokazują, ile czasu poświęca się na uzyskiwanie obiektów wierzchołków, obiektów krawędzi i rozmiaru roboczego zestawu danych. Jest to związane ze standardowymi pomiarami kosztów zapytań usługi Azure Cosmos DB.

Inne często zadawane pytania

Jak są naliczane opłaty za jednostki RU/s podczas uruchamiania zapytań w grafowej bazie danych?

Wszystkie obiekty grafu, wierzchołki i krawędzie są wyświetlane jako dokumenty JSON w zapleczu. Ponieważ jedno zapytanie Gremlin może modyfikować jeden lub wiele obiektów grafu jednocześnie, koszt skojarzony z nim jest bezpośrednio związany z obiektami, krawędziami przetwarzanymi przez zapytanie. Jest to ten sam proces używany przez usługę Azure Cosmos DB dla wszystkich innych interfejsów API. Aby uzyskać więcej informacji, zobacz Jednostki żądań w usłudze Azure Cosmos DB.

Opłata za jednostkę ru jest oparta na roboczym zestawie danych przechodzenia, a nie na zestawie wyników. Jeśli na przykład zapytanie ma na celu uzyskanie pojedynczego wierzchołka, ale musi przejść przez więcej niż jeden inny obiekt w drodze, koszt jest oparty na wszystkich obiektach grafu, które są potrzebne do obliczenia jednego wierzchołka wyniku.

Jaka jest maksymalna skala, jaką może mieć grafowa baza danych w usłudze Azure Cosmos DB dla języka Gremlin?

Usługa Azure Cosmos DB korzysta z partycjonowania poziomego, aby automatycznie rozwiązywać wzrost wymagań dotyczących magazynu i przepływności. Maksymalna przepływność i pojemność magazynu obciążenia zależy od liczby partycji skojarzonych z danym kontenerem. Jednak interfejs API dla kontenera Gremlin ma określony zestaw wytycznych, aby zapewnić odpowiednie środowisko wydajności na dużą skalę. Aby uzyskać więcej informacji na temat partycjonowania i najlepszych rozwiązań, zobacz artykuł Partycjonowanie w usłudze Azure Cosmos DB .

Czy w przypadku programowania w języku C#/.NET należy użyć pakietu Microsoft.Azure.Graphs lub Gremlin.NET?

Usługa Azure Cosmos DB dla języka Gremlin używa sterowników typu open source jako głównych łączników dla usługi. Dlatego zalecaną opcją jest użycie sterowników obsługiwanych przez platformę Apache.

Jak mogę chronić przed atakami polegającymi na wstrzyknięciu przy użyciu sterowników języka Gremlin?

Większość natywnych sterowników Apache Tinkerpop Gremlin umożliwia udostępnienie słownika parametrów na potrzeby wykonywania zapytań. Jest to przykład tego, jak to zrobić w Gremlin.Net i w języku Gremlin-Javascript.

Dlaczego otrzymuję błąd "Błąd kompilacji zapytań Gremlin: Nie można odnaleźć żadnej metody"?

Usługa Azure Cosmos DB dla języka Gremlin implementuje podzbiór funkcji zdefiniowanych w obszarze powierzchni języka Gremlin. Aby uzyskać obsługiwane kroki i więcej informacji, zobacz artykuł pomocy technicznej języka Gremlin.

Najlepszym obejściem jest przepisanie wymaganych kroków języka Gremlin z obsługiwaną funkcją, ponieważ wszystkie podstawowe kroki języka Gremlin są obsługiwane przez usługę Azure Cosmos DB.

Dlaczego otrzymuję błąd "WebSocketException: Serwer zwrócił kod stanu "200", gdy oczekiwano kodu stanu "101"?

Ten błąd jest prawdopodobnie zgłaszany, gdy jest używany niewłaściwy punkt końcowy. Punkt końcowy, który generuje ten błąd, ma następujący wzorzec: https://<account-name>.documents.azure.com:443/

Jest to punkt końcowy dokumentów dla grafowej bazy danych. Prawidłowym punktem końcowym do użycia jest punkt końcowy języka Gremlin, który ma następujący format:

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

Dlaczego występuje błąd "RequestRateIsTooLarge"?

Ten błąd oznacza, że przydzielone jednostki żądań na sekundę nie są wystarczające do obsługi zapytania. Ten błąd jest wyświetlany podczas uruchamiania zapytania, które uzyskuje wszystkie wierzchołki:

// Query example:
g.V()

To zapytanie próbuje pobrać wszystkie wierzchołki z grafu. Dlatego koszt tego zapytania będzie równy co najmniej liczbie wierzchołków w odniesieniu do jednostek RU. Ustawienie RU/s należy dostosować, aby rozwiązać to zapytanie.

Dlaczego moje połączenia sterowników Gremlin zostaną ostatecznie porzucone?

Połączenie języka Gremlin odbywa się za pośrednictwem połączenia protokołu WebSocket. Mimo że połączenia protokołu WebSocket nie mają określonego czasu wygaśnięcia, usługa Azure Cosmos DB dla języka Gremlin zakończy bezczynne połączenia po upływie 30 minut braku aktywności.

Dlaczego nie mogę używać płynnych wywołań interfejsu API w natywnych sterownikach języka Gremlin?

Wywołania interfejsu API Fluent nie są jeszcze obsługiwane przez usługę Azure Cosmos DB dla języka Gremlin. Wywołania interfejsu API Fluent wymagają wewnętrznej funkcji formatowania znanej jako obsługa kodu bajtowego, która obecnie nie jest obsługiwana przez usługę Azure Cosmos DB dla języka Gremlin. Z tego samego powodu najnowszy sterownik Języka Gremlin-JavaScript również nie jest obecnie obsługiwany.

Następny krok