Я прототипирую схему авторизации/защиты данных в Neo4j, и я столкнулся с странной проблемой с одним из моих запросов. Для фона концепция заключается в том, что пользователь, пытающийся получить от a, может быть, если у них есть правильный идентификатор доступа. Итак, наши ребра имеют типы, в которых есть идентификаторы доступа. Я тестирую эту схему, создавая множество узлов и соединяя их пары с разными доступами. То есть, у меня есть множество наборов:Большое количество типов отношений в запросе cypher
(a)-[:ACCESS_A]->(b)
С разными доступами. Я запрашиваю для них:
{some query} with a match (a)-[:ACCESS_A|:ACCESS_B|<...>|:ACCESS_Z]->(b) return b
где размер списка в матче края растет с числом обращается пользователь.
Все это прекрасно работает, пока список не получит доступ к 201 году. На этом этапе в профиле показаны удары db и время, проведенное WAY up. В 200 типах отношений профиль показывает 1051 дБ, но 201 тип отношений показывает 31801. Это 30-кратное увеличение для еще одного типа! Время увеличивается аналогичным образом. переход от 199 до 200 только поднимается примерно на 50 ударов, и это связано с увеличением числа узлов.
После завершения работы, похоже, что круглый номер 200 - это больше красная селедка, чем проблема. Раньше мои типы отношений составляли 4 символа. Когда я изменил их на 9 символов (добавив «EDGE_», в качестве теста), проблема началась в 50 типах - 50 имеет 36 обращений, а у 51 - 291 - меньший скачок, но значителен по сравнению с предыдущим увеличением в том же контрольная работа.
Похоже, что существует какое-то отношение имени отношения к тому месту, где запрос падает, но я все еще расследую.
Вещи, которые я проверил и не нашла, чтобы представлять интерес:
- длина всего запрос (размер строки): Это не может в совершенно разных размерах запросов с 4 и 9 типов отношений характера
- длина списка в [e: < ...>] (размер строки). Как указано выше, она не в очень разных размерах
- количества узлов или ребер в графе
Моя проблема связана не с количеством типов в графике (которое на самом деле меньше числа возможных типов, которые я передаю, по причинам тестирования), а с номером в моем запросе. – Tal