同步 SQLite 数据库和 Dropbox 数据存储

Posted

技术标签:

【中文标题】同步 SQLite 数据库和 Dropbox 数据存储【英文标题】:Synchronize SQLite database and Dropbox datastore 【发布时间】:2014-05-19 19:26:43 【问题描述】:

我为 android 开发记事本应用程序。应用程序将其数据存储在 SQLite 数据库中。我想使用Dropbox datastore API 为应用程序数据实现可选的备份/同步。如果用户已关联其 Dropbox 帐户,应用数据应存储在 Dropbox 云中并在所有用户设备之间同步。

我的解决方案最初是将所有应用数据存储在数据库中。当用户链接他的 Dropbox 帐户应用程序会将所有数据移动到数据存储区。之后该应用程序将使用数据存储(因为它支持离线缓存并在后台执行同步)。如果用户决定取消他的 Dropbox 帐户与应用程序的链接,他的所有数据将被移回设备上的本地 SQLite 数据库。我想创建应用数据存储的接口并有两个实现:SQLite 数据库和 Dropbox 数据存储。因此其他应用程序组件将不依赖于存储实现。当然,所有这些对用户来说都是完全透明的。

这是一个好方法吗?你能建议更好的方法吗?

提前致谢!

【问题讨论】:

我正在考虑做同样的事情,基本上。我希望我的所有数据都保留在 SQLite 中,但随后我会通过 Sync API 或 Datastore API 将每个数据库记录同步到 Dropbox。你有没有实现过这个?结果如何? 【参考方案1】:

仅供参考,Datastore API 3.0 测试版包含一个名为“本地数据存储”的预览功能,有望消除对此的需求。请参阅此处宣布预览功能的博文:https://www.dropbox.com/developers/blog/97/sync-api-and-datastore-api-30-beta-release。

【讨论】:

非常有趣的功能,而且及时。谢谢!【参考方案2】:

最后我实现了这个。来源可以找到here。关键类是implementation of Dropbox storage。应用程序使用存储接口,并且与两种实现(数据库和 Dropbox 数据存储)都可以正常工作。两种实现都会缓存频繁查询的结果。我只关心一件事是性能。我还没有测试和比较这些实现的数据查询和存储内容修改调用的性能。但我会说该应用运行顺畅,我没有发现任何滞后。

【讨论】:

嗨 @SagarPanwala 我更新了链接以防万一,但 Dropbox 已弃用此 API 并在大约一年前关闭。

以上是关于同步 SQLite 数据库和 Dropbox 数据存储的主要内容,如果未能解决你的问题,请参考以下文章

把Boostnote内的数据在云平台同步的方法

评估将核心数据与 Dropbox 同步的策略

使用 MAMP Pro 3 将 mysql 数据库与 Dropbox 同步

使用阿里云搭建个人网盘(Nextcloud)

使用 Dropbox Datastore API 作为 Android 应用程序的主要存储选项

关于 Dropbox Sync、合并 CoreData 的思考