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

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

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

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

Получить все вершины в vertexX Иерархия: gV(). HasLabel('company'). Has('CompanyName', 'vertexX'). Emit (). Repeat(out('ParentOf')). До (__. OutE().count(). есть (0))

Получить все края в иерархии vertexX. Мы выбираем только ребра, определенные отношением 'ParentOf': gV(). HasLabel('company'). Has('CompanyName', 'vertexX'). Emit (). Repeat(out('ParentOf')). пока (__. Oute (). не считать (). есть (0)). Oute ('ParentOf')

Проблема: Учитывая иерархию, в которой расстояние между большими дочерними элементами больше 32, вышеупомянутый запрос завершается с ошибкой ниже: gV(). HasLabel('company'). Has('CompanyName','SR101'). Emit (). Repeat(out('ParentOf')). до (__.outE().count().is(0)).values ​​('CompanyName'): Ошибка оценки сценария: ActivityId: b1f1fc11-f616-4ea4-8301-8e2eb32711d1 ExceptionType: GraphRuntimeException ExceptionMessage: Ошибка выполнения запроса Gremlin: превышено максимальное количество циклов на шаге repeat (). Не может превышать 32 цикла. Рекомендуется ограничить число циклов с помощью шага times (n) или с помощью условия loops (). Например:... till(hasId(targetId).or(). Loops (). Is (n)) Источник: Microsoft.Azure.Graphs GremlinRequestId: b1f1fc11-f616-4ea4-8301-8e2eb32711d1 Контекст: graphcompute Область действия: graphcomp-execquery GraphInterOpStatusCode: GraphRuntimeError HResult: 0x80131500

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

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

0 ответов

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