Часто задаваемые вопросы о Azure Cosmos DB для Apache Gremlin

Область применения: Гремлин

Запросы Gremlin

Как оценить эффективность запросов Gremlin

Чтобы получить предварительный план выполнения запроса, можно использовать ExecutionProfile() в конце запроса Gremlin, Этот шаг необходимо добавить в конец любого запроса Gremlin. Например, можно добавить шаг в конец g.V('example').out('relationship') запроса g.V('example').out('relationship').executionProfile().

В этих выходных данных показано, сколько времени понадобилось на получение объектов вершин и объектов ребер, а также указан размер рабочего набора данных. На основе этих значений и формируется стоимость запросов Azure Cosmos DB.

Другие часто задаваемые вопросы

Как оплачиваются единицы запроса (ЕЗ) при выполнении запросов к базе данных графа?

Все объекты графа (вершины и ребра) описаны в документации JSON, относящейся к серверной части. Так как один запрос Gremlin может изменять один или несколько объектов графа за раз, затраты, связанные с ним непосредственно с объектами, краями, обрабатываемыми запросом. Точно таким же образом Azure Cosmos DB взаимодействует со всеми API. См. дополнительные сведения о единицах запросов в базе данных Azure Cosmos DB.

Плата за ЕЗ формируется на основе обрабатываемого, но не результирующего набора данных. Например, если запрос стремится получить одну вершину в результате, но необходимо пройти несколько других объектов по пути, то затраты основаны на всех объектах графа, необходимых для вычисления одной вершины результата.

Какой максимальный масштаб может иметь база данных графов в Azure Cosmos DB для Gremlin?

Azure Cosmos DB выполняет горизонтальное секционирование, чтобы автоматически увеличивать объем хранилища и пропускную способность в соответствии с требованиями. Максимальная пропускная способность и объем хранилища рабочей нагрузки определяется количеством разделов, связанных с определенным контейнером. Однако в контейнере Gremlin есть определенный набор рекомендаций для обеспечения правильной производительности в масштабе. Дополнительные сведения о секционировании данных и рекомендации см. в статье о секционировании и масштабировании в Azure Cosmos DB.

Можно ли использовать для разработки на C# или .NET пакет Microsoft.Azure.Graphs или Gremlin.NET?

Azure Cosmos DB для Gremlin использует драйверы с открытым кодом в качестве основных соединителей для службы. Поэтому рекомендуется использовать драйверы, поддерживаемые Apache.

Как можно защитится от атак путем внедрения кода с помощью драйверов Gremlin?

Большинство собственных драйверов Apache Tinkerpop Gremlin позволяют использовать словарь параметров для выполнения запросов. См. пример с использованием Gremlin.Net и Gremlin-Javascript.

Почему я получаю сообщение об ошибке поиска метода при компиляции запроса Gremlin (Gremlin Query Compilation Error: Unable to find any method)?

Azure Cosmos DB для Gremlin реализует подмножество функций, определенных в области поверхности Gremlin. Информацию о поддерживаемых шагах и другие дополнительные сведения см. в статье о поддержке Gremlin.

Лучшее решение — использовать вместо требуемых (основных) функций Gremlin соответствующие функции, которые поддерживаются в Azure Cosmos DB.

Почему я получаю сообщение об ошибке возвращения сервером кода состояния 200 вместо кода состояния 101 (WebSocketException: The server returned status code '200' when status code '101' was expected)?

Чаще всего эта ошибка возникает при использовании неправильной конечной точки. Конечная точка, которая создает эту ошибку, имеет следующий шаблон: https://<account-name>.documents.azure.com:443/

Это конечная точка документов для базы данных графа. Следует использовать правильную конечную точку Gremlin со следующим адресом:

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

Почему я получаю ошибку о превышении скорости запроса (RequestRateIsTooLarge)?

Эта ошибка означает, что выделенного количества единиц запросов (ЕЗ) в секунду недостаточно для обслуживания запроса. Эта ошибка возникает при выполнении запроса, который получает все вершины:

// Query example:
g.V()

Этот запрос пытается получить все вершины из графа. Следовательно, стоимость такого запроса будет включать как минимум стоимость ЕЗ, требуемых для получения всех вершин. Чтобы такой запрос был выполнен, нужно указать требуемое количество ЕЗ/с.

Почему не удается установить подключение драйвера Gremlin?

Подключение Gremlin устанавливается по протоколу WebSocket. Хотя подключения WebSocket не имеют определенного времени для жизни, Azure Cosmos DB для Gremlin будет завершать бездействие через 30 минут бездействия.

Почему нельзя использовать вызовы текучих API в собственных драйверах Gremlin?

Вызовы API Fluent пока не поддерживаются Azure Cosmos DB для Gremlin. Вызовы API Fluent требуют внутренней функции форматирования, известной как поддержка байт-кода, которая в настоящее время не поддерживается Azure Cosmos DB для Gremlin. По этой же причине сейчас не поддерживается и последняя версия драйвера Gremlin-JavaScript.

Следующий шаг