Синхронизируйте базу данных SQLite и хранилище данных Dropbox

Я разрабатываю блокнот для Android. Приложение хранит свои данные в базе данных SQLite. Я хочу реализовать необязательное резервное копирование/синхронизацию данных приложения с помощью API хранилища данных Dropbox. Если пользователь связал свою учетную запись Dropbox, данные приложения должны храниться в облаке Dropbox и синхронизироваться между всеми устройствами пользователя.

Мое решение изначально хранит все данные приложения в базе данных. Когда пользователь связал свою учетную запись Dropbox, приложение переместит все данные в хранилище данных. После этого приложение будет работать с хранилищем данных (поскольку оно поддерживает автономное кэширование и выполняет синхронизацию в фоновом режиме). Если пользователь решил отключить свою учетную запись Dropbox от приложения, все его данные будут перемещены обратно в локальную базу данных SQLite на устройстве. Я хочу создать интерфейс для хранилища данных приложения и иметь две реализации: базу данных SQLite и хранилище данных Dropbox. Таким образом, другие компоненты приложения не будут зависеть от реализации хранилища. И, конечно же, все это будет полностью прозрачно для пользователя.

Это хороший подход? Не могли бы вы предложить лучший способ?

Заранее спасибо!


person Ilia Kopylov    schedule 07.04.2014    source источник
comment
Я подумываю сделать то же самое, по сути. Я хочу, чтобы все мои данные оставались в SQLite, но тогда я буду синхронизировать каждую запись базы данных с Dropbox либо через API синхронизации, либо через API хранилища данных. Вы когда-нибудь реализовывали это? Как это оказалось?   -  person Clifton Labrum    schedule 12.05.2014


Ответы (2)


К вашему сведению, бета-версия Datastore API 3.0 включает предварительную функцию под названием «локальные хранилища данных», которая, как мы надеемся, устранит необходимость в этом. См. запись в блоге, анонсирующую функцию предварительного просмотра: https://www.dropbox.com/developers/blog/97/sync-api-and-datastore-api-30-beta-release.

person user94559    schedule 02.06.2014
comment
Очень интересная функция и как раз вовремя. Спасибо! - person Ilia Kopylov; 03.06.2014

Наконец-то я это реализовал. Исходники можно найти здесь. Ключевой класс: внедрение хранилища Dropbox. Приложение использует интерфейс хранилища и отлично работает с обеими реализациями (базой данных и хранилищем данных Dropbox). Обе реализации кэшируют результаты частых запросов. Единственное, что меня беспокоит, это производительность. Я еще не тестировал и не сравнивал производительность запросов данных и вызовов изменения содержимого хранилища для этих реализаций. Но я бы сказал, что приложение работает плавно, и я не заметил никаких лагов.

person Ilia Kopylov    schedule 02.06.2014
comment
Привет @SagarPanwala Я обновил ссылки на всякий случай, но Dropbox устарел и закрыл этот API около года назад. - person Ilia Kopylov; 01.09.2017