shelestov
я тут часто
Есть у меня один homework для души на java.
Решил сделать в нем синхронизацию с сервером.
У приложения N пользователей, у каждого пользователя может быть N устройств. Все как обычно.
На клиенте SQLIte база, в ней 5 таблиц. Каждая запись каждой таблицы должна быть синхронизирована.
На сервере MySQL.
Сам процесс синхронизации - это обмен XML файлами. Клиент должен отправить свои локальные изменения, сервер вернуть изменения, полученные от других устройств с момента последней синхронизации текущего.
Собственно у меня мысль такая.
На клиенте для каждой записи в каждой таблице добавить 2 поля:
1. lastupdate (unixtimestamp)
2. is_delete (1/0)
Ну и хранить для всего клиента дату последней синхронизации lastsync.
При удалении записей удалять их физически только в том случае, если модификация локальна, т.е. lastupdate>lastsync, в противном случае скрывать полем is_delete=1 и не выводить.
После успешной синхронизации все записи с is_delete=1 физически удаляем.
Все остальные изменения просто отправляются на сервак где производится insert on duplicate update.
Вот сижу и думаю нормально ли такое решение, или же я что то не учел?
Решил сделать в нем синхронизацию с сервером.
У приложения N пользователей, у каждого пользователя может быть N устройств. Все как обычно.
На клиенте SQLIte база, в ней 5 таблиц. Каждая запись каждой таблицы должна быть синхронизирована.
На сервере MySQL.
Сам процесс синхронизации - это обмен XML файлами. Клиент должен отправить свои локальные изменения, сервер вернуть изменения, полученные от других устройств с момента последней синхронизации текущего.
Собственно у меня мысль такая.
На клиенте для каждой записи в каждой таблице добавить 2 поля:
1. lastupdate (unixtimestamp)
2. is_delete (1/0)
Ну и хранить для всего клиента дату последней синхронизации lastsync.
При удалении записей удалять их физически только в том случае, если модификация локальна, т.е. lastupdate>lastsync, в противном случае скрывать полем is_delete=1 и не выводить.
После успешной синхронизации все записи с is_delete=1 физически удаляем.
Все остальные изменения просто отправляются на сервак где производится insert on duplicate update.
Вот сижу и думаю нормально ли такое решение, или же я что то не учел?