У меня есть график, который должен отслеживать количество функций, к которым у определенного пользователя есть доступ.
Существует около 40 пользователей и 4000 функций.Все пользователи имеют доступ к базовому набору функций по умолчанию.Около половины функций являются общими: 2000 функций.Таким образом, граф имеет не менее 80000 ребер.(У меня действительно много краев, идущих к общему набору относительно статических функций. Это является проблемой, но не фокусом этого поста.)
Учитывая идентификатор пользователя (UUID) как создать запрос, который будет эффективно извлекать все функции, к которым у пользователя есть доступ?Мой текущий запрос выглядит следующим образом:
val graph = // my graph
val query =
graph
.V(user)
.out("user-feature")
.has("type", "feature") // Interestingly, removing this makes the query slower
.dedup()
.valueMap("feature-name", "id")
.toList
, что даст мне список Map[String, String]
представления всех функций, к которым у этого пользователя есть доступ.Но время запроса составляет примерно 30 секунд.Я хотел бы сократить это время вдвое.Могу ли я что-то сделать с запросом, не изменяя структуру данных (пока), что поможет сократить время?