Построение быстрых запросов с использованием janusgraph - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть график, который должен отслеживать количество функций, к которым у определенного пользователя есть доступ.

Существует около 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 секунд.Я хотел бы сократить это время вдвое.Могу ли я что-то сделать с запросом, не изменяя структуру данных (пока), что поможет сократить время?

...