Ограничение шага repeat () для использования только 32 циклов с использованием gremlin в azure cosmosdb graph. Возможные обходные пути

#azure-cosmosdb #azure-cosmosdb-gremlinapi

#azure-cosmosdb #azure-cosmosdb-gremlinapi

Вопрос:

В настоящее время я использую Azure Cosmos DB [Gremlin API] для хранения иерархической информации. Я поддерживаю отношения ParentChild между моими вершинами, используя ребра типа ‘parentOf’.

Требование: учитывая известную родительскую вершину, извлеките все дочерние вершины [рекурсивно полученные] из вершины.

Проблема: я использую приведенные ниже запросы для извлечения требуемых ребер и вершин.

Извлеките все вершины в иерархии vertexX: g.V().hasLabel(‘company’).has(‘CompanyName’, ‘vertexX’).emit().repeat(out(‘parentOf’)).пока(__.outE().count().is(0))

Извлеките все ребра в иерархии vertexX.Мы извлекаем только ребра, определенные отношением ‘parentOf’: g.V().hasLabel(‘company’).has(‘CompanyName’,’vertexX’).emit().repeat(out(‘ParentOf’)).until(__.outE().count().is(0)).outE(‘parentOf’)

Проблема: учитывая иерархию, в которой расстояние между дочерними элементами больше 32, приведенный выше запрос завершается с ошибкой ниже: gv().hasLabel(‘company’).has(‘CompanyName’,’SR101′).emit().repeat(out(‘parentOf’)).до (__.outE().count().is(0)).значения (‘CompanyName’): Ошибка оценки скрипта: ActivityId: b1f1fc11-f616-4ea4-8301-8e2eb32711d1 Тип исключения: Исключение GraphRuntimeException Сообщение об исключении: Ошибка выполнения запроса Gremlin: Превышено максимальное количество циклов на повторите() шаг. Не может превышать 32 циклов. Рекомендуется ограничить количество циклов с помощью шага times (n) или с условием loops() . Например: …до (hasId(TargetID).или().loops().is(n)) Источник: Microsoft.Azure.Graphs GremlinRequestId: b1f1fc11-f616-4ea4-8301-8e2eb32711d1 Контекст: область графических вычислений: graphcomp-execquery GraphInterOpStatusCode : GraphRuntimeError HResult: 0x80131500

Я пробовал, может ли шаг subgraph() быть полезным, но тщетно, поскольку cosmosdb имеет ограниченные шаги gremlin, которые можно использовать

Похоже, это ограничение. Существуют ли какие-либо известные рекомендации или обходные пути для этого сценария.

Комментарии:

1. У меня такая же проблема, и я не могу найти никакого решения для этого ограничения, поэтому я сообщил об этом в службу поддержки Azure и отправил им эту ссылку. Они сказали, что член команды CosmosDB должен ответить на это сообщение через 24-48 часов. Надеюсь, они добавят еще некоторые разъяснения.