У меня есть приложение для Android, которое поддерживает локальную базу данных SQLite для разных географических местоположений.
Теперь я хотел бы подключить эту базу данных к «облаку», чтобы выполнить следующие:
первоначальную загрузку всего, когда приложение впервые установлено (или по запросу)
новые местоположения, которые были добавлены локально следует загружать в облако (автоматически)
онлайн-базу данных следует время от времени проверять на наличие новых онлайн-записей и загружать в локальную базу данных.
У меня есть ряд проблем с выполнением этого.
Первый — просто как это сделать . Я думаю, что это связано с контент-провайдерами и синхронизаторами, но я не совсем уверен, как это сделать. Нужно ли мне дублировать мою базу данных SQLite в контент-провайдере, или я допустил ошибку в базовом дизайне, чтобы использовать базу данных напрямую, а не через пользовательский контент-провайдер?
Во-вторых, записи о местоположении нельзя просто копировать вверх и вниз из онлайновой базы данных, поскольку они будут иметь конфликтующие идентификационные номера. У меня есть несколько реляционных таблиц,такие как «теги», которые связывают идентификатор тега -с идентификатором местоположения -. Идентификатор моего тега -не обязательно будет соответствовать идентификатору -другого тега пользователя. То же самое с идентификаторами местоположения. Так что в переносе должна быть какая-то логика. Где/как это должно быть правильно обработано ? Это роль contentResolver? (не уверен, что это на самом деле)
В-третьих, что произойдет, если 2 пользователя одновременно добавят одно и то же местоположение (, возможно, с разными описаниями и деталями )? Существует ли лучший -способ объединения этих записей?
Наконец, как проще всего создать/разместить онлайн-компонент? Эта часть для меня совершенно новая. Могу ли я просто поместить основную базу данных в общедоступную папку Dropbox или мне нужно создать собственное веб-приложение php -с нуля? Или есть готовое -упакованное решение, которое упростило бы эту часть?