跨设备同步 SQLite 数据库
Synchronize SQLite database across devices
为了构建连接体验,我需要在多个设备之间同步我的应用程序的数据存储(SQLite 数据库)。到目前为止,我找到的唯一解决方案是 roam data,但这有两个直接缺点:
- 存储空间相当有限。
- 同步只能发生在文件级别(相对于数据库行)。
后者尤其糟糕,因为这意味着在不同设备上进行的更改可能会撤消在另一台设备上所做的更改,而不是合并修改。
问:Windows 运行时是否内置了任何工具,允许跨设备在行级别同步数据库?我正在寻找适用于 Windows 10 和 Windows 10 Mobile 的解决方案。
更新: 附加信息1) 关于我正在寻找的内容,以及我试图避免的情况。以下列表排名不分先后:
- 与我正在寻找的最接近的匹配项(在功能方面)是 Azure Mobile App Service。它允许服务器端数据库存储,具有冲突解决回调。如果每个最终用户的云存储都可以使用此框架,它将带来无缝连接体验。
- 我想避免轮询在另一台设备上所做的数据库更改。 OneDrive 支持 Webhook Notifications,因此这不是真正的问题(假设其他云存储提供商提供类似服务)。
- 我想避免下载整个数据库来计算与本地数据库的增量。这将需要某种基于网络的服务。到目前为止,我的研究一无所获,所以这可能是我不得不忍受的。
- 我希望及时收到更改通知。如果我必须跨底层数据库文件的云存储进行所有同步,这意味着只要数据库发生变化,就应该上传数据库。这是有问题的,尤其是在按流量计费的连接上。
1) 此信息是在 提供后提供的。投票时请记住这一点。
这个没有内置功能;要么你必须自己尝试让漫游存储工作,要么你需要一种基于服务的方法,在这种方法中,真相在云端,客户端来回同步增量。
请注意,如果您支持使用缓存数据进行离线访问,在这种情况下您仍然会遇到冲突解决问题,但至少存储限制将消失。 (理论上,即使没有离线访问,您也会遇到冲突解决问题,但这在单用户应用程序中是极不可能的)。
编辑
为了完整性,我会提到 Microsoft Sync Framework 作为一个选项来帮助解决同步问题,但它现在在 "extended support" 中并且官方文档没有提到 UWP,所以我不不知道行不行。
为了构建连接体验,我需要在多个设备之间同步我的应用程序的数据存储(SQLite 数据库)。到目前为止,我找到的唯一解决方案是 roam data,但这有两个直接缺点:
- 存储空间相当有限。
- 同步只能发生在文件级别(相对于数据库行)。
后者尤其糟糕,因为这意味着在不同设备上进行的更改可能会撤消在另一台设备上所做的更改,而不是合并修改。
问:Windows 运行时是否内置了任何工具,允许跨设备在行级别同步数据库?我正在寻找适用于 Windows 10 和 Windows 10 Mobile 的解决方案。
更新: 附加信息1) 关于我正在寻找的内容,以及我试图避免的情况。以下列表排名不分先后:
- 与我正在寻找的最接近的匹配项(在功能方面)是 Azure Mobile App Service。它允许服务器端数据库存储,具有冲突解决回调。如果每个最终用户的云存储都可以使用此框架,它将带来无缝连接体验。
- 我想避免轮询在另一台设备上所做的数据库更改。 OneDrive 支持 Webhook Notifications,因此这不是真正的问题(假设其他云存储提供商提供类似服务)。
- 我想避免下载整个数据库来计算与本地数据库的增量。这将需要某种基于网络的服务。到目前为止,我的研究一无所获,所以这可能是我不得不忍受的。
- 我希望及时收到更改通知。如果我必须跨底层数据库文件的云存储进行所有同步,这意味着只要数据库发生变化,就应该上传数据库。这是有问题的,尤其是在按流量计费的连接上。
1) 此信息是在
这个没有内置功能;要么你必须自己尝试让漫游存储工作,要么你需要一种基于服务的方法,在这种方法中,真相在云端,客户端来回同步增量。
请注意,如果您支持使用缓存数据进行离线访问,在这种情况下您仍然会遇到冲突解决问题,但至少存储限制将消失。 (理论上,即使没有离线访问,您也会遇到冲突解决问题,但这在单用户应用程序中是极不可能的)。
编辑
为了完整性,我会提到 Microsoft Sync Framework 作为一个选项来帮助解决同步问题,但它现在在 "extended support" 中并且官方文档没有提到 UWP,所以我不不知道行不行。