Выбор ответа Senior Django REST Framework обновлено
Когда выбрать курсорную пагинацию
Вопрос
Лента событий с миллионами записей и постоянными вставками. Какую пагинацию DRF выбрать?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: CursorPagination: страницы стабильны при вставках, запрос по индексу. Offset-пагинация на глубоких страницах заставляет базу пролистать все предыдущие строки (OFFSET 1000000), а новые записи сдвигают страницы, и клиент видит дубли или пропуски.
Варианты ответа
CursorPagination: страницы стабильны при вставках, запрос по индексуправильный ответPageNumberPaginationс большимpage_size, чтобы страниц было меньшеLimitOffsetPaginationс индексом поcreated, чтобы offset был быстрым- Без пагинации: отдавать всё одним ответом и кешировать его в Redis
Разбор
Offset-пагинация на глубоких страницах заставляет базу пролистать все предыдущие строки (OFFSET 1000000), а новые записи сдвигают страницы, и клиент видит дубли или пропуски. Курсорная пагинация запоминает позицию по упорядоченному уникальному полю (created, id) и делает WHERE created < курсор LIMIT n. Цена: нельзя перейти сразу на страницу N и нужна стабильная сортировка.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.