Выбор ответа Senior Офлайн и синхронизация обновлено
Удаления при синхронизации
Вопрос
Почему при дельта-синхронизации сервер должен хранить «надгробия» (tombstones) удалённых записей?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Иначе клиент, бывший офлайн при удалении, не узнает о нём и покажет или вернёт удалённую запись. Дельта-запрос «что изменилось после версии X» должен вернуть и удаления.
Варианты ответа
- Надгробия нужны только для аудита: по ним видно, кто и когда удалил запись
- Надгробия ускоряют поиск по базе: удалённые записи исключаются по индексу, а не сканированием
- Иначе клиент, бывший офлайн при удалении, не узнает о нём и покажет или вернёт удалённую записьправильный ответ
- Без надгробий нельзя удалить запись на сервере из-за внешних ключей на неё в других таблицах
Разбор
Дельта-запрос «что изменилось после версии X» должен вернуть и удаления. Если запись просто стёрта, сервер не может сообщить о ней клиенту, и у клиента остаётся «призрак», а при отправке его локальных изменений запись может воскреснуть. Надгробия хранят ограниченное время, а клиентам, отставшим сильнее, предлагают полную пересинхронизацию.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.