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