Сохранение данных БД и восстановление/синронизация с сервером при обрыве связи, как лучше реализовать?
Приветствую!
Пишу софт, плотно использую БД, в моём случае MySql(MariaDB).
Проблемы начинаются, когда у пользователя крайне нестабильный коннект.
Разумеется использую транзакции, проблем с целостностью самих данных нет, проблемы в удобстве - при каждом обрыве выдаётся сообщение, что попробуйте ещё раз и в крайних случаях приходиться 100500 раз прожать, пока появится нормальное соединение, это, думаю, выбешивает.
//--Основной вопрос:
Так вот, каким способом можно решить эту проблему, в идеале хотелось бы, что бы да же без коннекта пользователь мог спокойно относительно нормально работать (какие данные загрузились с теми и работает), а как связь появится, все изменения синхронизировались бы с сервером?
Например использовать локальную БД на устройстве, т.е. создать такие же таблицы, только пустые и загружать данные лишь те, которые нужны, соответственно их уже изменять/вставлять. Но тогда как их синхронизироваьт с сервером, что бы не пришлось всю эту логику прописывать руками? Есть какая-либо уже готовая методика для этого?
Могут ли одни и те же данные менять разные пользователи? Если ответ да, то синхронизацию сделать не просто. Вот на есть статья про варианты решения этой задачи. https://habrahabr.ru/company/ncloudtech/blog/264923/
Если ответ нет, тогда второй вопрос: может ли один пользователь залогиниться с разных устройств и менять свои данные, если да то тоже отсылка к предыдущей статье.
Третий вариант, ответ нет на оба вопроса. Тогда для синхронизации данных на локале и в удаленном хранилище нужно иметь уникальный ключ для данных. По этому ключу можно находить новые-удалённые записи, т.к. в этом случае ключ будет только или в удалённом или в локальном хранилище. А для поиска изменений нужно будет сравнивать по всем полям все строки таблиц у которых ключ есть и в локальном и в удалённом хранилище.