AWS Neptune Gremlin разбивает на страницы по хешированному идентификатору края

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

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

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


person Omar Darwish    schedule 09.10.2019    source источник


Ответы (1)


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

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

person Kfir Dadosh    schedule 10.10.2019