В настоящее время я работаю над проектом GraphQL, использующим Apollo Server / PostgresQL и Knex / Objection.
Наборы данных, с которыми я работаю, могут очень легко перейти на 100 тыс. Элементов.
Таким образом, возник вопрос о разбиении на страницы, и я пытался найти способ работы с разбиением на страницы на основе курсора, поскольку в наши дни это кажется стандартом.
Но после проверки нескольких реализаций, таких как:
https://facebook.github.io/relay/graphql/connections.htm#sec-Pagination-algorithm https://github.com/Terminal-Systems/apollo-cursor-pagination
У меня было ощущение, что для всех этих реализаций перед разрезанием на основе курсора выбирается весь набор данных.Что меня смутило, потому что это кажется огромной проблемой производительности, когда вы работаете с большими наборами данных?
Даже в спецификации Relay, которую я связал, говорится, что вы начинаете с allEdges
до нарезки в зависимости отдо или после аргументов.
Есть ли что-то, чего мне не хватает?Потому что я не понимаю, как этот подход мог бы быть лучше, чем нумерация страниц, основанная на смещении, но мне бы очень хотелось, чтобы мои ошибки доказали, что мои рассуждения ошибочны.
Приветствия и счастливая пятница!