【问题标题】:Can CouchDB's filtered replication replicate the last 100 revisions of a document?CouchDB 的过滤复制能否复制文档的最后 100 次修订?
【发布时间】:2012-02-17 05:08:24
【问题描述】:

能否将 CouchDB 的过滤复制设置为不仅复制每个文档的最新版本,还复制每个文档的最后 100 个修订版?

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

具体用例如下:

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

CouchApp 2 包含一个数据库,其中包含全球所有改革宗教派中所有教会的数据。

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

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

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

发生双向复制。

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

有人告诉我,应用复制多个修订版,或者在复制后评估用户输入的准确性(可以在复制之前完成),或者在全部。

【问题讨论】:

    标签: couchdb replication


    【解决方案1】:

    抱歉,您不能直接复制旧版本。 _rev 号码的唯一用途是用于 MVCC,而不是为跟踪修订历史而设计的。话虽这么说,这样做并不是不可能

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

    【讨论】:

    猜你喜欢
    • 2011-12-30
    • 2022-11-10
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 2019-07-02
    相关资源
    最近更新 更多