Требуется ли хранить удаленные объекты на сервере или нет, зависит от ваших потребностей.Вам понадобится удаленный флаг, чтобы пометить его как удаленный для синхронизации, возможно, также на сервере, в зависимости от вашего желания выполнить откат.
Я позаботился об этой проблеме несколькими способами ранее.Вот одна из возможностей:
Когда клиент удаляет что-либо, просто отметьте его для локального удаления и удаления с сервера во время синхронизации (в этот момент вы можете очистить основные данные).Когда другие клиенты запрашивают доступ к этим данным, отправьте обратно HTTP 404, потому что у вас больше нет объекта.В этот момент клиент может удалить объект локально.Теперь, если клиент запрашивает список вещей, и этот объект был удален, он просто будет отсутствовать в списке вещей, которые он возвращает, так что вы можете обнаружить это и удалить его.Я делаю это на клиенте, создавая массив идентификаторов объектов при получении ответа от сервера и удаляя все локальные объекты, у которых нет этих идентификаторов.
У нас есть удаленное поле на сервере, нопросто чтобы иметь возможность откатить на случай, если что-то будет случайно удалено.
Конечно, вы можете вернуть удаленные объекты клиенту, чтобы они знали об удалении, но если вы не хотите сохранять копию насервер, вы должны сделать некоторое предположение, что все клиенты будут обновляться в течение определенного периода времени.Тогда вы можете собрать мусор после истечения этого периода времени.
Мне не очень нравится это решение.Если ваши данные слишком тяжелые, чтобы запрашивать все объекты для полной синхронизации, вы можете использовать свою текущую стратегию слияния для создания и обновления, а затем выполнить отдельный вызов для проверки удаленных элементов.Этот вызов может просто запросить все идентификаторы, которые клиент должен иметь на устройстве.Это может удалить те, которые не существуют.ИЛИ он может отправить все идентификаторы на клиенте и получить список идентификаторов для удаления.
Я думаю, что вам нужно предоставить более подробную информацию о характере данных, если вы хотите более взвешенное предложение.