Постраничная выгрузка справочника теряет и дублирует записи
Внешняя система выгружает справочник клиентов постранично:
GET /api/v1/clients?limit=1000&offset=0
GET /api/v1/clients?limit=1000&offset=1000
Сортировка — по created_at. В справочнике около 10 млн записей, выгрузка идёт несколько часов, и всё это время записи добавляются и удаляются.
Потребитель жалуется: часть клиентов в выгрузку не попала, часть пришла дважды. Почему так происходит?
- Потребитель обрабатывает страницы параллельно и нарушает порядок — нужно строго последовательное чтение страниц
- Смещение считается по текущему состоянию данных: вставки и удаления сдвигают строки — нужна keyset-пагинация по курсору
- Размер страницы в 1000 записей слишком велик: при странице в 100 записей сдвиги перестанут возникать
- Причина в сортировке по `created_at`: достаточно сортировать по идентификатору, и смещение станет стабильным
