couchdb - CouchDB 的过滤复制能否复制文档的最后 100 个修订版?

标签 couchdb replication

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

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

具体用例如下:

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

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

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

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

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

发生双向复制。

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

我很乐意被告知,一个应用程序复制多个版本是不值得的,或者在复制后评估用户输入的准确性(可以在复制之前完成),或者根本不评估这种准确性。

最佳答案

抱歉,您无法直接复制旧版本。 _rev number 的唯一目的是用于 MVCC,而不是用于跟踪修订历史。话虽如此,做到这一点并非不可能。

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

关于couchdb - CouchDB 的过滤复制能否复制文档的最后 100 个修订版?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8978607/

相关文章:

replication - 如果读者访问被撤销,服务器到服务器复制期间会发生什么

azure - 将存储数据从一个 Azure 帐户复制到另一个 Azure 帐户

javascript - 如何删除 pouchDB 中的身份验证模式

python - 如何在 CouchDB (Python) 中查询否定结果

node.js - 对 Node 的 Http 请求挂起并仅在按下服务器控制台上的 a 键后恢复

jQuery 和 CouchDBX - _all_docs - HTTP 200 但没有数据返回到成功函数

replication - Redis 在复制中是否单次写入主控?

file - 我可以在 hdfs (hadoop) 中复制数据吗

mysql - SQL Server和MYSQL之间的复制

node.js - 将一些文档从 CouchDB 放入数组 (Node.JS)