Выбор ответа Senior Офлайн и синхронизация обновлено

Удаления при синхронизации

Вопрос

Почему при дельта-синхронизации сервер должен хранить «надгробия» (tombstones) удалённых записей?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Иначе клиент, бывший офлайн при удалении, не узнает о нём и покажет или вернёт удалённую запись. Дельта-запрос «что изменилось после версии X» должен вернуть и удаления.

Варианты ответа

  1. Надгробия нужны только для аудита: по ним видно, кто и когда удалил запись
  2. Надгробия ускоряют поиск по базе: удалённые записи исключаются по индексу, а не сканированием
  3. Иначе клиент, бывший офлайн при удалении, не узнает о нём и покажет или вернёт удалённую записьправильный ответ
  4. Без надгробий нельзя удалить запись на сервере из-за внешних ключей на неё в других таблицах

Разбор

Дельта-запрос «что изменилось после версии X» должен вернуть и удаления. Если запись просто стёрта, сервер не может сообщить о ней клиенту, и у клиента остаётся «призрак», а при отправке его локальных изменений запись может воскреснуть. Надгробия хранят ограниченное время, а клиентам, отставшим сильнее, предлагают полную пересинхронизацию.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.