AWS Neptune Gremlin, пагинация по хеш-идентификатору - PullRequest
0 голосов
/ 10 октября 2019

У меня очень большой набор данных, близкий к 500 миллионам ребер, в котором необходимо пройти почти все ребра. Я пытаюсь распараллелить эти обходы, пытаясь разбить страницы на IDS. Моя стратегия состояла в том, чтобы попытаться разбить на страницы по идентификатору, который является хешем MD5. Я пробовал запросы, подобные следующим:

g.E().hasLabel('foo').has(id, TextP.startingWith('AAA')) для страницы 1 g.E().hasLabel('foo').has(id, TextP.startingWith('AAB')) для страницы 2

Но каждый запрос, кажется, выполняет полное сканирование, а не только подмножество. Как вы рекомендуете делать пагинацию?

1 Ответ

1 голос
/ 10 октября 2019

Я предлагаю вам выполнить profile step в ваших запросах, чтобы увидеть количество фактических обходов.

Использование предиката startingWith для id не похоже наоптимизированное решение для меня, поскольку он, вероятно, использует хэш-индекс, а не индекс диапазона. Я бы попытался добавить префикс к другому строковому свойству или даже добавить случайное свойство [1..n] 'replica' и фильтр, используя .has('replica', i), чтобы получить лучшую производительность, особенно на таком большом графике.

...