Android синхронизирует данные между пользователями

У меня есть приложение для Android, которое поддерживает локальную базу данных SQLite для разных географических местоположений.

Теперь я хотел бы подключить эту базу данных к «облаку», чтобы выполнить следующие:

  • первоначальную загрузку всего, когда приложение впервые установлено (или по запросу)

  • новые местоположения, которые были добавлены локально следует загружать в облако (автоматически)

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

У меня есть ряд проблем с выполнением этого.

Первый — просто как это сделать . Я думаю, что это связано с контент-провайдерами и синхронизаторами, но я не совсем уверен, как это сделать. Нужно ли мне дублировать мою базу данных SQLite в контент-провайдере, или я допустил ошибку в базовом дизайне, чтобы использовать базу данных напрямую, а не через пользовательский контент-провайдер?

Во-вторых, записи о местоположении нельзя просто копировать вверх и вниз из онлайновой базы данных, поскольку они будут иметь конфликтующие идентификационные номера. У меня есть несколько реляционных таблиц,такие как «теги», которые связывают идентификатор тега -с идентификатором местоположения -. Идентификатор моего тега -не обязательно будет соответствовать идентификатору -другого тега пользователя. То же самое с идентификаторами местоположения. Так что в переносе должна быть какая-то логика. Где/как это должно быть правильно обработано ? Это роль contentResolver? (не уверен, что это на самом деле)

В-третьих, что произойдет, если 2 пользователя одновременно добавят одно и то же местоположение (, возможно, с разными описаниями и деталями )? Существует ли лучший -способ объединения этих записей?

Наконец, как проще всего создать/разместить онлайн-компонент? Эта часть для меня совершенно новая. Могу ли я просто поместить основную базу данных в общедоступную папку Dropbox или мне нужно создать собственное веб-приложение php -с нуля? Или есть готовое -упакованное решение, которое упростило бы эту часть?

27
задан Brent 2 May 2012 в 14:11
поделиться