Двусторонняя синхронизация между приложением iPhone и веб-приложением - PullRequest
4 голосов
/ 24 июня 2010

У меня есть веб-приложение, основанное на базе данных MySQL, для которого я думаю о создании приложения для iPhone.Это приложение позволит пользователям просматривать / вставлять / обновлять / удалять данные своей учетной записи в веб-приложении.

Самый простой способ - создать приложение для iPhone просто как интерфейс для веб-приложения, то есть каждую операцию.требует подключения к сети.Тем не менее, я бы хотел, чтобы приложение для iPhone имело собственную «автономную» версию базы данных.Это не только позволило бы пользователю работать в автономном режиме, но и обеспечило бы лучший опыт, поскольку наличие всего локального означает более быстрое и более отзывчивое приложение.

Я бы обрабатывал конфликты, используя временную метку и сохраняя последнюю версию(Я уже использую soft-delete, то есть когда пользователь удаляет запись, я просто устанавливаю флаг), но я не совсем понял, как обрабатывать вставки.Действительно, если пользователь вставляет новые элементы как в автономную (приложение для iPhone), так и в онлайн (веб-приложение) базы данных, возникает конфликт первичного ключа (все мои таблицы имеют поле INTEGER с автоинкрементом в качестве первичного ключа).Как я могу справиться с этой проблемой?

Я думал о том, чтобы иметь первичный ключ из двух столбцов, один из которых представляет собой автоинкрементное целое число, а второй относится к «устройству».Таким образом, новые записи, добавленные через веб-приложение, будут иметь идентификатор 1-web, 2-web и т. Д., А записи, созданные с помощью приложения iPhone 1-iphone, 2-iphone и т. Д., Позволят объединить двабазы данных без конфликтов.Что вы думаете об этой идее?

1 Ответ

5 голосов
/ 24 июня 2010

Самым простым решением на сегодняшний день является использование UUID.

Менее элегантным решением является размещение идентификаторов iPhone в определенном подмножестве пространства клавиш.Например, с помощью 64-битного ключа каждому iPhone может быть назначен определенный шаблон из старших 20 бит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...