2013-12-23 36 views
0

我有一个移动应用程序,用于将数据(从远程CouchDb实例中提取)存储到本地SQLite数据库。有时发生同步请求,并且我想知道本地数据库中的所有项目是否其服务器上的对应项已更改。 (所以,无论他们的修订是一个比在本地数据库更新。)查询CouchDb中特定文档ID的更改

但我怎么可以要求只在本地数据库中的特定项目,未做上百个单独的请求,并没有获取所有文件在庞大的远程数据库中?

我现在这样做的方法是:对于每个本地文档,首先获取HTTP标题,并且只有在标题显示比本地文档更新的修订版时才下载正文。我担心,对于在本地存储大量项目的用户,这将导致大量HTTP请求

+1

一些工具使用的一种方法是使用校验和来触发同步 – Zarathuztra

+0

@Zarazthuztra你可以扩展吗? Checkum是什么? – Maarten

+1

任何代表数据当前状态的校验和。通过MD5或SHA-1运行它,然后将该值存储在SQLLite数据库中。在客户端和服务器之间进行初始握手时,您需要交换校验和。如果他们不同,那么你知道你需要同步。例如,这是IBM Worklight如何知道是否更新本地应用程序。 – Zarathuztra

回答

1

如何使用Change Notification API? 您的应用可以请求所有最近的更改,然后检查服务器上是否有任何本地文件已更改。
添加过滤器可能有助于获取有趣的更改。

+0

不错!正是我在找什么。圣诞快乐。 :) – Maarten