4

我有一个巨大的主 CouchDB 数据库和从属只读 CouchDB 数据库,与主数据库同步。
因为变化速度很快,服务器之间的通道又慢又不稳定,我想设置 order/priority 来定义哪些文档首先出现。我需要确保优先级最高的文档肯定是最新版本,我可以忽略列表末尾的文档。

排序,而不是过滤

如果不可能,有什么解决办法?

我已经看过的资源:
http :
//wiki.apache.org/couchdb/Replication http://couchapp.org/page/index

更新:主数据库实际上是 Node.js NPM 注册表,并且 order 是Most Depended-upon Packages 的列表。我正在尝试制作代理,因为克隆 50G 一段时间后总是失败。但事实是“我们不需要 90% 的这些模块,而是快速可靠地访问我们所依赖的那些模块。”

4

3 回答 3

2

开箱即用的 CouchDB 不提供任何选项来控制复制顺序。不过,我猜如果您将具有不同优先级的文档保存在 master 上的不同数据库中,您可以拼凑一些东西。然后,您可以先将高优先级的主数据库复制到从数据库,然后再复制低优先级的数据库,等等。

于 2013-03-08T08:39:45.613 回答
2

最简洁的答案是不。

长答案是,CouchDB 仅在单个文档级别提供 ACID 保证,这是设计的。复制器在复制时会自动更新每个文档(任何人都可以,复制器只是使用公共 API)但不保证排序,这主要是因为它使用多个 http 连接来提高吞吐量。如果您愿意,您可以将其配置为 1,这样您会得到更好的排序,但这不是灵丹妙药。

在 bigcouch 合并后,所有赌注都被取消,将有多个来源和多个目标,没有强加的总订单。

于 2013-03-08T18:37:22.013 回答
0

您可以设置过滤复制或命名文档复制:

这两种方法都是复制整个数据库的替代方法。您可以以较小的批次大小进行复制,并根据您的优先级对批次进行排序。

于 2013-03-08T04:15:00.797 回答