跨设备同步SQLite数据库

时间:2016-07-10 15:28:10

标签: windows sqlite windows-runtime uwp c++-cx

为了构建连接体验,我需要跨多个设备同步我的应用程序的数据存储(SQLite数据库)。到目前为止,我找到的唯一解决方案是roam data,但这有两个直接的缺点:

  1. 存储空间相当有限。
  2. 同步只能在文件级别(对数据库行)进行。
  3. 后者特别糟糕,因为这意味着不同设备上的更改可能会撤消对其他设备所做的更改,而不是合并修改。

    问:Windows运行时是否内置了任何工具,允许数据库在设备的行级进行同步?我正在寻找适用于Windows 10和Windows 10 Mobile的解决方案。

    <小时/> 更新:有关我正在寻找的内容的附加信息 1),以及我正在努力避免的情况。以下列表没有特别的顺序:

    • 我正在寻找的最接近的匹配(就功能而言)是Azure Mobile App Service。它允许服务器端数据库存储,具有冲突解决回调。如果这个框架可用于每个最终用户的云存储,则可以实现无缝连接体验。
    • 我想避免轮询在其他设备上进行的数据库更改。 OneDrive支持Webhook Notifications,因此这不是一个真正的问题(假设其他云存储提供商提供类似的服务)。
    • 我想避免下载整个数据库来计算本地数据库的增量。这需要某种基于Web的服务。到目前为止,我的研究结果都没有,所以这是我可能不得不忍受的。
    • 我想及时收到更改通知。如果我必须跨底层数据库文件的云存储进行所有同步,这意味着数据库应该在每次更改时上传。这是有问题的,特别是在计量连接上。

    <小时/> 1) 此信息是在the accepted answer给出后提供的。在投票时请记住这一点。

1 个答案:

答案 0 :(得分:1)

这没有内置功能;要么你必须尝试让漫游存储自己工作,要么你需要有一个基于服务的方法,其中真相在云中,客户端来回同步增量。

请注意,如果您支持使用缓存数据进行离线访问,则在这种情况下仍然存在冲突解决问题,但至少存储限制将会消失。 (理论上,即使没有离线访问,您也会遇到冲突解决问题,但在单用户应用中这种情况极不可能)。

修改

为了完整起见,我将提及Microsoft Sync Framework作为帮助解决同步问题的选项,但现在它已经在“扩展支持”中,官方文档没有提到UWP,所以我不知道是否它的工作与否。