【问题标题】:Synchronize SQLite database across devices跨设备同步 SQLite 数据库
【发布时间】:2016-11-12 14:32:36
【问题描述】:

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

  1. 存储空间相当有限。
  2. 只能在文件级别(相对于数据库行)进行同步。

后者特别糟糕,因为这意味着不同设备上的更改可能会撤消在另一个设备上所做的更改,而不是合并修改。

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


更新:更多信息1)关于我在寻找什么,以及我试图避免什么情况。以下列表没有特别的顺序:
  • 与我正在寻找的最接近的匹配项(就功能而言)是Azure Mobile App Service。它允许服务器端数据库存储,具有冲突解决回调。如果此框架可用于每个最终用户的云存储,它将提供无缝连接体验。
  • 我希望避免轮询在另一台设备上所做的数据库更改。 OneDrive 支持Webhook Notifications,所以这不是一个真正的问题(假设其他云存储提供商提供类似的服务)。
  • 我想避免下载整个数据库来计算与本地数据库的增量。这将需要某种基于 Web 的服务。到目前为止,我的研究一无所获,所以这是我可能不得不忍受的事情。
  • 我想及时收到变更通知。如果我必须跨底层数据库文件的云存储进行所有同步,这意味着数据库应该在它发生变化时上传。这是有问题的,尤其是在计量连接上。


1)此信息是在提供the accepted answer 之后提供的。投票时请记住这一点。

【问题讨论】:

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


    【解决方案1】:

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

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

    编辑

    为了完整起见,我会提到 Microsoft Sync Framework 作为一个选项来帮助解决同步问题,但它现在处于“扩展支持”中,官方文档没有提到 UWP,所以我不知道它是否有效与否。

    【讨论】:

    • 这令人失望。我相信我所要求的是几乎任何应用程序的一个相当普遍的要求。我明白解决冲突仍然是我的责任。我只是希望有一个框架可以通知我冲突,并用详细信息回调我的应用程序以解决它。我本来希望 OneDrive 支持,但看起来没有。至少 Webhook Notifications 允许我响应云内容的变化。仍然感觉像下载整个数据库一样,只是为了找到本地增量。
    • 是的,这很常见,但通常是基于云的。您可以查看像 Azure Mobile Services 这样的产品来帮助使用服务器端组件。如果您想货比三家,亚马逊和其他公司也有类似的优惠。
    • 原谅我的无知,但 Azure 移动应用程序服务(和其他)不会要求后备存储在服务器上,由应用程序作者/供应商控制吗?这使得它对协作很有用,但对于单个用户来说却毫无用处,他们只想让他或她的数据跟随他们,而不管他们在任何给定时间使用的设备如何。还是我错过了什么?
    • 您的请求对 Windows 中的新功能建议很有意义。就目前而言,您需要一个服务器资源。想象一下任何具有漫游数据的单用户应用程序(尤其是跨平台);他们可能使用云数据存储。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 2013-02-19
    相关资源
    最近更新 更多