Я работаю над мобильным приложением, в котором основной функцией является выполнение пользователем множества задач CRUD (создание, чтение, обновление и удаление).
Основное хранилище данных дляПриложение является локальной базой данных sqlite, но у пользователя есть возможность зарегистрировать учетную запись и использовать облачную базу данных для резервного копирования своих данных.
Это приложение должно работать как в автономном, так и в онлайн-режиме.И пользователь должен иметь возможность использовать несколько устройств, содержащих одни и те же данные.
В настоящее время во всех моих таблицах sql у меня есть 3 дополнительных столбца, которые отслеживают, какие записи в базе данных синхронизируются: createAt (datetime),updatedAt (datetime) и синхронизированный (логический).Благодаря этому я могу отслеживать, какие записи являются самыми последними, и соответственно обновлять либо локальную, либо облачную базу данных.
Я использую Cloud Firestore в качестве облака, и использую его автономные возможности:не приемлемый вариант в моем случае.
Мой вопрос;Какое решение будет наилучшим при отслеживании удаленных записей до тех пор, пока приложение не сможет синхронизироваться с облаком?
Одной из идей для решения этой проблемы является наличие таблицы, содержащей все идентификаторыудаленные записи вместе с таблицей, к которой он принадлежит, а затем, когда приложение может синхронизироваться;удалите эти записи как в локальной базе данных (на всех устройствах), так и в облачной базе данных.Проблема, с которой я столкнулся в этом решении, состоит в том, что эта таблица «удаления» быстро станет огромной, и удаление записей из этой таблицы будет проблемой из-за необходимости обновления всех пользовательских устройств перед удалением ив случае, когда пользователь отказался от одного из своих устройств, это означало бы, что устройство никогда не будет синхронизировано, в результате чего записи не будут удалены из таблицы «удаление».
Что бы вы посоветовалибыть для надежного способа отслеживания удаленных записей?