Как сделать пагинацию в NeptuneDB для достижения высокой производительности

Привет, сейчас я создаю веб-сайт, используя aws NeptuneDB (Gremlin), NodeJs в качестве серверной части и Angular в качестве внешнего интерфейса. Теперь я столкнулся с проблемой: я хочу сделать разбивку на страницы на своем веб-сайте, потому что без разбиения на страницы я могу загружать и отображать 5000 элементов за один запрос. Я знаю, что в MySQL мы можем использовать как

select * from mydb limit 0, 20;

сделать пагинацию.

Могу ли я добиться подобного в NeptuneDB (или GraphDB). Я некоторое время исследовал и нашел это: Как выполнить разбиение на страницы в Gremlin

Обратитесь к ответу на этот вопрос. Кажется, мы не можем избежать загрузки всех результатов запроса в память. Означает ли это, что это не имеет никакого значения с нумерацией страниц или без нее.

Или я могу добиться разбивки на страницы между Node и Angular (я просто догадываюсь)?

Итак, есть идеи по улучшению производительности?


person Hongli Bu    schedule 17.12.2019    source источник


Ответы (1)


Кажется, я могу использовать как

g.V('vertice').out('some_relationship').order().by().range(0,3)

Порядок может быть гарантирован с помощью order() Но проблема в том, что при разбиении на страницы нам нужно получить три параметра: currentPage, PageSize, TotalNumOfItems', currentPage и PageSize, которые передаются из внешнего интерфейса, но как мы можем получить общее количество перед получением элементов ?

мой способ просто считать перед извлечением элементов:

g.V('vertice').out('some_relationship').count()
g.V('vertice').out('some_relationship').order().by().range(0,3)

Будет ли это работать?

person Hongli Bu    schedule 17.12.2019
comment
С точки зрения производительности вызов .count() может быть плохой идеей, если out('some_relationship') содержит большое количество данных. Но если вам нужно отобразить TotalNumOfItems, то это сработает - person ashoksl; 24.01.2020