Couchdb在线离线同步

时间:2014-06-15 21:33:07

标签: synchronization couchdb desktop-application offline

我正在构建一个.NET应用程序,它将有一个本地CouchDB实例,其中所有数据都被写入,以及一个本地CouchDB同步到的中央CouchDB。困难在于将有多个客户端将在不同点与数据库同步(并且可以编辑现有数据,从而产生冲突)。互联网连接不一致,因此大部分数据将在离线时创建/编辑。

我相信CouchDB固有地处理这个问题,但是我很难弄清楚我是否应该使用_changes或_replicator功能 - 或者是一个组合。非常感谢关于如何处理这种情况的一些指示。

1 个答案:

答案 0 :(得分:2)

Couchdb会为您检测冲突,但是它会负责处理这些冲突。以下是couchdb conflict modelsome ways的详细信息,用于设计复制应用程序。

_changes不是一种很好的复制方式,因为它只提供给定文档的最新更改。因此,如果您使用对新创建的数据库的更改源进行复制,则会丢失一些旧的更改。您必须手动执行更新_replication为您执行此操作的文档等操作。 _replication还有一些好处,比如创建目标数据库(如果它尚不存在)的能力。

即使您正在收听continuous更改提要,也不会保证每次更新文档都会被返回。

  

可以从数据库的_changes资源中获取按应用程序的时间顺序对数据库中的文档所做的更改的排序列表。仅保证提供给定文档的最新更改,例如,如果文档已添加字段,然后删除,则检查更改的API客户端不一定会接收添加文档的中间状态。

如果您打算在各种设备上复制数据,那么replication就是您的选择。