Сначала определите, какой результат нужен: каталог на одну согласованную границу или последовательность актуальных изменений. Это разные задачи. Если бизнесу нужна воспроизводимая выгрузка, у неё должны быть понятны состав, завершение и условия возобновления.

Когда страницы меняются во время чтения

Учебный каталог содержит товары A, B, C и D, отсортированные по названию. Получатель читает первые два, затем источник удаляет A. В новом списке B, C, D третьим становится D. Если продолжить с прежним числовым смещением, C может не попасть в выгрузку. Вставка перед прочитанной границей, наоборот, может привести к повтору уже полученной записи.

Проблема не ограничивается удалением. При сортировке по изменяемой цене запись способна перейти с ещё не прочитанной страницы на уже прочитанную. Устойчивый идентификатор помогает отличить повтор, но не возвращает пропущенную строку. Поэтому правило сортировки, граница выборки и поведение при изменениях обсуждаются вместе.

Нужно решить и состав набора: включаются ли скрытые товары, варианты и архивные записи. Получатель не сможет проверить полноту, если источник считает одним каталогом активные товары, а потребитель ожидает ещё и снятые с продажи позиции.

Курсор и граница снимка

Курсор — указатель для продолжения чтения. Само наличие такого указателя не гарантирует неизменного снимка. Он может означать только место в текущем списке. В контракте необходимо объяснить, сохраняется ли состав выборки и какие изменения видит следующий запрос.

Для учебной выгрузки выбираем снимок catalog-S7, содержащий A–D на момент начала. Добавленный позже E относится к следующей выгрузке. Возможность хранить такой снимок и срок его доступности должны быть подтверждены реализацией, а не названием параметра.

Таблица 1 · Учебный артефакт
ВариантЧто получает потребительЧто нужно согласовать
Смещение в текущем спискеСтраницы меняющегося набораДопустимость пропусков и способ последующей сверки
Продолжение по устойчивому ключуЗаписи после заданной границыСортировку, обновления уже прочитанных записей
Снимок на фиксированную границуОдин воспроизводимый составХранение снимка, срок действия и признаки полноты
Поток измененийИзменения после сохранённой точкиНачальное состояние, удаление и завершение интервала

Это таблица выбора, а не утверждение о возможностях определённого API. Результат выбора включают в согласованный контракт, чтобы обе стороны одинаково понимали слово «полностью».

Возобновление с сохранённой точки

В контрольную точку входят не только курсор, но и параметры выборки, идентификатор снимка, последняя подтверждённая часть и состояние записи на стороне получателя. Если источник прислал страницу, а потребитель не успел её сохранить, продолжение с нового курсора потеряет данные.

В примере после сохранения A и B получатель фиксирует точку для следующей страницы catalog-S7. После сбоя он продолжает тот же снимок с теми же фильтрами. Повторная запись ранее сохранённой части должна иметь определённое поведение: заменить данные согласованной версии или распознать уже выполненное сохранение. Способ выбирают по модели данных.

Истёкший курсор требует отдельного решения. Нельзя незаметно перейти к свежему каталогу и объявить старую выгрузку законченной. Иногда безопаснее собрать новую версию целиком в отдельное место и заменить используемый каталог после сверки. До окончания этой процедуры частичный набор не должен восприниматься как полный.

Проверка добавления и удаления записей

Контрольный набор должен содержать изменения во время чтения. Для catalog-S7 ожидаются ровно A–D, даже если текущий каталог уже другой. Если выбран другой вариант из таблицы, ожидаемый состав формулируют по его правилам.

Таблица 2 · Учебный артефакт
Учебное действие между страницамиВопрос к результату
Добавить EВ какой версии он должен появиться?
Удалить AОстанется ли A в начатом снимке?
Изменить название CМожет ли сортировка скрыть запись?
Повторно получить вторую страницуНе появятся ли две копии одного товара?
Прервать сохранение страницыМожно ли безопасно возобновить запись?

Одного совпадения количества недостаточно: пропущенный C и повторный B могут дать прежний итог. Сверяйте идентификаторы и согласованные версии записей. Полезный итог проверки — таблица выбранного режима, ожидаемого состава, сохранённой точки и фактических расхождений. Она задаёт конкретный предмет для проектирования обмена.

Обсудить полную выгрузку каталога.