CouchDB的过滤复制可以复制文档的最后100个修订版吗?

时间:2012-01-23 21:10:05

标签: couchdb replication

CouchDB的过滤复制是否可以设置为不仅复制每个文档的最新版本,还复制每个文档的最后100个版本?

我想要这个功能,因为我打算允许每个应用实例选择哪个最新版本(修订版将来自多个来源,每个版本具有不同的准确度/可信度)是最准确的,所以我需要的不仅仅是每个数据库实例中都有一个修订版。

具体用例如下:

CouchApp 1包含一个改革宗教派所有会众的数据数据库。

CouchApp 2包含全球所有改革宗教派所有会众的数据数据库。

CouchApps 1& 2被设置为双向复制以保持彼此同步,但CouchApp 1仅从CouchApp 2的面额复制过滤器请求一个面额的数据。

用户1是匿名的,因此相对不受信任,而用户2是CouchApp2的管理员,因此具有高级别的权限/可信度。两个CouchApps都设置为比权威数据更多地信任最近的数据2/3。

首先(按时间顺序),权威用户2将关于会众1的会众数据的10个修订版输入CouchApp 2(所有面额)。 第二个(按时间顺序),匿名用户1将关于会众1的会众数据的10个修订版输入CouchApp 1(一个面额)。

发生双向复制。

CouchApp 2(所有面额)默认显示用户1的数据,因为该数据更新。但是,因为用户1只输入了会众1数据的一些(但不是全部)字段,所以CouchApp 2显示所有其他字段的用户2的数据。

我很高兴被告知应用程序复制多个修订版本,或评估复制后用户输入的准确性(可以在复制之前完成),或评估其准确性所有

1 个答案:

答案 0 :(得分:2)

抱歉,您无法直接复制旧版本。 _rev号码的唯一目的是MVCC,而非用于跟踪修订历史记录。话虽这么说,但不可能这样做。

考虑将旧版本作为JSON附件存储在文档本身上。这将使它们与文档的其余部分一起被复制。此外,人们为解决这个问题设计了other strategies。 (谷歌周围,你可能会发现更多)