我有一个巨大的CouchDB主数据库和从属只读CouchDB数据库,它与主数据库同步。
由于变化速度快,服务器之间的通道缓慢且不稳定,我想设置顺序/优先级来定义首先出现的文档。我需要确保优先级最高的文档肯定是最新版本,我可以忽略列表末尾的文档。
分类,而不是过滤
如果不可能,可以采用什么解决方案?
资源我已经看过了:
http://wiki.apache.org/couchdb/Replication
http://couchapp.org/page/index
更新:master数据库实际上是Node.js NPM注册表,订单是list of Most Depended-upon Packages。我试图制作proxy,因为克隆50G总会在一段时间后失败。但事实是“我们不需要90%的模块,但可以快速,可靠地访问我们所依赖的模块。”
答案 0 :(得分:2)
开箱即用的CouchDB没有为您提供任何控制复制顺序的选项。我猜你可以把一些东西放在一起,但是如果你在主人的不同数据库中保存不同优先级的文件。然后,您可以先将高优先级主数据库复制到从数据库,然后复制优先级较低的数据库,等等。
答案 1 :(得分:2)
简短的回答是否定的。
长期的答案是,CouchDB仅在设计时在单个文档级别提供ACID保证。复制器将在复制时以原子方式更新每个文档(就像任何人一样,复制器只使用公共API)但不保证排序,这主要是因为它使用多个http连接来提高吞吐量。如果你愿意,你可以将其配置为1,你会得到更好的订购,但它不是灵丹妙药。
bigcouch合并后,所有投注均已关闭,将有多个来源和多个目标,并且没有强加总订单。
答案 2 :(得分:0)
您可以设置过滤复制或命名文档复制:
这两种方法都是复制整个数据库的替代方法。您可以使用较小的批量大小进行复制,并按批次顺序排列批次。